Grafos - O que é um grafo? Algoritmos e Estruturas de Dados LEE 2014/15. Algoritmos e Estruturas de Dados - C. Teoria de Grafos e Algoritmos em Grafos

Tamanho: px
Começar a partir da página:

Download "Grafos - O que é um grafo? Algoritmos e Estruturas de Dados LEE 2014/15. Algoritmos e Estruturas de Dados - C. Teoria de Grafos e Algoritmos em Grafos"

Transcrição

1 Algoritmos e Estruturas de Dados LEE / Teoria de Grafos e Algoritmos em Grafos Grafos - O que é um grafo? Objecto abstracto Dois tipos de entidades Nós ou Vértices Ramos ou Arestas Vértices representam Cidades, pessoas, máquinas, números, etc Arestas representam Existência de ligações entre nós, valor da ligação entre nós, distância entre nós, etc

2 Grafos - Motivação Mapas caminhos mais curtos; caminhos mais baratos. Circuitos Eléctricos existência de curto-circuitos; existência de cruzamento entre ligações. Sequenciamento tarefas a executar por um conjunto de recursos sujeitas a restrições de carácter tecnológico. Emparelhamento processamento de imagem estéreo; atribuição de pessoas a lugares. Redes de dados computadores ligados entre si, enviando e recebendo mensagens; existência de ligação entre quaisquer nós; redundância. Estrutura de Programas grafos gerados por compiladores representando a estrutura de chamadas; Grafos Definições () Definição Um grafo é um conjunto de vértices e um conjunto de arestas que ligam pares de vértices distintos (com nunca mais que uma aresta a ligar qualquer par de vértices). Definição Dois vértices ligados por uma aresta dizem-se adjacentes. Definição Uma aresta que ligue dois vértices diz-se incidente de cada um dos vértices.

3 Grafos Definições () Definição O número de arestas incidentes num vértice dizse o grau desse vértice. Definição O subconjunto de arestas e vértices a elas associados diz-se um sub-grafo do grafo original. Definição Uma sequência de vértices na qual os vértices sucessivos estão ligados por arestas do grafo diz-se um caminho. Grafos Definições () Definição Num caminho simples os vértices e arestas são distintos. Definição Um caminho em que todos os vértices e arestas são distintos, excepto para o primeiro e último que são iguais, diz-se um ciclo. Definição Dois caminhos simples dizem-se disjuntos se não possuírem vértices comuns, excepto possivelmente para os vértices extremos. 6

4 Grafos Definições () Definição Um grafo diz-se ligado se existir um caminho de cada vértice para todos os outros vértices do grafo. Definição Um grafo que não seja ligado é constituído por componentes ligadas, que se dizem sub-grafos ligados máximos. Definição Um grafo ligado acíclico, i.e. sem ciclos, diz-se uma árvore. 7 Grafos Definições () Definição Um conjunto de árvores diz-se uma floresta. Definição A árvore de suporte de um grafo ligado é um subgrafo que contém todos os vértices e é uma árvore. Definição A floresta de suporte de um grafo é um sub-grafo que contém todos os seus vértices e é uma floresta. 8

5 Grafos Propriedades em árvores Um grafo G de V vértices é uma árvore se e só se satisfizer qualquer das seguintes condições: G tem V- arestas e nenhum ciclo. G tem V- arestas e é ligado. Existe apenas um caminho simples a unir quaisquer dois vértices. G é ligado mas retirando uma só aresta faz com que deixe de o ser. 9 Grafos Exemplos () G Os vértices 6 e 7 são adjacentes. Os vértices e 6 não são adjacentes. O vértice 7 tem grau quatro.

6 Grafos Exemplos () G G é um sub-grafo de G, gerado a partir das arestas a cheio. O vértice não pertence a G. G é um grafo ligado; G não é. O sub-grafo G é constituído por um grafo completo com três vértices e por uma árvore com quatro vértices Grafos Exemplos () G G Caminho: Ciclo:

7 Grafos Exemplos () G G : árvore de suporte de G. Grafos - Definições e Propriedades () Definição Um grafo diz-se completo quando existe uma aresta ligando qualquer par de vértices. Propriedade Um grafo com V vértices possui, no máximo, V(V-)/ arestas. Definição Um grafo G diz-se complemento do grafo G quando se obtém a partir de um grafo completo com o mesmo número de vértices de G, retirando-lhe todas as arestas de G. 7

8 Grafos - Definições e Propriedades () Definição Um grafo que possua um número de arestas próximo do número máximo diz-se denso. Definição Um grafo cujo complemento seja denso diz-se esparso. Definição Densidade de um grafo: E/(V(V-)), em que E é o número de arestas e V o de vértices. Definição A um sub-grafo completo dá-se o nome de clique. Grafos - Definições e Propriedades () Definição Um grafo que possua a propriedade de ser possível dividir os vértices em dois conjuntos tais que todas as arestas apenas ligam vértices de um conjunto a vértices do outro conjunto diz-se bipartido. Definição Quando existe um sentido atribuído às arestas, os grafos dizem-se direccionados, dirigidos ou digrafos. Definição O primeiro vértice de uma aresta direccionada diz-se fonte e o segundo diz-se destino. 6 8

9 Grafos - Definições e Propriedades () Propriedade Apenas os vértices destino são adjacentes dos vértices fonte. Definição Um ciclo direccionado num digrafo é um ciclo em que todos os pares de vértices adjacentes surgem pela ordem especificada pelas arestas. Definição Um digrafo sem ciclos direccionados diz-se grafo direccionado acíclico, ou DAG (Directed Acyclic Graph). 7 Grafos - Definições e Propriedades () Definição Quando se atribuem pesos às arestas, representando custo, distância, etc., diz-se que o grafo é ponderado. Também é possível atribuir pesos aos próprios vértices, ou a pares vértice/aresta. Definição Grafos ponderados direccionados, dizem-se redes. 8 9

10 Grafos - Interface ADT para Grafos () Os algoritmos para processamento de grafos serão desenvolvidos no contexto de uma ADT que define as tarefas de interesse. A nossa primeira interface elementar é tal que: O número de vértices e arestas são especificados por inteiros; Uma aresta é definida por um par de inteiros, designando os vértices que une; O número de vértices é limitado superiormente. Esta interface irá sendo alargada à medida das necessidades. 9 Grafos - Interface ADT para Grafos () typedef struct edge Edge; Edge *EDGE(int, int); typedef struct graph Graph; Graph *GRAPHinit(int); void GRAPHinsertE(Graph *G, Edge*); void GRAPHremoveE(Graph *G, Edge*); int GRAPHedges(Edge a[], Graph *G); Graph *GRAPHcopy(Graph G*); void GRAPHdestroy(Graph G*); Graphinit cria grafo com o número final de vértices, sem arestas. GraphinsertE insere uma aresta, caso não exista. GraphremoveE retira uma aresta, caso exista. Graphedges conta o número de arestas. Graphcopy cria uma segunda cópia do grafo. Graphdestroy faz o inverso de Graphinit.

11 Grafos - Matriz de Adjacências () Matriz de Adjacências Matriz (VxV) de valores booleanos; A entrada correspondente à linha v e coluna w é se existir uma aresta ligando estes dois vértices; A mesma entrada vale caso contrário; A matriz é simétrica, excepto para digrafos, em que poderá não sê-lo. Grafos - Matriz de Adjacências () Grafo Matriz G Matriz V V simétrica

12 Grafos - Implementação de ADT () #include <stdlib.h> #include GRAPH.h struct graph {int V; int E; int **adj;}; struct edge {int v; int w;}; Graph *GRAPHinit(int V) { Graph *G = (Graph*) malloc(sizeof(struct graph)); G->V = V; G->E = ; G->adj = MATRIXint(V, V, ); return G; } void GRAPHinsertE(Graph *G, Edge *e){ int v = e->v, w = e->w; if (G->adj[v][w] == ) G->E++; G->adj[v][w] = ; G->adj[w][v] = ; } Grafos - Implementação de ADT () void GRAPHremoveE(Graph *G, Edge *e) { int v = e->v, w = e->w; if (G->adj[v][w] == ) G->E--; G->adj[v][w] = ; G->adj[w][v] = ; } int GRAPHedges(Edge a[], Graph G*) { int v, w, E = ; } for (v = ; v < G->V; v++) for (w = v+; w < G->V; w++) if (G->adj[v][w] == ) a[e++] = EDGE(v, w); return E;

13 Grafos - Listas de Adjacências () Listas de Adjacências Cada vértice possui uma lista ligada; Os elementos constituintes da lista de um vértice são os seus vértices adjacentes; Em grafos simples, se os vértices v e w são adjacentes, então w pertence à lista de v e v pertence à lista de w. Grafos - Lista de Adjacências () Grafo Lista de Adjacências G * V ponteiros para lista 6 Tabela com V listas* de arestas

