VinBR

AEDs III 09/05/2011

Mar 6th, 2012
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.14 KB | None | 0 0
  1. // Aula da Jussara
  2.  
  3. Apresentando Grafos
  4.  
  5. CONCEITO:
  6. Grafos são uma ferramenta extremamente útil na expressão grafica de problemas.
  7. Pode-se usa-los para modelar um problema computacional, torna-lo mais visível e mais fácil de se trabalhar.
  8.  
  9. A forma pela qual se expressa um grafo é por um desenho composto por pontos, chamados vertices, conectados entre sí
  10. por traços ou setas, chamadas arestas.
  11. // Outro nome para vertice é nó, eu usarei esse nome frequentemente mais adiante.
  12.  
  13. Dependendo da aplicação que for desejada para o gráfico pode-se adicionar características à livre escolha.
  14. À exemplo para se tratar de um problema de caminhamento entre cidades pode-se adicionar distancias as arestas,
  15. Quando se faz isso da-se o nome Arestas com "Pesos".
  16.  
  17. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  18.  
  19. Vários Nomes e CONCEITOS que a professora citou:
  20. -Cada aresta pode ou não ser direcionada, e pode ser também duplamente direcionada. (se direcionada a representação é uma seta)
  21. -Uma aresta pode ligar um vertice à ele mesmo, usualmente isso ocorre apenas em grafos direcionados.
  22.  
  23. -Um vizinho de um nó é um outro nó conectado a ele via uma aresta.
  24.  
  25. -O grau de um nó é o número de vizinhos que ele possui.
  26. -Em grafos direcionados pode-se usar os termos grau de entrada para o número de arestas que incidem no nó em questão,
  27. e grau de saída para o número de arestas que saem do nó em questão.
  28. -O grau de um grafo é o maior grau de seus vertices. Portanto um grafo de grau 3, tem no maximo 3 arestas por nó.
  29.  
  30. -Um caminho entre o nó A e B é uma sequencia de arestas que deve-se seguir para se chegar do ponto A ao ponto B.
  31. -Caminho Simples é um caminho sem repetição de nós. Ou seja um caminho direto.
  32. -Um Ciclo em um grafo é um caminho do ponto A ao ponto A. // Bem obvio isso.
  33. -Grupo Conexo é um grupo de nós para os quais cada nó possuí um caminho para todos os outros.
  34. Em um grafo direcionado chama-se de grupo conexo, um grupo que seria conexo em um grafo não direcionado.
  35. E reserva-se o nome "Fortemente Conexo" para os grupos que são conexos mesmo considerando as direções das arestas.
  36. -Dois nós ligados "Diretamente" significa que existe um caminho entre eles de uma única aresta.
  37.  
  38. -Um nó "Filho" de outro nó é um nó que foi alcançado a partir deste outro diretamente.
  39. Um nó "Decendente" de outro nó é analogo, porém não necessáriamente foi alcançado por uma ligação direta.
  40. -Um nó "Pai" de outro nó é um nó através do qual pode-se alcançar outro diretamente.
  41. Um nó "Ancestral" de outro nó é analogo, porém não necessáriamente foi leva ao outro nó por uma ligação direta.
  42.  
  43. -Um Grafo Isomorfo de outro é um grafo identico à outro em forma, ou seja, mesmo número de arestas e de nós e os mesmos
  44. nós possuem as mesmas arestas. Pode até ser que os nós tenham nomes diferentes mas o importante é o se o formato dos dois é analogo.
  45.  
  46. -Um Sub-grafo é um grafo formado por um subconjunto dos vertices e um subconjunto dos vertices de um outro grafo.
  47.  
  48. -Um Grafo Bipartido é um grafo do tipo "quais sites cada usuário do dcc acessou?"
  49. Então teremos um grupo de vertices que representarão usuários e outro grupo representará os sites.
  50. E teremos com isso apenas transições que vão de um grupo para o outro, nunca transições dentro do mesmo grupo.
  51. Genericamente: Um Grafo Bipartido é um grafo divisível em 2 grupos onde cada grupo não possuí transições internas.
  52. // Se voce for criativo pode ate pensar em grafo tripartido e etc, depende da aplicação que voce deseja.
  53.  
  54. // Existe o conceito de Hipergrafo que é a ideia de que uma unica transição pode conectar diversos nós e nao apenas 2.
  55. // Mas esse conceito é mais exotico e provavelmente não usaremos ele.
  56.  
  57. -Um grafo completo é um grafo em que cada nó está conectado diretamente (ou seja por uma única aresta) a cada outro nó.
  58. Este grafo se for não direcionado possui v*(v-1)/2 arestas.
  59. Se for direcionado possui v² arestas. // pq cada um pode estar conectado a sí mesmo.
  60.  
  61. -Uma arvore é um grafo sem ciclos que está conexo
  62. Uma floresta é um conjunto de árvores sem conexões entre sí.
  63. Um grafo não conexo sem ciclos pode ser visto como uma floresta, ou seja um conjunto de arvores soltas.
  64. -Arvore geradora é um subconjunto de um grafo que conecte todos os nós sem gerar ciclos.
  65. -Também existe a floresta geradora que é uma ideia menos útil mas é analogo a da árvore geradora.
  66.  
  67. // A aula mais legal de acordo com a professora é a aula que vem pra frente, porque veremos um a um as soluções que existem a respeito
  68. // desses problemas.
  69.  
  70. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  71.  
  72. Como um grafo pode ser expresso na memória de um computador?
  73. -Pode ser criada uma matriz de bits, onde o bloco (x,y) indica se existe conecção entre os nós x e y.
  74. -Pode ser também um arranjo de ponteiros onde o ponteiro de indice x aponta para uma lista contendo as transições do nó x.
  75.  
  76. // Uma implementação estatica disso também existe mesmo sem usar uma matriz.
  77. // Isso é util quando sua plataforma tem pouca memoria e nao tem alocação dinamica.
  78. // Da pra imaginar isso se voce entende como funciona a pilha do assemble. É uma ideia semelhante.
  79. // Não vejo como nós iriamos vir a usar isso então não anotei.
  80.  
  81. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  82.  
  83. CONCEITO:
  84. Busca em Profundidade é a busca em que eu passeio por toda a arvore filho a filho recursivamente,
  85. só começo a pesquisa do irmão de um filho depois que todas os filhos do primeiro filho ja tiverem sido pesquisados até a exaustão.
  86.  
  87. // Abaixo entenda que uma "cor" é um marcador, normalmente será um número quando voce estiver programando.
  88. Um metodo para se realizar essa pesquisa é o metodo de colorir de cinza os nós que estão sendo pesquisados,
  89. e de preto aqueles que já foram exauridos. A vantagem de usar essas cores é que uma vez que voce encontrar uma transição
  90. para um nó que voce já pesquisou voce percebe isso na hora, e não deixa seu programa entrar em loop.
  91. Agora a necessidade da cor preta (ao invés de deixar tudo apenas na cor cinza),
  92. é para denotar que se o nó ta preto, é porque ele não pode ser um "ancestral" do nó que voce está pesquisando atualmente.
  93. Isso pode ser útil na resolução de alguns tipos de problemas.
  94.  
  95. Esse algoritimo é O(V+A) sendo V o num vertices e A o num arestas.
  96.  
  97. CONCEITO:
  98. Busca em largura é uma pesquisa em que voce pesquisa primeiro todos os filhos do vertice de inicio,
  99. depois todos os filhos dos filhos e assim por diante.
  100. Utiliza-se uma unica coloração neste sistema que é preto e voce só colore de preto uma vez que todos os vizinhos ja tiverem
  101. sido pesquisados.
  102. Uma outra coisa que é feita nesse sistema e que pode ser útil na resolução de alguns problemas é escrever no nó
  103. qual a sua distancia do nó inicial.
  104.  
  105. Esse sistema também é recursivo e sua complexidade é O(V+A)
  106.  
  107. // Até a proxima aula!!
Advertisement
Add Comment
Please, Sign In to add comment