1 / 32

Representa o computacional de Grafos

Para representar um grafo precisaramos de 3 conjuntos:ARESTAS={a1,a2,a3,a4,a5,a6...}VERTICES={v1,v2,v3,v4....}eV A={[a1,v1,v2],[a2,v1,v3].....]}Porm, como encontrar o menor caminho nesta representao?. Matriz de adjacnciasDe posse dos vrtices, podemos formar uma matriz NxN elementos o

nicholai
Télécharger la présentation

Representa o computacional de Grafos

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


    1. Representao computacional de Grafos

    2. Para representar um grafo precisaramos de 3 conjuntos: ARESTAS={a1,a2,a3,a4,a5,a6...} VERTICES={v1,v2,v3,v4....} e V+A={[a1,v1,v2],[a2,v1,v3].....]} Porm, como encontrar o menor caminho nesta representao?

    3. Matriz de adjacncias De posse dos vrtices, podemos formar uma matriz NxN elementos onde i,j contem a aresta entre os elementos do vrtice Ni e Nj. Esta matriz armazena 1 se existe a aresta ou 0 se no existe. Ou seja, ela totalmente simtrica, caso seja um grafo no direcionado.

    4. Caso um grafo contenha poucas arestas, a matriz tende a ser esparsa, ou seja, conter muitos zeros! Caso tenhamos N arestas o tamanho da matriz sempre ser N2. Qualquer algoritmo que precise verificar algo na matriz ter que fazer N2 comparaes. Se o grafo possuir poucas arestas, a matriz passa a no ser interessante, desta forma podemos utilizar Listas encadeadas!

    5. Lista encadeada Usa ponteiros para mostrar o prximo da lista. Para encontrar os vrtices adjacentes, precisamos percorrer toda a lista. Precisamos de informaes adicionais para armazenar o endereo do prximo elemento.

    6. Em um grafo no-direcionado, cada aresta aparecer 2 vezes. Se nj est na lista de adjacentes a ni, ento ni, tambm est na lista de adjacncias de nj. Em um grafo rotulado, as informaes podem ser armazenadas em cada elemento da lista.

    7. Crie a MATRIZ e a LISTA ENCADEADA:

    8. Caminho Eureliano (Algoritmo)

    9. Definio Um caminho Eureliano em um grafo G, um caminho que usa cada aresta de G exatamente uma vez. A existncia de um caminho Eureliano, depende dos graus de seus vrtices. Existe um caminho Eureliano em um grafo conexo se, e somente se, no houver nenhum ou existirem exatamente dois vrtices de grau mpar. No caso de no haver vrtices mpares, o caminho pode comear em qualquer vrtice e terminar neste mesmo vrtice; para o caso de haver dois vrtices mpares, o caminho deve comear em um vrtice mpar e terminar no outro.

    10. Definio

    11. Algoritmo A essncia contar o nmero de vrtices adjacentes a cada vrtice e determinar se este impar ou par. Se houver muitos vrtices com grau impar, no existe um caminho Eureliano.

    12. Algoritmo Total=0 T=1 While(total<=2) and (i<=n) { grau=0 for j=1 to N { grau = grau + a[i,j] } if grau=impar { total=total+1 i = i + 1} } If total>2 or total=1 ento No existe caminho Eureliano Else Existe caminho Eureliano

    13. Ciclo Hamiltoniano

    14. Definio Willian Rowan Hamilton(1865), props um problema semelhante ao elaborado por Euler, mas agora estamos interessados em saber se podemos usar todos os vrtices exatamente uma vez!

    15. Idia bsica Comece por algum vrtice e tente encontrar um caminho. Se o caminho resultante tiver um vrtice repetido, ele no um ciclo. Se o caminho puder ser completado como um ciclo, verifique se ele visitou todos os vrtices. Se ele visitou, ento temos um ciclo Hamiltoniano. Em resumo: No existe um algoritmo eficiente para resolver o problema do ciclo Hamiltoniano.

    16. O caixeiro viajante Um bom exemplo do problema de Hamilton o caixeiro viajante.

    17. Caixeiro viajante Exemplificando o caso n = 4: se tivermos quatro cidades A, B, C e D, uma rota que o caixeiro deve considerar poderia ser: saia de A e da v para B, dessa v para C, e da v para De ento volte a A. Quais so as outras possibilidades ? muito fcil ver que existem seis rotas possveis: ABCDA,ABDCA,ACBDA,ACDBA,ADBCA, ADCBA.

    18. O caixeiro viajante Suponhamos temos um muito veloz computador, capaz de fazer 1 bilho de adies por segundo. Isso parece uma velocidade imensa, capaz de tudo. Contudo, essa imensa velocidade um nada frente imensido do nmero 19! de rotas que precisar examinar. Com efeito, acredite se puder, o valor de 19! 頠121 645 100 408 832 000( ou , aproximadamente, 1.2 x 1017 em notao cientfica). Consequentemente, ele precisar de 1.2 x 1017 / ( 53 milhes ) = 2.3 x 109 segundos para completar sua tarefa, o que equivale a cerca de 73 anos . O problema que a quantidade (n - 1)! cresce com uma velocidade alarmante, sendo que muito rapidamente o computador torna-se incapaz de executar o que lhe pedimos. Constate isso mais claramente na tabela a seguir:

    19. Idia bsica

    20. Caminho Mnimo (Algoritmo)

    21. O problema Admita que tenhamos um grafo conexo onde todos os pesos so positivos, ento, existe um caminho entre os vrtices X e Y? De fato pode haver vrios desses caminhos. Mas como encontrar um caminho onde a soma dos pesos seja a menor? Trata-se de um recursos importante para resolver problemas em redes de computadores, em trnsito de veculos ou em telecomunicaes. (entre outros)

    22. Suposies Como o grafo conexo, sabemos que o caminho existe. Como ele no tem restries, ele pode ser resolvido (e o Hamiltoniano no)

    23. Algoritmo de Dijkstra Construmos um conjunto chamado IN que conter o vrtice inicial (x por exemplo), e que ir aumentando a medida que for executado. IN conter ento todos os vrtices para os quais j determinamos os menores caminhos (a partir de x) Para aumentar IN, pegamos o vrtice fora de IN com menor distncia. Agora recalculamos

    31. O Algoritmo Trata-se de um algoritmo de viso curta. Ele no capaz de ver todo o grafo para determinar diversos caminhos mnimos. Ele apenas determina a cada passo, os caminhos mnimos relativos ao conjunto IN. Esse tipo de algoritmo conhecido como Algoritmo guloso pois sempre realiza apenas os passos que so melhores.

    32. O Algoritmo // Criando o primeiro vetor com as distncias // iniciais IN = {x} D[x]=0; For todos os Z que no esto em IN { d[z] = A[x,z] s[z] = x; }

    33. O Algoritmo While not (y in IN) { IN=IN U P for (todos de z que pertenam a IN) { distanciaanterior = d[z] d[z] = min(d[z],d[p] ; A[p,z]); if (dz<distanciaanterior) s[z]=p } } //{while}

More Related