14 Grafos - Implementação de ADT () #include <stdlib.h> #include GRAPH.h typedef struct node link; struct node {int v; link *next;}; struct graph{int V; int E; link **adj;}; link NEW(int v, link *next) { link *x = (link *) malloc(sizeof(struct node)); x->v = v; x ->next = next; return x; } 7 Grafos - Implementação de ADT () Graph GRAPHinit(int V) { int v; Graph *G = (Graph*) malloc(sizeof(struct graph)); G->V = V; G->E = ; G->adj = (link **) malloc(v * sizeof(link*)); for (v = ; v < V; v++) G->adj[v] = NULL; return G; } void GRAPHinsertE(Graph *G, Edge *e) { int v = e->v, w = e->w; G->adj[v] = NEW(w, G->adj[v]); G->adj[w] = NEW(v, G->adj[w]); G->E++; } 8

15 Grafos - Implementação de ADT () void GRAPHremoveE(Graph *G, Edge *e) { /* Fica como exercício */ } int GRAPHedges(Edge a[], Graph *G) { int v, E = ; link t; } for (v = ; v < G->V; v++) for (t = G->adj[v]; t!= NULL; t = t->next) if (v < t->v ) a[e++] = EDGE(v, t->v); return E; 9 Grafos - Vantagens das M. de Adj. Representação de eleição quando há espaço disponível; os grafos são densos; os algoritmos requerem mais que V operações. Adição e remoção de arestas é feita de forma eficiente; É fácil evitar a existência de arestas paralelas; É fácil determinar se dois vértices estão ou não ligados.

16 Grafos - Inconvenientes das M. de Adj. Grafos esparsos de grande dimensão requerem espaço de memória proporcional a V ; Neste casos, a simples inicialização do grafo (proporcional a V ) pode ser dominante na execução global do algoritmo; Pode nem sequer existir memória suficiente para armazenar a matriz. Grafos - Vantagens das L. de Adj. Inicialização é proporcional a V. Utiliza sempre espaço proporcional a V+E adequado para grafos esparsos. algoritmos que assentem na análise de arestas em grafos esparsos. Adição de arestas é feita de forma eficiente. 6

17 Grafos - Inconvenientes das L. de Adj. Arestas paralelas e adjacência entre vértices requer que se pesquise as listas de adjacências, o que pode levar um tempo proporcional a V. Remoção de arestas pode levar um tempo proporcional a V (este problema pode ser contornado). Não aconselhável para grafos de grande dimensão que não podem ter arestas paralelas; grande utilização de remoção de arestas. Grafos Procura () Algumas propriedades simples em grafos são fáceis de determinar, independentemente da ordem pela qual se examinam as arestas. Ex: grau de todos os vértices. Outras propriedades estão associadas a caminhos, pelo que se torna necessário identificá-las através de pesquisa feita de vértice em vértice ao longo das arestas. A maioria dos algoritmos em grafos que consideraremos usam este modelo abstracto básico. Torna-se então necessário analisar o essencial dos algoritmos de procura em grafos e suas propriedades estruturais. 7

18 Grafos Procura () Procurar em grafos é equivalente a percorrer labirintos Necessário marcar pontos já visitados Ser-se capaz de recuar, num caminho efectuado, até ao ponto de partida. Os vários algoritmos de procura em grafos mais não fazem que executar uma determinada estratégia de procura em labirintos. Procura em profundidade primeiro (DFS Depth-first-search ). Admite duas implementações: recursiva e com uso de pilha explícita. Substituindo a pilha por uma fila FIFO, transforma-se em procura em largura primeiro (BFS Breadth-first-search ). Grafos Exploração de labirintos () Teseu, Ariadne e o seu pequeno problema com o Minotauro Desenrolar um rolo de fio para poder voltar ao princípio Marcar os lugares já visitados para evitar repetição. Nós e os grafos Existem lâmpadas, inicialmente apagadas, em cada encruzilhada vértice. Cada corredor aresta possui um par de portas, inicialmente fechadas, no início e no fim deste. As portas têm janelas que nos permitem ver se a porta do lado oposto está ou não fechada e se a luz da encruzilhada correspondente está ou não acesa. O objectivo é regressar à encruzilhada inicial tendo aberto todas as portas e acendido todas as luzes. Necessitamos um conjunto de regras que garanta que tal acontece. 6 8

19 Grafos Exploração de labirintos () Estratégia Exploração de Tremaux. Abrir uma qualquer porta que esteja fechada e dê acesso a uma saída da presente encruzilhada (deixá-la aberta). Se todas as portas estiverem abertas, saltar para.. Se a partir da porta que foi aberta for visível que a encruzilhada em que o corredor termina foi acesa, abrir outra porta (passo ). Caso contrário (a encruzilhada está às escuras), seguir o corredor, desenrolando o fio, até essa encruzilhada, acender a luz e voltar ao passo.. Se todas as portas estão abertas na presente encruzilhada, verificar se é a primeira visitada. Se sim, parar. Se não, usar o fio para recuar até à última encruzilhada visitada e voltar ao passo. 7 Grafos Exemplo de execução (DFS) 8 9

20 Grafos Exemplo de execução (DFS) Acende a luz no primeiro vértice e abre a primeira porta (do vértice para o vértice ) e segue em frente abrindo sempre a única porta existente (até ao vértice ). 6 9 Grafos Exemplo de execução (DFS) Escolhe uma das portas e continua seguindo em frente enquanto não houver escolha. 6

21 Grafos Exemplo de execução (DFS) No vértice todas as portas conduzem a corredores que dão acesso a vértices de luz acesa. 6 Grafos Exemplo de execução (DFS) Recua até ao último vértice que ainda possui portas por abrir. 6

22 Grafos Exemplo de execução (DFS) Neste vértice (), a única porta que dá acesso a pontos não visitados levanos para o vértice Grafos Exemplo de execução (DFS) Chegados ao vértice, não há mais portas por abrir, pelo que inicia o processo de recuo. 7 6

23 Grafos Exemplo de execução (DFS) No vértice já estão todas as portas abertas, pelo que tem que continuar a recuar. 7 6 Grafos Exemplo de execução (DFS) No vértice ainda há portas por abrir

24 Grafos Exemplo de execução (DFS) No vértice já não há portas por abrir Grafos Implementação de DFS (matriz de adjacências) #define dfsr search void dfsr(graph *G, Edge *e) { int t, w = e->w; pre[w] = cnt++; for (t = ; t < G->V; t++) if (G->adj[w][t]!= ) if (pre[t] == -) dfsr(g, EDGE(w, t)); } Função a ser chamada a partir de uma função de procura genérica ( ADT style ) que inicializa o contador cnt a zero e todas as entradas da tabela indexada pelos vértices pre a. 8

25 Grafos Descrição da Implementação A tabela pre está associada com as lâmpadas. Se pre[i] valer, significa que a luz está apagada para esse vértice. Quando se encontra uma aresta para um vértice em que pre não vale, um vértice já visitado, essa aresta não é seguida. Finalmente, a própria estrutura da recursão estabelece o mecanismo equivalente a desenrolar o novelo de fio. Quando um vértice não possui mais vértices adjacentes com pre igual a, a chamada recursiva termina, devolvendo o controlo de execução para o vértice que o antecedeu na recursão. O retorno da recursão é equivalente a voltar a enrolar o fio. 9 Grafos Implementação de DFS (lista de adjacências) #define dfsr search void dfsr(graph *G, Edge *e) { int link t, t; w int = e->w; w = e->w; pre[w] = cnt++; for (t = ; G->adj[w]; t < G->V; t t++)!= NULL; t = t->next) if (G->adj[w][t] (pre[t->v] == -)!= ) if (pre[t] == -) dfsr(g, dfsr(g, EDGE(w, EDGE(w, t->v)); t)); }

26 Grafos Implementação de BFS (matriz de adjacências) # define bfs search void bfs(graph *G, Edge *e) { int v; QUEUEput(e); while (!QUEUEempty()) if (pre[(e = QUEUEget())->w] == -) { pre[e->w] = cnt++; st[e->w] = e->v; for (v = ; v < G->V; v++) if (G->adj[e->w][v] == ) if (pre[v] == -) QUEUEput(EDGE(e->w, v)); } } Cria uma fila (FIFO) com todas as arestas incidentes de vértices visitados e de vértices ainda não visitados. Toma a primeira aresta da fila até encontrar uma que aponte para um vértice não visitado. Visita esse vértice, colocando na fila todas as arestas que apontam para vértices não visitados. Tabela st guarda informação sobre o vértice antecessor. Grafos Exemplo de execução (BFS) 6

