Msc. Daniele Carvalho Oliveira

Slides:



Advertisements
Apresentações semelhantes
Grafos eulerianos 1.
Advertisements

Cortes (cut-sets)‏ 1.
Grafos Orientados (digrafos)
Árvores 2010/1 Teoria dos Grafos (INF 5037/INF2781)
Árvores CC/EC/Mestrado Teoria dos Grafos ‏ 1.
Algoritmos em Grafos (Parte 2)
CAMINHAMENTO EM GRAFOS (CONTINUAÇÃO)
Teoria dos Grafos – Aula 2
Teoria dos Grafos Loana Tito Nogueira.
Fluxo em Redes Prof. Ricardo R. Santos.
Análise de Decisão Aplicada a Gerência Empresarial – UVA Grafos - V
Grafos Introdução
Teoria dos Grafos Um grafo é um conjunto de pontos, chamados vértices, conectados por linhas, chamadas de arestas. A Teoria dos Grafos é o ramo da matemática.
CC/EC/Mestrado/UFES Teoria dos Grafos (INF 5037/INF2781) Grafos Orientados (digrafos)
Cortes (cut-sets)‏ 2010/2 Teoria dos Grafos (INF 5037/INF2781)‏ 1.
Pontes Seja (G) o número de componentes conexas de G. Uma ponte é uma aresta a tal que (G - a) > (G)
Percursos em um grafo 2010/1 Teoria dos Grafos (INF 5037/INF2781)
UFES CC/EC/Mestrado Teoria dos Grafos Árvores. UFES CC/EC/Mestrado Teoria dos Grafos Árvores Grafo Acíclico: não possui ciclos.
Conectividade e Separabilidade
CONCEITOS BÁSICOS DE GRAFOS
Prof. M.Sc. Fábio Francisco da Costa Fontes Abril
HISTÓRICO E ORIGEM DOS GRAFOS
Teoria dos Grafos – Aula 6
Teoria dos Grafos – Aula 3 Árvores
Teoria dos Grafos Loana T. Nogueira Aula 5.
Grafos - Definições Preliminares - Formas de Representação
Ronaldo Celso Messias Correia –
Árvore Geradora Mínima
Grafos Msc. Cintia Carvalho Oliveira Doutoranda em Computação – UFU
Grafos Msc. Cintia Carvalho Oliveira Doutoranda em Computação – UFU
Baseado em: The Algorithm Design Manual Steven S. Skiena
Algoritmos em Grafos.
Algoritmos em Grafos Conceitos principais Prof. André Renato
Grafos Árvores Geradoras.
Teoria dos Grafos Caminhos e Noção de Grafos com pesos
Teoria dos Grafos Definições e Terminologia
Teoria dos Grafos Representação de Grafos e Isomorfismo
Teoria dos Grafos Planaridade
Análise de Redes Complexas – Conceitos e Propriedades Básicas
Histórico, exemplos e problemas
Operações com grafos União Exemplo
Histórico, exemplos e problemas
Grafos Noções Básicas.
José Garcia Vivas Miranda
Grafos Msc. Cintia Carvalho Oliveira Doutoranda em Computação – UFU
Grafos Msc. Cintia Carvalho Oliveira Doutoranda em Computação – UFU
Teoria dos Grafos Introdução
Teoria dos Grafos Conectividade
Katia S. Guimarães Busca em Grafos Katia S. Guimarães
Conceitos básicos em grafos
ÁRVORES Def.: Um grafo é acíclico se não possui ciclos.
Teoria dos Grafos Conceitos Preliminares
Universidade Federal de Mato Grosso do Sul Departamento de Computação e Estatística Circuitos de Euler em Paralelo Universidade Federal de Mato Grosso.
Conexidade 1.
Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005.
Katia S. Guimarães Busca em Grafos Katia S. Guimarães
Aula de Monitoria – Miniprova
Introdução a Algoritmos em Grafos.

Mestrado em Informática
Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2007.
Celso C. Ribeiro Caroline T. Rocha
Grafos Anjolina Grisi de Oliveira 2005
Grafos Anjolina Grisi de Oliveira 2007
Teoria de Grafos. Tudo começou no século XVIII, na cidade medieval de Königsberg, situada no leste europeu. Königsberg é banhada pelo rio Pregel, que.
 Prof. Miguel Gabriel Prazeres de Carvalho 1. 2 Redes Sociais GPS Para o correio. Para Viajantes. Pesquisas Biológicas. Distribuição de Tarefas. Recomendações.
Grafos Prof. Miguel Gabriel Prazeres de Carvalho.
Algoritmos e Estruturas de Dados II Introdução a Grafos
Grafos eulerianos 1.
Transcrição da apresentação:

Msc. Daniele Carvalho Oliveira Grafos Msc. Daniele Carvalho Oliveira

Pontes de Königsberg (1736)

