VinBR

AEDs III 11/05/2011

Mar 6th, 2012
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.09 KB | None | 0 0
  1. // A aula de hoje é novamente sobre busca em profundidade com a professora Jussara
  2.  
  3. Revisão Busca em Profundidade:
  4. Busca em Profundidade é uma busca em que voce primeiro exauri os caminhos possíveis de um ramo da árvore antes de procurar
  5. em outro ramo. Isso aplicado recursivamente te leva a pesquisar até as folhas mais distantes, ou mais profundas e só então retornar
  6. para procurar os vizinhos daquele ramo. Por isso o nome "Busca em Profundidade".
  7.  
  8. Como grafos podem possuir loops, voce colore os nós que voce já passou com uma cor, ou um marcador númerico para caso voce passe por
  9. ele novamente voce não entre em um loop infinito. Uma vez que um nó tenha tido suas transições exauridas na pesquisa é preciso também
  10. pinta-lo de uma segunda cor, isso pode ser usado para detecção de arestas de retorno, que será conceituado mais abaixo.
  11. complexidade: O(V+A)
  12.  
  13. Revisão Busca em Largura:
  14. Na busca em largura, voce pesquisa primeiro os nós próximos ao nó inicial de uma distancia 1, e em seguida os de distancia 2
  15. e assim por diante até ter encontrado todos os nós e transições da árvore.
  16. Aqui só é necessária uma "coloração"
  17. Complexidade: O(V+A)
  18.  
  19. CONCEITO:
  20. Aresta de árvore é uma aresta que durante a busca levou a descoberta de um nó pela primeira vez.
  21.  
  22. CONCEITO:
  23. Aresta de retorno são as arestas que levam durante a busca a um nó ancestral ou seja um nó raiz do nó atual.
  24.  
  25. CONCEITO:
  26. Arestas de avanço é o caso contrario das de retorno, é quando voce encontra através dela um nó já percorrido que porém não é
  27. antecessor do nó atual.
  28. // Pense que voce está saindo de um ramo de uma árvore e encontrando outro ramo paralelo ao primeiro.
  29.  
  30. CONCEITO:
  31. Arestas de cruzamento são as arestas que se conectam a um nó já percorrido ou pela própria árvore ou por outra árvore.
  32. Isso inclui as arestas de avanço de retorno e um terceiro grupo que são as arestas que levam a outra árvore pesquisada paralelamente.
  33.  
  34. CONCEITO:
  35. Para descobrir se um grafo tem ciclo basta verificar a existência de uma aresta de retorno.
  36. Para isso basta utilizar um algoritimo de Busca em Profundidade e portanto este problema é O(V+A)
  37.  
  38. CONCEITO:
  39. Para se descobrir a menor distancia entre 2 nós de um grafo não direcionado com arestas de peso 1 aplique a
  40. busca em largura em um deles,
  41. E marque o número de níveis que voce caminhou até encontrar o outro nó. Esse número necessáriamente é o menor caminho possível.
  42. Isso é O(V+A)
  43.  
  44. CONCEITO:
  45. Ordenação Topologica é colocar os vertices de um grafo direcionado em ordem de precedencia.
  46. Isso se aplica apenas em grafos direcionados sem loops.
  47. Dessa forma cada vertice fica depois de todos os vertices que apontam para ele, e antes de todos para os quais ele aponta.
  48. Uma aplicação nisso é ordenar um conjunto de tarefas em um projeto de uma empresa, ou ordenar as execuções de diciplinas
  49. em uma faculdade.
  50. Se o grafo não for conexo obviamente não hávera uma única ordenação, mas mais de uma.
  51.  
  52. Para gerar essa ordenação pode-se usar uma busca em profundidade e sempre que voce marcar um nó como já exaurido
  53. voce o coloca na sequencia.
  54. // Eu não entendi direito como isso funciona, talvez valesse a pena rodar o algoritmo na mão para entender melhor.
  55.  
  56. CONCEITO:
  57. Detecção de componentes formente conexos em grafos direcionados.
  58. Para esse problema Precisa-se:
  59. Usar a busca em profundidade no grafo G
  60. Gerar o G transposto Gt O(A)
  61. E agora usar busca em profundidae novamente em Gt começando pelo nó de maior tempo de termino da primeira busca.
  62. Os nós retornados por essa segunda busca devem pertencer a um componente fortemente conectado.
  63. Se restar algum nó que não pertença a este componente, reinicie a busca no próximo nó cujo o tempo de termino tenha sido maior.
  64. Isso tem complexidade: O(V+A + A + V+A) = O(V+A)
  65. // Outro algoritimo que não entendi bem como funciona, rodar na mão talvez fosse uma boa ideia.
  66.  
  67. CONCEITO:
  68. Arvore geradora é uma árvore que chega a todos os vertices de uma árvore sem repetir nós.
  69.  
  70. CONCEITO:
  71. Arvore geradora mínima é a árvore geradora cuja soma dos pesos dos nós seja o menor possível.
  72. Esse problema pode ser pensado como a ótimização do custo de conecção entre um conjunto de computadores.
  73. ou casas, ou cidades, etc. . .
  74.  
  75. Um algoritimo para esse problema é o algoritmo de Prim,
  76. O algoritimo de Prim é buscar a partir de um nó inicial e suas arestas iterativamente uma aresta que ligue o conjunto de
  77. nós que eu ja possuo a um outro nó de fora deste conjunto no menor custo possível e então incluir este novo nó e nova aresta na
  78. minha árvore.
  79. A árvore final deve ser a árvore geradora mínima.
  80. Fazendo essa escolha com este critério guloso eu consigo uma solução ótima.
  81.  
  82. Uma estrutura utilizada nesse algoritimo é a arvore heap formada pelos nós do grafo e ordenada pelo menor custo de acesso conhecido
  83. para se chegar neste nó. Observe que a medida que novos nós e arestas são incluídos na sua arvore pode ser necessário atualizar o
  84. menor valor de acesso de um dos nós do heap e isso é O(log(V))
  85. A complexidade é O((V+A)logV).
  86.  
  87. // Já revisado!
Advertisement
Add Comment
Please, Sign In to add comment