27 Grafos Exemplo de execução (BFS) 7 Grafos Exemplo de execução (BFS) 7 6 7

28 Grafos Exemplo de execução (BFS) 7 6 Grafos Exemplo de execução (BFS)

29 Grafos Exemplo de execução (BFS) Grafos Exemplo de execução (BFS)

30 Grafos Exemplo de execução (BFS) Grafos Exemplo de execução (BFS) 7 6 6

31 Grafos Caminhos mais curtos Cada caminho num digrafo ponderado possui um peso - a soma dos pesos das arestas que o constituem. Esta característica origina directamente problemas como: determinar o caminho de menor peso entre dois vértices. Este e uma série de outros semelhantes são conhecidos como problemas de caminhos mais curtos - shortest path problems. Ir-se-á considerar grafos ponderados e direccionados, os quais serão designados como redes. 6 Grafos Uma rede e suas representações Representação gráfica Vector de arestas Matriz de adjacências G Lista de adjacências 6

32 Grafos Caminhos mais curtos () G Grafos Caminhos mais curtos () G

33 Grafos Caminhos mais curtos () G Grafos Caminhos mais curtos () G

34 Grafos Caminhos mais curtos () G Grafos Caminhos mais curtos (6) G

35 Grafos Caminhos mais curtos G Grafos Definição e problemas Definição Um caminho mais curto entre dois vértices s e t numa rede é um caminho direccionado de s para t com a propriedade de não existir outro caminho direccionado com menor peso. Problema - Caminho mais curto fonte-destino Dado um vértice inicial s e um vértice destino t, qual o caminho mais curto no grafo de s para t? Problema - Caminhos mais curtos de fonte única Dado um vértice inicial s, quais os caminhos mais curtos que ligam s a todos os outros vértices? Problema - Caminhos mais curtos entre todos Quais os caminhos mais curtos ligando todos os vértices de um grafo? 7

36 Grafos Motivação () Mapas de estrada Serão os grafos de estradas entre cidades necessariamente não direccionados? É igual ir até à torre da Serra da Estrela e vir de lá? Igual em distância e/ou custo? Sabendo a posição presente e o destino, pretende-se saber qual a próxima cidade a tomar. Rotas aéreas Minimização do tempo necessário para viajar entre duas cidades? Minimização do custo para viajar entre duas cidades? Minimização de custo é mais complexo que minimização de distâncias. Pode ser mais económico fazer uma escala do que o vôo directo. 7 Grafos Motivação () Os algoritmos que estudaremos têm aplicação para lá destes exemplos e de outros similares. Existem problemas, aparentemente nada ligados com estes, para os quais os problemas de caminhos mais curtos podem ser relevantes. Enquanto que os problemas de caminhos mais curtos possuem uma natural intuição gráfica, outros não a possuem. Através de redução podem-se transformar alguns pro-blemas em versões generalizadas dos caminhos mais curtos. 7 6

37 Grafos Princípios de funcionamento () Os algoritmos de caminhos mais curtos a estudar assentam numa operação básica que dá pelo nome de relaxação. Esta surge de várias formas nas diferentes implementações. Em essência consiste no seguinte: Inicia-se um algoritmo conhecendo apenas as arestas e seus pesos. À medida que se avança, recolhe-se informação sobre os caminhos mais curtos que unem vários pares de vértices. A informação é actualizada incrementalmente, realizando-se inferências sobre os melhores caminhos a partir da informação recolhida. 7 Grafos Princípios de funcionamento () Em cada passo testa-se se existe um caminho mais curto do que algum dos conhecidos. O termo relaxação é usado para descrever este último passo, porque tem como efeito relaxar algumas das restrições impostas ao caminho mais curto até ao momento. Pode-se imaginar um elástico esticado sobre o caminho mais curto entre dois vértices. Uma relaxação bem sucedida tem como efeito relaxar a tensão desse elástico sobre o caminho mais curto. 7 7

38 Grafos Princípios de funcionamento () Os algoritmos são baseados na aplicação repetida de um dos seguintes tipos de relaxações Testar se uma dada aresta define um novo caminho mais curto para o seu vértice destino. Testar se a passagem por um dado vértice define um novo caminho mais curto ligando dois outros vértices dados. Ao primeiro tipo dá-se o nome de relaxação de aresta e ao segundo o nome de relaxação de caminho. 7 Grafos Relaxação de aresta () Todos os algoritmos de fonte única considerados são baseados no seguinte passo. Dada uma aresta, será que conduz a um caminho mais curto para o seu vértice destino? Para responder a esta questão torna-se necessário utilizar uma estrutura de dados adequada. 76 8

39 Grafos Relaxação de aresta () Primeiro, é preciso calcular o comprimento de caminho mais curto do vértice fonte a todos os outros vértices. Armazenar esses valores num vector indexado pelos vértices, wt. Depois, para testar se uma dada aresta v-w com peso e.wt define um novo caminho mais curto do vértice destino até w, basta testar se wt[v] + e.wt é menor que wt[w]. Para ser possível calcular os caminhos, usa-se um outro vector indexado pelos vértices, st, que armazena o vértice antecessor no caminho mais curto a partir do vértice fonte para cada outro vértice. 77 Grafos Relaxação de aresta () Definição Dada uma rede e um vértice fonte, s, a árvore de caminhos mais curtos (SPT*) para s define-se como sendo a união dos caminhos mais curtos de s para cada um dos restantes vértices da rede. Código usado na relaxação de aresta: if (wt[w] > wt[v] + e.wt) { wt[w] = wt[v] + e.wt; st[w] = v; } Como gerar o caminho a partir de st? * Shortest Path Tree 78 9

40 Grafos SPT s A definição da SPT descreve um conjunto de arestas. É uma árvore por ser um grafo ligado (todos os vértices estão ligados a s por um caminho) e não possui ciclos. Todas as arestas direccionadas apontam no sentido descendente da árvore. É uma árvore de suporte da sub-rede gerada pelos vértices atingíveis a partir do vértice fonte. 79 Grafos Exemplo de SPT Caminhos mais curtos a partir de SPT associada G

41 Grafos Relaxação de caminho () Todos os algoritmos de caminhos mais curtos entre todos considerados fazem uso da relaxação de caminho. Ou seja, fazem a seguinte pergunta: A inclusão de e passagem por um dado vértice permite que o caminho entre outros dois vértices seja encurtado? Dados três vértices s, x e t, pretende-se saber se é mais económico ir de s a t passando por x ou não passando por x. 8 Grafos Relaxação de caminho () Mantém-se uma matriz d, em que d[s][t] é o comprimento do caminho mais curto entre s e t. Mais uma matriz p, em que p[s][t] é o próximo vértice no caminho mais curto entre s e t. À primeira dá-se o nome de matriz de distâncias e à segunda de matriz de caminhos, ou sucessores. 8

42 Grafos Relaxação de caminho () Código usado na relaxação de caminho: if (d[s][t] > d[s][x] + d[x][t]) { d[s][t] = d[s][x] + d[x][t]; p[s][t] = p[s][x]; } Como gerar o caminho a partir de p? Como ambas as relaxações se suportam nos operadores + e <, o resultado seguinte estabelece a correcção dos algoritmos nelas baseados. 8 Grafos Princípio de optimalidade Propriedade Se um vértice x pertence ao caminho mais curto entre s e t, então esse caminho consiste do caminho mais curto entre s e x, seguido do caminho mais curto entre x e t. Demonstração Por redução ao absurdo. Imagine-se que um dos dois caminhos não é o mais curto. Então poder-se-ia usar o caminho mais curto entre s e x ou entre x e t para construir um caminho mais curto entre s e t. O que contradiz a hipótese de ser óptimo o caminho original. 8

43 Grafos Algoritmo de Dijkstra Coloca-se o vértice fonte na raiz da árvore e constrói-se a árvore uma aresta de cada vez. Toma-se sempre a aresta que estabelece o caminho mais curto do vértice fonte a algum vértice que ainda não esteja na SPT. Por outras palavras, adicionam-se vértices à SPT por ordem crescente da sua distância (através da SPT) ao vértice de partida. Também um algoritmo greedy. Este algoritmo pode ser visto como um método de procura generalizada, diferente da DFS, da BFS e do algoritmo de Prim apenas pela regra de entrada de arestas na árvore. 8 Grafos Exemplo de execução () Chamada à função para determinar os caminhos mais curtos tomando o vértice como fonte. G GRAPHpfs(G,, st, wt)... Lista de adjacências : - : - : : - : - : - 86