O que são Grafos Conjunto de pontos e linhas que conectam os pontos. Grafo é um modelo matemático que representa relações entre objetos.

O que são Grafos Grafos são estruturas de dados largamente usadas em computação. Exemplos de aplicações são: Modelagem de circuitos digitais Representação de processos em sistemas paralelos ou distribuídos, Redes Redes Sociais Recuperação de Informação

O que são Grafos Similar a árvores e listas, com menos restrições

Definição Um Grafo é um par ordenado 𝐺=(𝑉,𝐸) 𝑉 é um conjunto finito não-vazio. Os elementos de 𝑉 são denominados vértices. 𝐸 é um conjunto finito de pares ordenados de vértices. Os elementos de 𝐸 são denominados arestas. Dois vértices ligados por uma aresta são denominados adjacentes

Exemplo 𝑉= 0,1,2,3,4 𝐸={ 1,2 , 1,3 , 1,4 , 3,4 } 2 1 4 3

Conceitos de Grafos

Laços, Arestas Múltiplas e Multigrafo

Grafo Trivial e Grafo Simples B C

Grafo Completo

Grafo Regular 2 1 4 3 Não é Grafo Regular Grafo Regular de grau 3

Subgrafo 4 2 1 4 3 3 1 4 3

Caminho simples, trajeto e ciclos Um Caminho é uma sequência de vértices 𝑣 1 , 𝑣 2 ,…, 𝑣 𝑘 , tal que ( 𝑣 𝑖 , 𝑣 𝑖+1 ) ∈𝐸 𝐺 Quando todos os vértices do caminho são distintos, recebe o nome de caminho simples. Quando todas as arestas são distintas, o caminho recebe o nome de trajeto Um ciclo é um caminho 𝑣 1 , 𝑣 2 ,…, 𝑣 𝑘 , tal que 𝑣 1 = 𝑣 𝑘 e 𝑘≥3

2 1 4 3 Caminho simples: 2,1,3,4 Trajeto: 1,3,4,1,2 Ciclo: 1,3,4,1

Grafo Conexo e Desconexo 1 2 2 3 4 1 4 3

Grafo Ponderado 3 B c 1 5 4 a d 2 6 7 f e 8

Dígrafo 2 1 3 4 5 6

Dígrafo Grafo Orientado Deve-se respeitar a orientação das arestas

Dígrafo Grau de entrada: número de arestas que incidem no vértice Vértice Fonte: grau de entrada = 0 Grau de saída: número de arestas que partem do vértice Vértice Sumidouro: grau de saída = 0

Árvores Um Grafo 𝑇(𝑉,𝐸) Não possui ciclos Conexo Seja 𝑣∈𝑉, se 𝑣 possui grau menor ou igual a 1, então 𝑣 é uma folha Uma árvore com 𝑛 vértices possui 𝑛−1 arestas. Um grafo 𝐺 é uma árvore, se, e somente se, existir um único caminho entre cada par de vértices de 𝐺.

Representação de Grafos

Como representar grafos em nossos algoritmos? Estruturas de dados! Matrizes Matriz de Adjacência Matriz de Incidência Listas Listas de Adjacência

Matriz de Adjacência Dado um grafo 𝐺(𝑉,𝐸) Uma Matriz de Adjacência 𝑀 é formada por 𝑛 linhas e 𝑛 colunas 𝑛 = número de vértices do grafo 𝑀 𝑖𝑗 = 1, 𝑠𝑒 𝑖,𝑗 ∈𝐸(𝐺) 0, 𝑠𝑒 𝑖,𝑗 ∉𝐸(𝐺)

1 2 3 4 5 1 5 2 4 3 Simétrica

1 2 3 4 5 1 5 2 4 3

Matriz de Adjacência O espaço reservado para armazenar as informações da matriz é da ordem 𝑂 𝑉 2 Para buscar uma aresta: 𝑂(1)

Matriz de Incidência Dado um grafo 𝐺(𝑉,𝐸) de 𝑛 vértices e 𝑚 arestas 𝑀 𝑖𝑗 = 1, ∀ 𝑣 𝑖 , 𝑠𝑒 𝑣 𝑖 , 𝑣 𝑗 ∈𝐸 𝐺 0, 𝑠𝑒 𝑣 𝑖 , 𝑣 𝑗 ∉𝐸 𝐺 0, 𝑠𝑒 𝑣 𝑖 , 𝑣 𝑖 ∈𝐸 𝐺

e1 e2 e3 e4 e5 e6 e7 e8 1 2 3 4 5 1 e8 e7 e1 5 2 e5 e6 e2 e3 4 3 e4

𝑀 𝑖𝑗 = 1, ∀ 𝑣 𝑖 , 𝑠𝑒 𝑣 𝑖 , 𝑣 𝑗 ∈𝐸 𝐺 −1, ∀ 𝑣 𝑗 , 𝑠𝑒 𝑣 𝑖 , 𝑣 𝑗 ∈𝐸 𝐺 0, 𝑠𝑒 𝑣 𝑖 , 𝑣 𝑗 ∉𝐸 𝐺 0, 𝑠𝑒 𝑣 𝑖 , 𝑣 𝑖 ∈𝐸 𝐺

e1 e2 e3 e4 e5 e6 e7 e8 1 2 -1 3 4 5 1 e8 e7 e1 5 2 e5 e6 e2 e3 4 3 e4

Matriz de Incidência O espaço reservado para armazenar as informações da matriz é da ordem 𝑂 |𝑉|×|𝐸| Para buscar uma aresta: 𝑂(1)

Lista de Adjacência Consiste em um vetor 𝐴𝑑𝑗 com 𝑛=|𝑉| entradas Cada entrada 𝐴𝑑𝑗[𝑣] possui uma lista encadeada de vértices adjacentes à 𝑣.

1 1 2 3 4 5 5 2 5 1 4 3 2 2 4 5 2 3 4 3 1 4

1 1 2 3 4 5 5 2 5 3 2 2 2 3 4 3 4

Matriz de Incidência O espaço reservado para armazenar as informações da matriz é da ordem 𝑂 |𝑉|+|𝐸| Para buscar uma aresta: 𝑂(𝑛) Para descobrir se existe a aresta (𝑖,𝑗) deve-se percorrer a lista do nó 𝑖 até encontrar (ou não) 𝑗

Busca em Grafos

Algoritmos de Busca Operação mais comum em Grafos Visita sistemática a seus nós (uma única vez!) Similar às buscas em árvore Para passear ou caminhar pelos vértices e arestas, utiliza-se marcar um vértice quando ele já foi visitado.

Algoritmos de Busca Dois tipos básicos de busca Busca em Profundidade Busca em Largura

Busca em Profundidade

1 1 2 3 4 5 5 2 5 1 4 3 2 2 4 5 2 3 4 3 1 4

Busca em Profundidade Para acessar todos os vértices do grafo, a busca em profundidade varre a lista de adjacência de cada vértice do grafo Assim, o tempo gasto para a operação é 𝑂(|𝑉|+|𝐸|)

Busca em Largura

1 2 3 4 5 ∞ Distâncias 1 1 2 3 4 5 5 2 5 3 2 2 2 3 4 3 4 Fila 1

1 2 3 4 5 ∞ Distâncias 1 1 2 3 4 5 5 2 5 3 2 2 2 3 4 3 4 Fila

1 2 3 4 5 ∞ Distâncias 1 1 2 3 4 5 5 2 5 3 2 2 2 3 4 3 4 Fila 5 2

1 2 3 4 5 ∞ Distâncias 1 1 2 3 4 5 5 2 5 3 2 2 2 3 4 3 4 Fila 2

1 2 3 4 5 ∞ Distâncias 1 1 2 3 4 5 5 2 5 3 2 2 2 3 4 3 4 Fila 2

1 2 3 4 5 ∞ Distâncias 1 1 2 3 4 5 5 2 5 3 2 2 2 3 4 3 4 Fila 2 4

1 2 3 4 5 ∞ Distâncias 1 1 2 3 4 5 5 2 5 3 2 2 2 3 4 3 4 Fila 4

1 2 3 4 5 ∞ Distâncias 1 1 2 3 4 5 5 2 5 3 2 2 2 3 4 3 4 Fila 4

1 2 3 4 5 Distâncias 1 1 2 3 4 5 5 2 5 3 2 2 2 3 4 3 4 Fila 4 3

1 2 3 4 5 Distâncias 1 1 2 3 4 5 5 2 5 3 2 2 2 3 4 3 4 Fila 3

1 2 3 4 5 Distâncias 1 1 2 3 4 5 5 2 5 3 2 2 2 3 4 3 4 Fila 3

1 2 3 4 5 Distâncias 1 1 2 3 4 5 5 2 5 3 2 2 2 3 4 3 4 Fila

1 2 3 4 5 Distâncias 1 1 2 3 4 5 5 2 5 3 2 2 2 3 4 3 4 Fila

Busca em Largura Primeiro os vértices são inicializados, ou seja, marcados como não visitados. O vetor de distâncias é inicializado com ∞ em todas as posições Este processo de inicialização gasta tempo 𝑂(|𝑉|)

Busca em Largura A medida que os vértices são encontrados, são colocados em uma fila As operações de inserção e remoção da fila gastam tempo 𝑂(1) Como todos os vértices são colocados e retirados da fila, o tempo total é 𝑂(|𝑉|)

Busca em Largura Como cada vértice é colocado na fila apenas 1 vez, a lista de adjacência de cada um só é analisado 1 vez Tempo 𝑂(|𝐸|) Portanto o tempo de execução da busca em largura é 𝑂(|𝑉|+|𝐸|)