{[ promptMessage ]}

Bookmark it

{[ promptMessage ]}

Usando a mesma representação podemos descobrir se

Info icon This preview shows pages 5–8. Sign up to view the full content.

View Full Document Right Arrow Icon
Usando a mesma representação, podemos descobrir se um programa possui recursão direta ou indireta. Pode existir recursão se existe ciclo no grafo: f h g Um vendedor deve passar por várias cidades e retornar ao ponto inicial. Qual o trajeto de menor distância possível ? Qual a menor distância entre duas cidades a e c ? b 300 200 a 100 c 50 20 • • • 30 70 Como ir da cidade "a" a "c" passando pelo número mínimo de cidades? Quantas cores são necessárias para colorir um mapa no plano? 5
Image of page 5

Info icon This preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
B B C D C D A A E E Outros: - Labirinto - Eliminação de código morto - make do Unix 1.4 Algoritmos de Busca Busca em profundidade (Depth-First Search DFS) Uma DFS começa em um vértice v chamado raiz e caminha por todos os vértices que podem ser alcançados a partir de v. Observe que v é um parâmetro passado ao algoritmo DFS. Qualquer vértice pode ser a raiz. Diremos que v é conectado a w se existir a aresta (v, w). Os desenhos abaixo mostram a ordem de visita aos vértices de acordo com buscas em profundidade começando em v. Vértice numerado n é visitado antes de n+1. v v 1 1 7 2 6 2 4 3 5 5 3 4 Observe que, se executado manualmente por duas pessoas, o algoritmo DFS pode produzir duas numerações diferentes. Por exemplo, no grafo da esquerda acima as numerações 1 2 3 4 5 6 7 e 1 6 5 2 3 4 7 estão ambas corretas para DFS. O algoritmo para busca em profundidade marca v (raiz) como visitado, pega um vértice w conectado a v (a aresta (v, w) existe) e continua a DFS em w. Depois que a busca em w termina, o algoritmo toma outro vértice z conectado a v ainda não visitado e faz a busca em z. O algoritmo termina quando todos os vértices ligados a v já foram marcados (visitados). O algoritmo para DFS é mostrado a seguir e incorpora código para fazer preWork e postWork, que são códigos executados ao marcar um vértice e após visitar uma aresta. PreWork e postWork dependem da finalidade para a qual DFS está sendo utilizada. Algorithm DFS(G, v) 6
Image of page 6
Entrada: G = (V, E) e um vértice v V. begin marque v faça preWork sobre v for each aresta (v, w) E do if w não foi marcado then DFS(G, w); faça postWork para (v, w) endif end O algoritmo DFS pode ser usado para percorrer todos os vértices de um grafo e para descobrir se um grafo é conectado ou não. Se, após uma DFS, todos os vértices forem visitados, então o grafo é conectado. Busca em largura (Breadth-First Search) Uma BFS é feita em um grafo G = (V, E) começando em um vértice v. Primeiro o algoritmo visita v e todos os vértices conectados a v, chamados filhos de v. Isto é, o algoritmo visita vértices w tal que (v, w) E. No segundo passo, o algoritmo visita todos os netos de v. Isto é, os vértices que não estão conectados diretamente a v mas estão conectados a algum vértice que está conectado a v. O algoritmo prossegue deste modo até que todos os vértices alcançáveis por v sejam visitados.
Image of page 7

Info icon This preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
Image of page 8
This is the end of the preview. Sign up to access the rest of the document.

{[ snackBarMessage ]}

What students are saying

  • Left Quote Icon

    As a current student on this bumpy collegiate pathway, I stumbled upon Course Hero, where I can find study resources for nearly all my courses, get online help from tutors 24/7, and even share my old projects, papers, and lecture notes with other students.

    Student Picture

    Kiran Temple University Fox School of Business ‘17, Course Hero Intern

  • Left Quote Icon

    I cannot even describe how much Course Hero helped me this summer. It’s truly become something I can always rely on and help me. In the end, I was not only able to survive summer classes, but I was able to thrive thanks to Course Hero.

    Student Picture

    Dana University of Pennsylvania ‘17, Course Hero Intern

  • Left Quote Icon

    The ability to access any university’s resources through Course Hero proved invaluable in my case. I was behind on Tulane coursework and actually used UCLA’s materials to help me move forward and get everything together on time.

    Student Picture

    Jill Tulane University ‘16, Course Hero Intern