44 Grafos Exemplo de execução () G st vale [- ] 87 Após a inicialização da fila tem-se Fila (,,,,, ) st [- ] wt [......] Ciclo while v wt[]!=. ü Fila (,,,, ) Ciclo for t wt[] > wt[] + t->wt ü wt[]. Fila (,,,, ), st[] t wt[] > wt[] + t->wt ü wt[].9 Fila (,,,, ), st[] Não há mais adjacentes de Grafos Exemplo de execução () G st vale [- ] 88 Ciclo while (continuação) v wt[]!=. ü Fila (,,, ) Ciclo for t wt[] > wt[] + t->wt X t wt[] > wt[] + t->wt ü wt[]. Fila (,,, ), st[] Não há mais adjacentes de v wt[]!=. ü Fila (,, ) Ciclo for t wt[] > wt[] + t->wt X

45 Grafos Exemplo de execução () G st vale [- ] 89 Ciclo for (continuação) t wt[] > wt[] + t->wt ü wt[].9 Fila (,, ), st[] Não há mais adjacentes de v wt[]!=. ü Fila (, ) Ciclo for t wt[] > wt[] + t->wt ü wt[].86 Fila (, ), st[] t wt[] > wt[] + t->wt ü wt[].8 Fila (, ), st[] Grafos Exemplo de execução () G st vale [- ] 9 Ciclo for (continuação) Não há mais adjacentes de v wt[]!=. ü Fila () Ciclo for t wt[] > wt[] + t->wt X Não há mais adjacentes de v wt[]!= ü Fila () Ciclo for t wt[] > wt[] + t->wt X t wt[] > wt[] + t->wt X Não há mais adjacentes de Ciclo while termina!!!

46 Grafos Árvore de procura (Alg. Dijkstra) G Grafos Implementação (listas de adjacências) #define P (wt[v] + t->wt) void GRAPHpfs(Graph *G, int s, int st[], double wt[]) { int v, w; link t; } 9 PQinit(); for (v = ; v < G->V; v++) { st[v] = -; wt[v] = maxwt; PQinsert(v); } wt[s] =.; PQdec(s); while (!PQempty()) if (wt[v = PQdelmin()]!= maxwt) for (t = G->adj[v]; t!= NULL; t = t->next) if (wt[w = t->v] > P) { wt[w] = P; PQdec(w); st[w] = v; } PQinit inicializa uma fila baseada em prioridades (ver sec. 9.6). PQinsert insere um novo elemento de acordo com a sua prioridade. PQdelmin retira o elemento de mais baixa prioridade. PQdec altera a posição do elemento, por ter baixado a sua prioridade. 6

47 Grafos Exemplo de execução () G Chamada à função para determinar todos os caminhos mais curtos. GRAPHspALL(G) 9 Grafos Exemplo de execução () G Inicialização # d = Inicialização # p = d = p =

48 Grafos Exemplo de execução () G Ciclo for exterior com i = d = d[s][i] Únicas entradas finitas d[i][t] s = Ciclo for interior não faz nada s = Ciclo for interior t nada t d[][] > d[][] + d[][] ü t,,, nada 9 Grafos Exemplo de execução () G Alterações resultantes para i = d[][].86 p[][] p[][] =. d = p = Quando i = está-se a considerar se é mais económica a ligação directa ou via vértice. Neste caso, a ligação directa não existia e passou a ser possível atingir o vértice a partir do vértice. 96 8

49 Grafos Exemplo de execução () Ciclo for exterior com i = d = Ciclo for exterior com i = d = p = p = Grafos Exemplo de execução (6) Ciclo for exterior com i = d = Ciclo for exterior com i = d = p = p = 98 9

50 Grafos Exemplo de execução (7) Ciclo for exterior com i = d = p = G Qual o caminho mais curto entre o vértice e o vértice? p[][] = p[][] = p[][] =. Qual o seu comprimento? d[][] =.9 d[][] = adj[][] + adj[][] + adj[][] =

Grafos - O que é um grafo? Algoritmos e Estruturas de Dados LEE 2013/14. Objecto abstracto Dois tipos de entidades. Vértices representam

Grafos - O que é um grafo? Algoritmos e Estruturas de Dados LEE 2013/14. Objecto abstracto Dois tipos de entidades. Vértices representam Algoritmos e Estruturas de Dados LEE 2013/14 Teoria de Grafos e Algoritmos em Grafos 1ª Parte Grafos - O que é um grafo? Objecto abstracto Dois tipos de entidades Nós ou Vértices Ramos ou Arestas Vértices

Leia mais

Grafos - O que é um grafo? Algoritmos e Estruturas de Dados MEEC 2012/13. Objecto abstracto Dois tipos de entidades. Vértices representam

Grafos - O que é um grafo? Algoritmos e Estruturas de Dados MEEC 2012/13. Objecto abstracto Dois tipos de entidades. Vértices representam Algoritmos e Estruturas de Dados MEEC 01/1 Teoria de Grafos e Algoritmos em Grafos 1ª Parte Grafos - O que é um grafo? Objecto abstracto Dois tipos de entidades Nós ou Vértices Ramos ou Arestas Vértices

Leia mais

AED Algoritmos e Estruturas de Dados LEEC /2007. Teoria de Grafos e Algoritmos em Grafos

AED Algoritmos e Estruturas de Dados LEEC /2007. Teoria de Grafos e Algoritmos em Grafos AED Algoritmos e Estruturas de Dados LEEC - 2006/2007 Teoria de Grafos e Algoritmos em Grafos Grafos - O que éum grafo? Objecto abstracto Dois tipos de entidades Nós ou Vértices Ramos ou Arestas Vértices

Leia mais

Grafos Caminhos mais curtos

Grafos Caminhos mais curtos rafos Caminhos mais curtos Cada caminho num digrafo ponderado possui um peso -a soma dos pesos das arestas que o constituem. Esta característica origina directamente problemas como: determinar o caminho

Leia mais

Na última aula... Algoritmos em Grafos 1º sem / 1

Na última aula... Algoritmos em Grafos 1º sem / 1 Na última aula... Algoritmos em Grafos 1º sem 01 1 / 1 Procurando um caminho Problema: dados um digrafo G e dois vértices s e t decidir se existe um caminho de s a t Exemplo: para s = 0 e t = 1 a resposta

Leia mais

Na última aula... Procurando um caminho. Certicados. Problema: dados um digrafo G e dois vértices s e t decidir se existe um caminho de s a t

Na última aula... Procurando um caminho. Certicados. Problema: dados um digrafo G e dois vértices s e t decidir se existe um caminho de s a t Procurando um caminho Problema: dados um digrafo G e dois vértices s e t decidir se existe um caminho de s a t Exemplo: para s = e t = a resposta é SIM Na última aula... Algoritmos em Grafos º sem / Procurando

Leia mais

Fluxos em redes: o Problema do Fluxo máximo

Fluxos em redes: o Problema do Fluxo máximo 1 Fluxos em redes: o Problema do Fluxo máximo Instância: uma rede (G, c) e vértices s e t G = (V, E) um grafo dirigido s e t V são dois vértices distinguidos c: E R 0 é uma função capacidade nas arestas

Leia mais

Grafos Procura (1) AED (IST/DEEC) 44. Grafos Procura (2) Procurar em grafos é equivalente a percorrer labirintos

Grafos Procura (1) AED (IST/DEEC) 44. Grafos Procura (2) Procurar em grafos é equivalente a percorrer labirintos rafos Procura () Algumas propriedades simples em grafos são fáceis de determinar, independentemente da ordem pela qual se examinam as arestas. Ex: grau de todos os vértices. Outras propriedades estão associadas

Leia mais

Melhores momentos AULA 4

Melhores momentos AULA 4 Melhores momentos AULA Procurando um caminho Problema: dados um digrafo G e dois vértices s e t decidir se existe um caminho de s a t Exemplo: para s = 0 e t = 1 a resposta é SIM 1 0 3 5 Procurando um

Leia mais

Calculando distâncias

Calculando distâncias Calculando distâncias Problema: dados um digrafo G e um vértice s, determinar a distância de s aos demais vértices do digrafo Exemplo: para s = v 3 5 dist[v] 3 3 5 Algoritmos em Grafos º sem / Busca em

Leia mais

Melhores momentos AULA 4

Melhores momentos AULA 4 Melhores momentos AULA 4 Procurando um caminho Problema: dados um digrafo G e dois vértices s e t decidir se existe um caminho de s a t Exemplo: para s = 0 e t = 1 a resposta é SIM 2 1 0 4 3 5 Procurando

Leia mais

Na última aula... Algoritmos em Grafos 1º sem / 80

