Escolar Documentos
Profissional Documentos
Cultura Documentos
Conceitos Básicos:
𝐺 = {𝑉(𝐺), 𝐸(𝐺)}
𝑒(𝐺) = |𝐸(𝐺)| = 𝑚
tamanho = n+m
Vértices adjacentes: dois vértices são adjacentes se forem incidentes da mesma aresta;
Multigrafo : loop e arestas paralelas fazem parte do grafo (grafo não simples)
Vizinhança do vértice 𝑣 (𝑁(𝑣) ) : conjunto de vértices que possui relação (aresta) com 𝑣.
𝐺̅ = {𝑉(𝐺), 𝐸̅ (𝐺)}
Onde
𝑛 𝑛(𝑛 − 1)
|𝐸(𝐺)| + |𝐸̅(𝐺)| = ( ) = 𝑂(𝑛2 )
2 2
Distância entre dois vértices v e w (𝑑(𝑣, 𝑤)): caminho entre os dois vértices com a menor
quantidade de arestas.
Representação de grafos
Existem duas maneiras padrão para representar um grafo 𝐺 = (𝑉, 𝐸): lista de adjacências e
matriz de adjacência.
1. Lista de Adjacência
Consiste em um arranjo 𝐴𝑑𝑗 de |𝑉| listas, uma para cada vértice em 𝑉. Para cada 𝑢 ∈ 𝑉, a
alista adjacente 𝐴𝑑𝑗[𝑢] consiste em todos os vértices 𝑣 tais que existe uma aresta (𝑢, 𝑣) ∈ 𝐸
2. Matriz de Adjacência
Supomos que os vértices são numerados 1,2,3, . . , |𝑉| de alguma maneira arbitrária. Então, a
matriz de adjacência consiste em uma matriz |𝑉|𝑥|𝑉| 𝐴(𝑎𝑖𝑗 ) tal que
1 se (𝑖, 𝑗) ∈ 𝐸,
𝑎𝑖𝑗 = {
0 𝑒𝑚 𝑐𝑎𝑠𝑜 𝑐𝑜𝑛𝑡𝑟á𝑟𝑖𝑜
𝐵𝐹𝑆 (𝐺, 𝑠)
1 𝒇𝒐𝒓 cada vértice de 𝑢 ∈ 𝑉[𝐺 ] − {𝑠}
2 𝒅𝒐 𝑐𝑜𝑟[𝑢] ← 𝐵𝑅𝐴𝑁𝐶𝑂
3 𝑑[𝑢] ← ∞
4 𝜋[𝑢] ← 𝑁𝑈𝐿𝐿
[ ]
5 𝑐𝑜𝑟 𝑠 ← 𝐶𝐼𝑁𝑍𝐴
6 𝑑[𝑠] ← 0
7 𝜋[𝑠] ← 𝑁𝑈𝐿𝐿
8 𝑄←∅
9 𝐸𝑁𝑄𝑈𝐸𝑈𝐸(𝑄, 𝑠)
10 𝒘𝒉𝒊𝒍𝒆 𝑄 ≠ ∅
11 𝒅𝒐 𝑢 ← 𝐷𝐸𝑄𝑈𝐸𝑈𝐸 (𝑄 )
12 𝒇𝒐𝒓 cada vértice de 𝑣 ∈ 𝑎𝑑𝑗[𝑢]
13 𝒅𝒐 𝒊𝒇 𝑐𝑜𝑟[𝑣 ] = 𝐵𝑅𝐴𝑁𝐶𝑂
14 𝒕𝒉𝒆𝒏 𝑐𝑜𝑟[𝑣 ] ← 𝐶𝐼𝑁𝑍𝐴
15 𝑑 [𝑣 ] ← 𝑑 [𝑣 ] + 1
16 𝜋[𝑣 ] ← 𝑢
17 𝐸𝑁𝑄𝑈𝐸𝑈𝐸(𝑄, 𝑣)
18 𝑐𝑜𝑟[𝑢] ← 𝑃𝑅𝐸𝑇𝑂
2. Busca primeira na profundidade
𝐷𝐹𝑆 (𝐺 )
1 𝒇𝒐𝒓 cada vértice de 𝑢 ∈ 𝑉[𝐺 ]
2 𝒅𝒐 𝑐𝑜𝑟[𝑢] ← 𝐵𝑅𝐴𝑁𝐶𝑂
3 𝜋[𝑢] ← 𝑁𝑈𝐿𝐿
4 𝒇𝒐𝒓 cada vértice de 𝑢 ∈ 𝑉[𝐺 ]
5 𝒅𝒐 𝑖𝑓 𝑐𝑜𝑟[𝑢] = 𝐵𝑅𝐴𝑁𝐶𝑂
6 𝑡ℎ𝑒𝑛 𝐷𝐹𝑆 − 𝑉𝐼𝑆𝐼𝑇(𝑢)
Atividade de implementação: