Escolar Documentos
Profissional Documentos
Cultura Documentos
MD 2 1
MD 2 1
Iteração 3: Agora vamos selecionar o vértice com a menor distância atual que ainda não
foi visitado, nesse caso, o vértice 'b' é selecionado. Verificamos se a distância atual +
peso da aresta é menor do que a distância armazenada atualmente para cada vértice
adjacente
Iteração 5: Selecionamos o vértice com a menor distância atual que ainda não foi
visitado, nesse caso, o vértice 'f' é selecionado. Verificamos se a distância atual + peso da
aresta é menor do que a distância armazenada atualmente para cada vértice adjacente.
S = [‘c’, ‘b’, ‘d’, ‘f’] e R = [‘a’ , ‘e’, ‘g’, ‘z’]
Iteração 6: Selecionamos o vértice com a menor distância atual que ainda não foi
visitado, nesse caso, o vértice 'g' é selecionado. Verificamos se a distância atual + peso
da aresta é menor do que a distância armazenada atualmente para cada vértice
adjacente.
S = [‘c’, ‘b’, ‘d’, ‘f’, ‘g’] e R = [‘a’ , ‘e’, ‘z’]
Iteração 7: Selecionamos o vértice com a menor distância atual que ainda não foi
visitado, porém 2 vértices estão com as distâncias iguais, por conta disso, selecionaremos
por ordem alfabética, mas caso fosse escolhido qualquer outro com valor igual, não
alteraria o resultado final, tampouco o número de iterações, logo o vértice 'a' é
selecionado. Verificamos se a distância atual + peso da aresta é menor do que a distância
armazenada atualmente para cada vértice adjacente.
S = [‘c’, ‘b’, ‘d’, ‘f’, ‘g’, ‘a’] e R = [‘e’, ‘z’]
Como não houve nenhum vértice que pudesse satisfazer a condição, nada foi alterado
Iteração 8: Selecionamos o vértice com a menor distância atual que ainda não foi
visitado, nesse caso, o vértice 'e' é selecionado. Verificamos se a distância atual + peso
da aresta é menor do que a distância armazenada atualmente para cada vértice
adjacente.
S = [‘c’, ‘b’, ‘d’, ‘f’, ‘g’, ‘a’, ‘e’] e R = [‘z’]
Como não existe caminho mais curto passando por ‘z’, concluímos o algoritmo de dijkstra
T ←T + [d]
V←V - [d]
Sendo S uma lista com as arestas da árvore geradora mínima
S ← S + [(a, d)]
Iteração 3: Agora temos de encontrar a menor aresta do grafo, tal que o nó inicial
pertença à T e o nó final pertença a V que seriam:
S = [(a, d)]
T = [‘a’, ‘d’], V = [‘b’, ‘c’, ‘e’, ‘f’, ‘g’, ‘z’]
T ←T + [c]
V←V - [c]
S ← S + [(d, c)]
Iteração 4: Agora temos de encontrar a menor aresta do grafo, tal que o nó inicial
pertença à T e o nó final pertença a V que seriam:
T ←T + [b]
V←V - [b]
S ← S + [(c, b)]
Iteração 5: Agora temos de encontrar a menor aresta do grafo, tal que o nó inicial
pertença à T e o nó final pertença a V que seriam:
T ←T + [f]
V←V - [f]
S ← S + [(b, f)]
Iteração 6: Agora temos de encontrar a menor aresta do grafo, tal que o nó inicial
pertença à T e o nó final pertença a V que seriam:
T ←T + [e]
V←V - [e]
S ← S + [(f, e)]
Iteração 7: Agora temos de encontrar a menor aresta do grafo, tal que o nó inicial
pertença à T e o nó final pertença a V que seriam:
S = [(a, d), (d, c), (c, b), (b, f), (f, e)]
T = [‘a’, ‘d’, ‘c’, ‘b’, ‘f’, ‘e’], V = [‘g’, ‘z’]
T ←T + [z]
V←V - [z]
S ← S + [(e, z)]
Iteração 8: Agora temos de encontrar a menor aresta do grafo, tal que o nó inicial
pertença à T e o nó final pertença a V que seriam:
S = [(a, d), (d, c), (c, b), (b, f), (f, e), (e, z)]
T = [‘a’, ‘d’, ‘c’, ‘b’, ‘f’, ‘e’, ‘z’], V = [‘g’]
T ←T + [g]
V←V - [g]
S ← S + [(b, g)]
S = [(a, d), (d, c), (c, b), (b, f), (f, e), (e, z), (b, g)]
Agora, criaremos uma lista T, onde T armazenará as arestas de menor valor, verificando
se ao adicionar um novo nó não estamos criando um laço (ciclo). O algoritmo termina
quando todas as arestas forem visitadas
Logo, T inicia vazio, mas fazendo a iniciação da variável:
T = []
T ← T +[(b, c)]
E retiramos a aresta adicionada à T
Iteração 1:
Iteração 2: Percorreremos os nós de maneira recursiva, isso significa que a cada nova
chamada da função, teremos um novo grafo e iremos analisá-lo como tal. Com isso,
percorrendo a partir do nó ‘a’ e levando em consideração a ordem alfabética como meio
de escolha do próximo nó da busca, com os nós adjacentes como escolha, temos:
T = [‘a’] e N = [‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’, ‘z’]
T ← T + [‘b’]
N ← N – [‘b’]
Iteração 3:
T = [‘a’, ‘b’] e N = [‘c’, ‘d’, ‘e’, ‘f’, ‘g’, ‘z’]
T ← T + [‘c’]
N ← N – [‘c’]
Iteração 4:
T = [‘a’, ‘b’, ‘c’] e N = [‘d’, ‘e’, ‘f’, ‘g’, ‘z’]
T ← T + [‘d’]
N ← N – [‘d’]
Iteração 5:
T = [‘a’, ‘b’, ‘c’, ‘d’] e N = [‘e’, ‘f’, ‘g’, ‘z’]
T ← T + [‘e’]
N ← N – [‘e’]
Iteração 6:
T = [‘a’, ‘b’, ‘c’, ‘d’, ‘e’] e N = [‘f’, ‘g’, ‘z’]
T ← T + [‘f’]
N ← N – [‘f’]
Iteração 7:
T = [‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’] e N = [‘g’, ‘z’]
T ← T + [‘g’]
N ← N – [‘g’]
Iteração 8:
E assim, terminamos o algoritmo, onde ele percorreu todos os nós do grafo, sendo F a
lista que armazena o resultado, temos F = [‘a’, ‘b’, ‘c’, ‘d’, ‘f’, ‘g’, ‘e’, ‘z’].
a) Encontre A².
A = [(0 2 0 1),
(0 0 1 0),
(0 0 0 0),
(0 0 1 0)]
A² = [(0 0 2 0),
(0 0 0 0),
(0 0 0 0),
(0 0 0 0)]
b) Encontre 𝐴(2) .
Todo circuito Hamiltoniano é um caminho do qual se é capaz de passar por todas as arestas sem
repeti-las. Se uma aresta necessariamente precisa de estar entre 2 nós, vemos que um caminho
Hamiltoniano é impossível em grafos com nós não conectados e nós conectados a um único outro
nó. Dessa forma, podemos perceber que, se é estritamente necessário que todos os nós sejam
acessíveis e que seja formado um ciclo ao final do circuito para ser um circuito Hamiltoniano, então
todo circuito Hamiltoniano é certamente conexo.
A = [(0 0 0 1),
(0 0 1 1),
(0 0 0 0),
(1 0 0 0)]
R = [(1 0 0 1),
(1 0 1 1),
(0 0 0 0),
(1 0 0 1)]
A 2ª coluna de R está com todos os seus valores zerados. Isso significa que não existe forma
possível de se acessar o nó desta coluna
5) É possível entrar e sair de cada quarto na casa ilustrada na figura a seguir de modo que
cada porta da casa seja usada exatamente uma vez? Por quê?
Primeiramente, transformaremos um problema em algo mais simples e do qual o assunto é
dominado. Dessa forma, podemos enxergar este problema como um grafo, onde os espaços são os
nós e as portas são as arestas. De modo que fique:
Dado o grafo do problema, podemos visualizar de forma mais fácil. Se for observado atentamente,
vemos que o grafo possui 3 nós com 3 arestas e um com 5 nós, tornando impossível percorrer o
caminho sem repetir arestas. Isso porque só é possível percorrer todas as arestas do grafo (visto que
percorrer todas as arestas é um problema Hamiltoniano) caso houvesse apenas 2 nós ímpares com 3
arestas, mas como há 4 nós ímpares e 3 deles possuem 3 arestas, torna-se impossível percorrer o
caminho sem repetir aresta.