Na última aula... Algoritmos em Grafos 1º sem / 80 Na última aula... Algoritmos em Grafos 1º sem 01 1 / 80 Procurando um caminho Problema: dados um digrafo G e dois vértices s e t decidir se existe um caminho de s a t Exemplo: para s = 0 e t = 1 a resposta

Leia mais

Na última aula... Procurando um caminho. Certificados. Procurando um caminho

Na última aula... Procurando um caminho. Certificados. Procurando um caminho Procurando um caminho Problema: dados um digrafo G e dois vértices s e t decidir se existe um caminho de s a t Na última aula... Exemplo: para s = e t = a resposta é SIM Algoritmos em Grafos º sem / Procurando

Leia mais

Análise e Síntese de Algoritmos. Algoritmos em Grafos CLRS, Cap. 22

Análise e Síntese de Algoritmos. Algoritmos em Grafos CLRS, Cap. 22 Análise e Síntese de Algoritmos Algoritmos em Grafos CLRS, Cap. 22 Mudança no Horário Aulas Teóricas de 4ª feira 10:30 12:00 Sala: FA1 12:00 13:30 Sala: FA1 Deixa de haver aula teórica às 9:00 por troca

Leia mais

03 Grafos: percurso, ponderação e caminhos SCC0503 Algoritmos e Estruturas de Dados II

03 Grafos: percurso, ponderação e caminhos SCC0503 Algoritmos e Estruturas de Dados II 03 Grafos: percurso, ponderação e caminhos SCC0503 Algoritmos e Estruturas de Dados II Prof. Moacir Ponti Jr. www.icmc.usp.br/~moacir Instituto de Ciências Matemáticas e de Computação USP 2011/1 Moacir

Leia mais

Representações de Grafos

Representações de Grafos Representações de Grafos Teoria dos Grafos 1 É possível diversas representações dos grafos. Vamos estudar as três utilizadas mais comumente: as matrizes de adjacência, as listas de adjacência e as multilistas

Leia mais

Melhores momentos AULA 12

Melhores momentos AULA 12 Melhores momentos AULA Calculando distâncias Problema: dados um digrafo G e um vértice s, determinar a distância de s aos demais vértices do digrafo Exemplo: para s = v 3 5 dist[v] 3 3 5 Busca em largura

Leia mais

Estruturas de Dados Grafos

Estruturas de Dados Grafos Estruturas de Dados Grafos Prof. Eduardo Alchieri (introdução) Grafo é um conjunto de pontos e linhas que conectam vários pontos Formalmente, um grafo G(V,A) é definido pelo par de conjuntos V e A, onde:

Leia mais

AULA 4. Procurando um caminho. Melhores momentos. Certicados. Certicado de inexistência

AULA 4. Procurando um caminho. Melhores momentos. Certicados. Certicado de inexistência Melhores momentos Procurando um caminho Problema: dados um digrafo G e dois vértices s e t decidir se existe um caminho de s a t Exemplo: para s = e t = a resposta é SIM AULA 3 Procurando um caminho Certicados

Leia mais

Algoritmos e Estruturas de Dados LEE 2015/16. Teoria de Grafos e Algoritmos em Grafos 2ª Parte

Algoritmos e Estruturas de Dados LEE 2015/16. Teoria de Grafos e Algoritmos em Grafos 2ª Parte Algoritmos e Estruturas de Dados LEE / Teoria de rafos e Algoritmos em rafos ª Parte rafos DFS Notar que a estratégia de procura de Tremaux, mais não é que procura em profundidade primeiro. O algoritmo

Leia mais

INF 1010 Estruturas de Dados Avançadas

INF 1010 Estruturas de Dados Avançadas INF Estruturas de Dados Avançadas Grafos //8 DI, PUC-Rio Estruturas de Dados Avançadas. Primeiro uso conhecido 7 Euler: pontes de Königsberg //8 DI, PUC-Rio Estruturas de Dados Avançadas. Primeiro uso

Leia mais

Algoritmos e Estruturas de Dados LEE 2013/14. Teoria de Grafos e Algoritmos em Grafos 2ª Parte

Algoritmos e Estruturas de Dados LEE 2013/14. Teoria de Grafos e Algoritmos em Grafos 2ª Parte Algoritmos e Estruturas de Dados LEE / Teoria de rafos e Algoritmos em rafos ª Parte rafos DFS Notar que a estratégia de procura de Tremaux, mais não é que procura em profundidade primeiro. O algoritmo

Leia mais

grafo nós vértices arcos arestas

grafo nós vértices arcos arestas GRAFOS E APLICAÇÕES 1. INTRODUÇÃO 1) Um grafo G = (V, E) consiste num conjunto de nós (ou vértices) V e num conjunto de arcos (ou arestas) E. Cada arco é representado por um par de nós. No seguinte exemplo,

Leia mais

Grafos - Introdução. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/ / 32

Grafos - Introdução. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/ / 32 Grafos - Introdução Pedro Ribeiro DCC/FCUP 2014/2015 Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/2015 1 / 32 Conceito Definição de Grafo Formalmente, um grafo é: Um conjunto de nós/vértices (V).

Leia mais

Grafos COM11087-Tópicos Especiais em Programação II

Grafos COM11087-Tópicos Especiais em Programação II Grafos COM11087-Tópicos Especiais em Programação II edmar.kampke@ufes.br Introdução Grafos são estruturas muito estudadas na Ciência da Computação para modelagem de problemas Euler (1736) em Königsberg

Leia mais

Teoria dos Grafos Aula 6

Teoria dos Grafos Aula 6 Teoria dos Grafos Aula 6 Aula passada Busca em grafos Busca em largura (BFS Breadth First Search) Propriedades Aula de hoje BFS implementação Complexidade Busca em profundidade (DFS) Conectividade, componentes

Leia mais

Estrutura de Dados e Algoritmos e Programação e Computadores II. Aula 10: Introdução aos Grafos

Estrutura de Dados e Algoritmos e Programação e Computadores II. Aula 10: Introdução aos Grafos Estrutura de Dados e Algoritmos e Programação e Computadores II Aula 10: Introdução aos Grafos História O assunto que se constitui no marco inicial da teoria de grafos é na realidade um problema algorítmico.

Leia mais

MAC328 Algoritmos em grafos (4/6/2004) Caminhos mínimos

MAC328 Algoritmos em grafos (4/6/2004) Caminhos mínimos 1 Caminhos mínimos 1. Grafos com pesos nas arestas: G = (V, E), c: E R (usualmente, c(e) 0 para toda e E, mas em alguns casos consideraremos comprimentos negativos). 1 Caminhos mínimos 1. Grafos com pesos

Leia mais

Problemas de Fluxo em Redes

Problemas de Fluxo em Redes CAPÍTULO 7 1. Conceitos fundamentais de grafos Em muitos problemas que nos surgem, a forma mais simples de o descrever, é representá-lo em forma de grafo, uma vez que um grafo oferece uma representação

Leia mais

Melhores momentos AULA 15

Melhores momentos AULA 15 Melhores momentos AULA 5 Arborescência de caminhos mínimos Uma arborescência com raiz s é de caminhos mínimos (= shortest-paths tree = SPT) se para todo vértice t que pode ser alcançado a partir de s,

Leia mais

Caminhos em Grafos. Grafos - Caminho Simples (1) (Cliente para M. de Adj.) static int visited[maxv];

Caminhos em Grafos. Grafos - Caminho Simples (1) (Cliente para M. de Adj.) static int visited[maxv]; Caminhos em rafos Caminho simples Dados dois vértices num grafo, saber se estão ligados por um caminho; Determinar se o caminho existe ou calculá-lo explicitamente; Caminho de Hamilton Dados dois vértices

Leia mais

Pesquisa em Grafos. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Pesquisa em Grafos 2014/ / 33

Pesquisa em Grafos. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Pesquisa em Grafos 2014/ / 33 Pesquisa em Grafos Pedro Ribeiro DCC/FCUP 2014/2015 Pedro Ribeiro (DCC/FCUP) Pesquisa em Grafos 2014/2015 1 / 33 Pesquisa em Grafos Uma das tarefas mais importantes é saber percorrer um grafo, ou seja

Leia mais

INF 1010 Estruturas de Dados Avançadas

INF 1010 Estruturas de Dados Avançadas INF Estruturas de Dados Avançadas Grafos // DI, PUC-Rio Estruturas de Dados Avançadas. Aplicações de grafos grafo vértices arestas Cronograma tarefas restrições de preferência Malha viária interseções

Leia mais

ESTRUTURAS DE DADOS. prof. Alexandre César Muniz de Oliveira. 1. Introdução 2. Pilhas 3. Filas 4. Listas 5. Árvores 6. Ordenação 7. Busca 8.

ESTRUTURAS DE DADOS. prof. Alexandre César Muniz de Oliveira. 1. Introdução 2. Pilhas 3. Filas 4. Listas 5. Árvores 6. Ordenação 7. Busca 8. ESTRUTURAS DE DADOS prof. Alexandre César Muniz de Oliveira 1. Introdução 2. Pilhas 3. Filas 4. Listas 5. Árvores 6. Ordenação 7. Busca 8. Grafos Sugestão bibliográfica: ESTRUTURAS DE DADOS USANDO C Aaron

Leia mais

Teoria dos Grafos Aula 5

Teoria dos Grafos Aula 5 Teoria dos Grafos Aula Aula passada Explorando grafos Mecanismos genéricos Ideias sobre BFS, DFS Aula de hoje Busca em grafos Busca em largura (BFS Breadth First Search) Propriedades Busca em Grafos Problema

Leia mais

Melhores momentos AULAS 1-8

Melhores momentos AULAS 1-8 Melhores momentos AULAS 1-8 Procurando um caminho Problema: dados um digrafo G e dois vértices s e t decidir se existe um caminho de s a t Exemplo: para s = e t = 1 a resposta é SIM 2 1 4 3 5 Procurando

Leia mais

Melhores momentos AULA 1

Melhores momentos AULA 1 Melhores momentos AULA Digrafos digrafo = de vértices e conjunto de arcos arco = par ordenado de vértices Exemplo: v e w são vértices e v-w é um arco b d a f c e Especicação Digrafos podem ser especicados

Leia mais

Grafos: algoritmos de busca

Grafos: algoritmos de busca busca em grafos como caminhar no grafo de modo a percorrer todos os seus vértices evitando repetições desnecessárias do mesmo vértice? e por onde começar? solução: necessidade de recursos adicionais que

Leia mais

Análise e Síntese de Algoritmos

Análise e Síntese de Algoritmos Análise e Síntese de Algoritmos Algoritmos Elementares em Grafos [CLRS, Cap. 22] 24/25 Contexto Revisão [CLRS, Cap.-3] Fundamentos; notação; exemplos Algoritmos em Grafos [CLRS, Cap.2-26] Algoritmos elementares

Leia mais

AED2 - Aula 22 Busca em largura, cálculo de distâncias

AED2 - Aula 22 Busca em largura, cálculo de distâncias AED2 - Aula 22 Busca em largura, cálculo de distâncias Relembrando a busca genérica, usando um versão alternativa: marque todos os vértices como não encontrados. marque s como encontrado. coloque s no

Leia mais

Árvores. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira

Árvores. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira Árvores SCC-202 Algoritmos e Estruturas de Dados I Lucas Antiqueira Listas e árvores Listas lineares Um nó após o outro, adjacentes Nó sucessor e antecessor Diversas aplicações necessitam de estruturas

Leia mais

Algoritmos e Estruturas de Dados. Grafos Semestre de Inverno 13/14

Algoritmos e Estruturas de Dados. Grafos Semestre de Inverno 13/14 Algoritmos e Estruturas de Dados Grafos Semestre de Inverno 13/14 1 Grafo - Definição } Um grafo G=(V,E) é um par de dois conjuntos não vazios em que V é um conjunto finito e E é uma relação binária em

Leia mais

Melhores momentos AULA 14

Melhores momentos AULA 14 Melhores momentos AULA Problema O algoritmo de Dijkstra resolve o problema da SPT: Dado um vértice s de um digrafo com custos não-negativos nos arcos, encontrar uma SPT com raiz s 5 5 5 Simulação 5 Simulação

Leia mais

Grafos Parte 1. Aleardo Manacero Jr.

Grafos Parte 1. Aleardo Manacero Jr. Grafos Parte 1 Aleardo Manacero Jr. Uma breve introdução Grafos são estruturas bastante versáteis para a representação de diversas formas de sistemas e/ou problemas Na realidade, árvores e listas podem

Leia mais

Demonstração. Relação invariante chave. Implementações do algoritmo de Prim. Implementação grosseira

Demonstração. Relação invariante chave. Implementações do algoritmo de Prim. Implementação grosseira Algoritmo de Prim Simulação S. Algoritmos em Grafos º sem / Franja A franja (= fringe) de uma subárvore T é o conjunto de todas as arestas que têm uma ponta em T e outra ponta fora Exemplo: As arestas

Leia mais

UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO Departamento de Ciências de Computação

UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO Departamento de Ciências de Computação UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO Departamento de Ciências de Computação SCC-203 ALGORITMOS E ESTRUTURAS DE DADOS II Prova - Gabarito Nome: Nro. USP ) O matemático

Leia mais

GRAFOS. Prof. André Backes. Como representar um conjunto de objetos e as suas relações?

GRAFOS. Prof. André Backes. Como representar um conjunto de objetos e as suas relações? 8/0/06 GRAFOS Prof. André Backes Definição Como representar um conjunto de objetos e as suas relações? Diversos tipos de aplicações necessitam disso Um grafo é um modelo matemático que representa as relações

Leia mais

ESTRUTURA DE DADOS. Árvores, árvores binárias e percursos. Cristina Boeres

ESTRUTURA DE DADOS. Árvores, árvores binárias e percursos. Cristina Boeres ESTRUTURA DE DADOS Árvores, árvores binárias e percursos Cristina Boeres 2 Árvores! utilizada em muitas aplicações! modela uma hierarquia entre elementos árvore genealógica diagrama hierárquico de uma

Leia mais

PAA-DCC-UFAM. Grafos. Universidade Federal do Amazonas Departamento de Eletrônica e Computação

PAA-DCC-UFAM. Grafos. Universidade Federal do Amazonas Departamento de Eletrônica e Computação Grafos Universidade Federal do Amazonas Departamento de Eletrônica e Computação Grafos () Um grafo é composto por um conjunto de vértices e um conjunto de arestas Cada aresta liga dois vértices do grafo

Leia mais

CT-234. Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches

CT-234. Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches CT-2 Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural Carlos Alberto Alonso Sanches CT-2 8) Algoritmos em grafos Conceitos básicos, representações, explorações sistemáticas Definição

Leia mais

Árvores & Árvores Binárias

Árvores & Árvores Binárias Árvores & Árvores Binárias Problema Implementações do TAD Lista Linear Lista encadeada eficiente para inserção e remoção dinâmica de elementos, mas ineficiente para busca Lista seqüencial (ordenada) Eficiente

Leia mais

GRAFOS E DIGRAFOS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

GRAFOS E DIGRAFOS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos GRAFOS E DIGRAFOS Vanessa Braganholo Estruturas de Dados e Seus Algoritmos GRAFOS Definições Representação Algoritmos Busca Inserção (arestas e vértices) Exclusão (arestas e vértices) 1 4 5 6 GRAFOS Grafos

Leia mais

Cap. 2 Conceitos Básicos em Teoria dos Grafos

Cap. 2 Conceitos Básicos em Teoria dos Grafos Teoria dos Grafos e Aplicações 8 Cap. 2 Conceitos Básicos em Teoria dos Grafos 2.1 Grafo É uma noção simples, abstrata e intuitiva, usada para representar a idéia de alguma espécie de relação entre os

Leia mais

Sub-grafo. Árvore Geradora Mínima

Sub-grafo. Árvore Geradora Mínima Comentários da aula anterior Componentes Fortemente Conectados (algoritmo) 1. Chama BuscaEmProfundidade (G) para obter os tempos de término (t[u], ou f[u]) para todos os vértices de G, isto é, enquanto

Leia mais

CAL ( ) MIEIC/FEUP Grafos: Introdução (Março, 2011)

CAL ( ) MIEIC/FEUP Grafos: Introdução (Março, 2011) 1 Algoritmos em Grafos: Introdução R. Rossetti, A.P. Rocha, A. Pereira, P.B. Silva, T. Fernandes CAL, MIEIC, FEUP Março de 2011 Índice 2 Revisão de conceitos e definições Exemplificar aplicações Representação

Leia mais

AULA 11 PROJETO E ANÁLISE DE ALGORITMOS. Conceitos básicos e representação de grafos Karina Valdivia Delgado

AULA 11 PROJETO E ANÁLISE DE ALGORITMOS. Conceitos básicos e representação de grafos Karina Valdivia Delgado AULA 11 PROJETO E ANÁLISE DE ALGORITMOS Conceitos básicos e representação de grafos Karina Valdivia Delgado Roteiro Motivação Conceitos básicos Representação Motivação Um grafo é uma abstração que permite

Leia mais

Busca em Largura. Adaptado de Humberto C. B. Oliveira

Busca em Largura. Adaptado de Humberto C. B. Oliveira Busca em Largura Adaptado de Humberto C. B. Oliveira Últimas aulas Introdução: História Aplicações Conceitos Básicos: Grafo simples Grafo completo/vazio Grafo não orientado: Arestas laço Arestas paralelas

Leia mais

Parte B Teoria dos Grafos

Parte B Teoria dos Grafos 45 Parte B Teoria dos Grafos B. Grafos e Subgrafos Um grafo G é uma tripla ordenada (V(G), E(G), ), constituindo de um conjunto não vazio V(G) de vértices, um conjunto disjunto E(G) das arestas e uma função

Leia mais

Conceito Básicos da Teoria de Grafos

Conceito Básicos da Teoria de Grafos 1 Conceito Básicos da Teoria de Grafos GRAFO Um grafo G(V,A) é definido pelo par de conjuntos V e A, onde: V - conjunto não vazio: os vértices ou nodos do grafo; A - conjunto de pares ordenados a=(v,w),

Leia mais

Grafos: Busca. SCE-183 Algoritmos e Estruturas de Dados 2. Thiago A. S. Pardo Maria Cristina

Grafos: Busca. SCE-183 Algoritmos e Estruturas de Dados 2. Thiago A. S. Pardo Maria Cristina Grafos: Busca SCE-183 Algoritmos e Estruturas de Dados 2 Thiago A. S. Pardo Maria Cristina Percorrendo um grafo Percorrendo um Grafo Percorrer um grafo é um problema fundamental Deve-se ter uma forma sistemática

Leia mais

TGR BCC Representação Computacional de Grafos. Prof. Ricardo José Pfitscher

TGR BCC Representação Computacional de Grafos. Prof. Ricardo José Pfitscher TGR BCC Representação Computacional de Grafos Prof. Ricardo José Pfitscher Cronograma Representação Matriz de djacências Lista de djacências Matriz de Incidências Representação Como podemos representar

Leia mais

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches CES-11 Algoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra CES-11 Grafos Conceitos gerais e representações Algoritmos em grafos Exploração sistemática em largura Caminhos

Leia mais

Algoritmo de Kruskal. Algoritmo de Kruskal. Floresta geradora 26. Subfloresta S 20.3

Algoritmo de Kruskal. Algoritmo de Kruskal. Floresta geradora 26. Subfloresta S 20.3 Algoritmo de Kruskal Algoritmo de Kruskal S. Algoritmos em Grafos º sem / Subfloresta Uma subfloresta de G é qualquer floresta F que seja subgrafo de G. Exemplo: As arestas vermelhas que ligam os vértices

Leia mais

Algoritmos em Grafos

Algoritmos em Grafos Algoritmos em Grafos Baseado em: The Algorithm Design Manual Steven S. Skiena IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 1/42 Introdução (1) Um grafo G=(V,E)

Leia mais

SUMÁRIO. Fundamentos Árvores Binárias Árvores Binárias de Busca

SUMÁRIO. Fundamentos Árvores Binárias Árvores Binárias de Busca ÁRVORES SUMÁRIO Fundamentos Árvores Binárias Árvores Binárias de Busca 2 ÁRVORES Utilizadas em muitas aplicações Modelam uma hierarquia entre elementos árvore genealógica Diagrama hierárquico de uma organização

Leia mais

Prova Didática Grafos: Árvores Geradoras e Caminhos Mínimos, Análise de Complexidade

Prova Didática Grafos: Árvores Geradoras e Caminhos Mínimos, Análise de Complexidade Prova Didática Grafos: Árvores Geradoras e Caminhos Mínimos, Análise de Complexidade Gustavo E.A.P.A. Batista 25 de janeiro de 2005 1 Contextualização 2 Caminhos Mínimos Caminhos Mínimos de uma Origem

Leia mais

Grafos: Busca. Algoritmos e Estruturas de Dados 2. Graça Nunes

Grafos: Busca. Algoritmos e Estruturas de Dados 2. Graça Nunes Grafos: Busca Algoritmos e Estruturas de Dados Graça Nunes Percorrendo um grafo Percorrendo um Grafo Percorrer um grafo é uma tarefa fundamental Pense no caso de se procurar uma certa informação associada

Leia mais

GRAFOS BUSCAS E MENOR CAMINHO. Prof. André Backes

GRAFOS BUSCAS E MENOR CAMINHO. Prof. André Backes 8//6 GRAFOS BUSCAS E MENOR CAMINHO Prof. André Backes Busca em grafos Definição Consiste em explorar o grafo de uma maneira bem específica. Trata-se de um processo sistemático de como caminhar por seus

Leia mais

INF 1010 Estruturas de Dados Avançadas

INF 1010 Estruturas de Dados Avançadas INF Estruturas de Dados Avançadas Grafos // DI, PUC-Rio Estruturas de Dados Avançadas. Algoritmo de Dijkstra 8 8 Algoritmo de Dijkstra 8 8 8 Algoritmo de Dijkstra 8 8 8 Algoritmo de Dijkstra 8 8 8 8 8

Leia mais

Árvore Geradora Mínima

Árvore Geradora Mínima GRAFOS ÁRVORE GERADORA MÍNIMA Prof. André Backes Árvore Geradora Mínima Definição Uma árvore geradora (do inglês, spanning tree) é um subgrafo que contenha todos os vértices do grafo original e um conjunto

Leia mais

Aula 08. Estruturas de dados Árvore e Grafo

Aula 08. Estruturas de dados Árvore e Grafo Logo Aula 08 Estruturas de dados Árvore e Grafo 2 Árvore Estruturas estudadas até agora não são \ adequadas para representar dados que devem ser dispostos de maneira hierárquica Ex., hierarquia de pastas

Leia mais

Árvores. ! utilizada em muitas aplicações. ! modela uma hierarquia entre elementos. ! O conceito de árvores está diretamente ligado à recursão

Árvores. ! utilizada em muitas aplicações. ! modela uma hierarquia entre elementos. ! O conceito de árvores está diretamente ligado à recursão Árvores 1 Árvores! utilizada em muitas aplicações! modela uma hierarquia entre elementos! árvore genealógica! diagrama hierárquico de uma organização! modelagem de algoritmos! O conceito de árvores está

Leia mais

Disciplina: Matemática Discreta Agostinho Iaqchan Ryokiti Homa

Disciplina: Matemática Discreta Agostinho Iaqchan Ryokiti Homa Disciplina: Matemática Discreta Agostinho Iaqchan Ryokiti Homa Aula -Grafos Uma figura vale por mil palavras A representação de dados e ou informações utilizando de recursos visuais é, em muitos casos,

Leia mais

MATEMÁTICA DISCRETA. Patrícia Ribeiro 2018/2019. Departamento de Matemática, ESTSetúbal 1 / 47

MATEMÁTICA DISCRETA. Patrícia Ribeiro 2018/2019. Departamento de Matemática, ESTSetúbal 1 / 47 1 / 47 MATEMÁTICA DISCRETA Patrícia Ribeiro Departamento de Matemática, ESTSetúbal 2018/2019 2 / 47 1 Combinatória 2 Aritmética Racional 3 3 / 47 Capítulo 3 4 / 47 não orientados Um grafo não orientado

Leia mais

05 Grafos: ordenação topológica SCC0503 Algoritmos e Estruturas de Dados II

05 Grafos: ordenação topológica SCC0503 Algoritmos e Estruturas de Dados II 05 Grafos: ordenação topológica SCC0503 Algoritmos e Estruturas de Dados II Prof. Moacir Ponti Jr. www.icmc.usp.br/~moacir Instituto de Ciências Matemáticas e de Computação USP 2011/1 Moacir Ponti Jr.

Leia mais

Caminhos mínimos de única origem

Caminhos mínimos de única origem Caminhos mínimos de única origem Algoritmos em Grafos Marco A L Barbosa cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional. Conteúdo Introdução

Leia mais

01 Grafos: parte 1 SCC0503 Algoritmos e Estruturas de Dados II

01 Grafos: parte 1 SCC0503 Algoritmos e Estruturas de Dados II 01 Grafos: parte 1 SCC0503 Algoritmos e Estruturas de Dados II Prof. Moacir Ponti Jr. www.icmc.usp.br/~moacir Instituto de Ciências Matemáticas e de Computação USP 2011/1 Moacir Ponti Jr. (ICMCUSP) 01

Leia mais

Grafos tipo abstrato de dados

Grafos tipo abstrato de dados Algoritmos e Estruturas de Dados II Grafos tipo abstrato de dados Thiago A. S. Pardo Profa. M. Cristina Material de aula da Profa. Josiane M. Bueno 1 Tipo Abstrato de Dados Última aula: TAD grafo? 2 Tipo

Leia mais

Algoritmos e Estruturas de Dados

Algoritmos e Estruturas de Dados Algoritmos e Estruturas de Dados Grafos Slides baseados em: ZIVIANI, N. Projetos de Algoritmos - com implementações em Java e C++. Thomson Learning, 2007. Cap 7. CORMEN, H.T.; LEISERSON, C.E.; RIVEST,

Leia mais

Grafos parte 2* Algoritmos e Estruturas de Dados II SCC-203 Rosane 2010/2011. *Baseado em material de professores dos anos anteriores

Grafos parte 2* Algoritmos e Estruturas de Dados II SCC-203 Rosane 2010/2011. *Baseado em material de professores dos anos anteriores Grafos parte 2* Algoritmos e Estruturas de Dados II SCC-203 Rosane 2010/2011 *Baseado em material de professores dos anos anteriores Divisão do Arquivo 1ª parte Percorrendo um grafo Eficiência, Correção

Leia mais

CAP4. ELEMENTOS DA TEORIA DE GRAFOS. Grafo [graph]. Estrutura que consiste num par ordenado de conjuntos, G ( V, E) , sendo:

CAP4. ELEMENTOS DA TEORIA DE GRAFOS. Grafo [graph]. Estrutura que consiste num par ordenado de conjuntos, G ( V, E) , sendo: Matemática Discreta ESTiG\IPB Cap4. Elementos da Teoria de Grafos pg 1 CAP4. ELEMENTOS DA TEORIA DE GRAFOS Grafo [graph]. Estrutura que consiste num par ordenado de conjuntos, G ( V, E), sendo: Exemplos

Leia mais

Doutorado em Ciência da Computação. Algoritmos e Grafos. Raimundo Macêdo LaSiD/DCC/UFBA

Doutorado em Ciência da Computação. Algoritmos e Grafos. Raimundo Macêdo LaSiD/DCC/UFBA Doutorado em Ciência da Computação Algoritmos e Grafos Raimundo Macêdo LaSiD/DCC/UFBA Grafo Completo Grafo simples cujos vértices são dois a dois adjacentes. Usa-se a notação K n para um grafo completo

Leia mais

BCC204 - Teoria dos Grafos

BCC204 - Teoria dos Grafos BCC204 - Teoria dos Grafos Marco Antonio M. Carvalho (baseado nas notas de aula do prof. Haroldo Gambini Santos) Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal

Leia mais

Conjuntos disjuntos. Objectivo resolver eficientemente o problema da equivalência estrutura de dados simples (vector) implementação rápida

Conjuntos disjuntos. Objectivo resolver eficientemente o problema da equivalência estrutura de dados simples (vector) implementação rápida Conjuntos disjuntos Objectivo resolver eficientemente o problema da equivalência estrutura de dados simples (vector) implementação rápida Desempenho análise complicada Uso problemas de grafos equivalência

Leia mais

GRAFOS E ALGORITMOS TEORIA DE GRAFOS

GRAFOS E ALGORITMOS TEORIA DE GRAFOS GRAFOS E ALGORITMOS TEORIA DE GRAFOS 1a. PARTE Prof. Ronaldo R. Goldschmidt rribeiro@univercidade.br ronaldo_goldschmidt@yahoo.com.br ROTEIRO 1. INTRODUÇÃO E MOTIVAÇÃO 2. FUNDAMENTOS 3. CONECTIVIDADE 4.

Leia mais

Grafos - Representação

Grafos - Representação Grafos - Representação É importante salientar outra diferença relevante entre a representação de matriz de adjacência e a representação ligada de grafos. Na representação de matriz está implícita a possibilidade

Leia mais

8. Árvores. Fernando Silva DCC-FCUP. Estruturas de Dados. Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38

8. Árvores. Fernando Silva DCC-FCUP. Estruturas de Dados. Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38 8. Árvores Fernando Silva DCC-FCUP Estruturas de Dados Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38 Árvores - estruturas não lineares (1) Uma lista é um exemplo de uma estrutura de dados

Leia mais

8. Árvores. Fernando Silva. Estruturas de Dados DCC-FCUP. Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38

8. Árvores. Fernando Silva. Estruturas de Dados DCC-FCUP. Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38 8. Árvores Fernando Silva DCC-FCUP Estruturas de Dados Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38 Árvores - estruturas não lineares (1) Uma lista é um exemplo de uma estrutura de dados

Leia mais

Otimização em Grafos

Otimização em Grafos Otimização em Grafos Luidi G. Simonetti PESC/COPPE 2017 Luidi Simonetti (PESC) EEL857 2017 1 / 35 Teoria dos Grafos - Relembrando Árvore Um grafo G é uma árvore se é conexo e não possui ciclos (acíclico).

Leia mais

Grafos parte 2. Percorrendo um grafo. Correção. Eficiência. Percorrendo um Grafo. Percorrendo um Grafo. Percorrendo um Grafo

Grafos parte 2. Percorrendo um grafo. Correção. Eficiência. Percorrendo um Grafo. Percorrendo um Grafo. Percorrendo um Grafo Percorrendo um grafo Grafos parte 2 SCC-203 Algoritmos e Estruturas de Dados 2 Rosane 2010 Baseado em material de professores dos anos anteriores Percorrendo um Grafo Percorrer um grafo é um problema fundamental

Leia mais

Matemática Discreta 10

Matemática Discreta 10 Universidade Federal do Vale do São Francisco Curso de Engenharia da Computação Matemática Discreta 10 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br - www.univasf.edu.br/~jorge.cavalcanti 1 Muitas

Leia mais

Definição 1.1 : Uma árvore é um grafo simples conexo e sem ciclos.

Definição 1.1 : Uma árvore é um grafo simples conexo e sem ciclos. 1 Árvores Definição 1.1 : Uma árvore é um grafo simples conexo e sem ciclos. Um grafo simples sem ciclos mas não conexo (em que cada componente conexa é portanto uma árvore) chama-se uma floresta. Numa

Leia mais

Teoria dos Grafos. Aula 5 - Estruturas de Dados para Grafos. Profª. Alessandra Martins Coelho. março/2013

Teoria dos Grafos. Aula 5 - Estruturas de Dados para Grafos. Profª. Alessandra Martins Coelho. março/2013 Teoria dos Grafos Aula 5 - Estruturas de Dados para Grafos Profª. Alessandra Martins Coelho março/2013 Estrutura é o que caracteriza o próprio grafo e independe da forma como ele é representado. A representação

Leia mais

UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO Departamento de Ciências de Computação

UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO Departamento de Ciências de Computação UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO Departamento de Ciências de Computação SCC-203 ALGORITMOS E ESTRUTURAS DE DADOS II Prova - Gabarito Nome: Nro. USP ) O matemático

Leia mais

Melhores momentos AULA 5

Melhores momentos AULA 5 Melhores momentos AULA 5 Vetor de listas de adjacência de digrafos Na representação de um digrafo através de listas de adjacência tem-se, para cada vértice v, uma lista dos vértices que são vizinhos v.

Leia mais

Árvores. Prof. César Melo DCC/ICE/UFAM

Árvores. Prof. César Melo DCC/ICE/UFAM Árvores Prof. César Melo DCC/ICE/UFAM Introdução As estruturas anteriores são chamadas de unidimensionais (ou lineares) Exemplo são vetores e listas Não adequadas para representar hierarquias. Exemplo:

Leia mais

ESTRUTURAS DISCRETAS (INF 1631) GRAFOS. 1. O que é um grafo? Defina um grafo orientado. Defina um grafo não-orientado.

ESTRUTURAS DISCRETAS (INF 1631) GRAFOS. 1. O que é um grafo? Defina um grafo orientado. Defina um grafo não-orientado. PUC-Rio Departamento de Informática Profs. Marcus Vinicius S. Poggi de Aragão Período: 0. Horário: as-feiras e as-feiras de - horas de maio de 0 ESTRUTURAS DISCRETAS (INF 6) a Lista de Exercícios Procure

Leia mais

Definições Básicas para Grafos

Definições Básicas para Grafos Definições Básicas para rafos RAFO Um grafo (V,A) é definido pelo par de conjuntos V e A, onde: V - conjunto não vazio: os vértices ou nodos do grafo; A - conjunto de pares ordenados a=(v,w), v e w V:

Leia mais

ÁRVORES E ÁRVORES BINÁRIAS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

ÁRVORES E ÁRVORES BINÁRIAS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos ÁRVORES E ÁRVORES BINÁRIAS Vanessa Braganholo Estruturas de Dados e Seus Algoritmos ÁRVORES Árvores Árvores Binárias INSTITUTO DE COMPUTAÇÃO - UFF 2 ÁRVORES Fonte de consulta: Szwarcfiter, J.; Markezon,

Leia mais