Você está na página 1de 3

1) Não necessariamente.

Substituindo os pesos das arestas por seus


quadrados, podemos aumentar o custo de alguns caminhos em
relação a outros. Portanto, é possível que no novo caso do problema
algum caminho diferente de P se torne mais curto.
Para ilustrar isso, considere o seguinte exemplo simples.
Considere um grafo com três vértices: s, v e t, com arestas de s a v e
de v a t, cada uma com um custo de 1. A rota mais curta entre os
pontos s e t é s-v-t com um custo total de 2.
Agora substituímos os pesos das arestas por seus quadrados,
então o custo de cada aresta é 1^2 = 1. O caminho s-v-t ainda é
válido, o custo total é 2. No entanto, podemos adicionar uma nova
aresta de s a t . com um custo de 2. O novo caminho s-t agora é
mais curto que o caminho s-v-t com um custo total de 2. Portanto,
neste exemplo, não é mais o caminho mais curto no novo problema.

2) a.
O problema de determinar se a teoria da separação de 6ª ordem
vale para todos os usuários na rede de amigos do Facebook pode
ser modelado usando um grafo. Neste modelo, cada usuário é
representado por um vértice e as amizades entre usuários são
representadas por arestas.
Para resolver esse problema, um algoritmo de busca em largura
(BFS) pode ser usado para encontrar o número mínimo de saltos
(ou grau de separação) necessário para conectar quaisquer dois nós
na rede.

b.
Para implementar o algoritmo programáticamente, use uma lista de
adjacências para representar o grafo é uma matriz para armazenar
as distâncias entre os pares de nós. O tempo de execução do
algoritmo é O(N^2) porque temos que executar o BFS para cada par
de nós. onde N é o número de nós da rede.

3) a.
Para modelar o problema usando grafos, considere cada usuário
como um nó do grafo e cada loop seguidor-seguidor como uma
aresta direcionada de seguidor para seguidor. O peso associado à
borda corresponde ao número de retuítes do seguidor. postagem de
acompanhamento.

Com essa representação, podemos usar o algoritmo de


Bellman-Ford para calcular o impacto mínimo entre o usuário de
origem A e todos os outros usuários do conjunto. O algoritmo de
Bellman-Ford pode lidar com arestas com pesos negativos. Isso é
importante para lidar com o impacto negativo do usuário, ou seja,
impacto negativo sobre outros usuários.

b.
A ordem de complexidade do algoritmo apresentado é O(n^3), onde
n é o número de usuários do Twitter no conjunto. Isso ocorre devido
ao uso de três loops aninhados no cálculo da influência de A sobre C

4) Esse problema pode ser resolvido usando a ideia de encontrar os


componentes fortemente conectados do grafo de influência. Um
componente fortemente conectado é um conjunto de vértices tal que
existe um caminho direcionado entre cada par de vértices.
O grafo de influência pode ser modelado como um grafo
direcionado ponderado onde cada usuário é um vértice e a aresta de
“u” a “v” com peso w indica que “u” influencia v com w retuítes. Então
o algoritmo de Kosaraju pode ser usado para encontrar os
componentes fortemente conectados do grafo.
A ordem de complexidade do algoritmo de Kosaraju é O(V + E).

5) a.
Este problema pode ser modelado como um problema de grafos
onde cada brinquedo e portão é representado por um vértice do
grafo. Estradas/rotas são arestas do diagrama que conectam
vértices representando brinquedos/portões. Cada peso de borda
corresponde ao comprimento da estrada/rota correspondente. O
objetivo é encontrar o subgrafo conectado de menor peso que
conecte todos os vértices do grafo. Este problema é conhecido como
o problema da árvore geradora mínima. Algoritmos como o algoritmo
de Prim e o algoritmo de Kruskal podem ser usados ​para resolver
esse problema.

b.
A complexidade do algoritmo de Kruskal para encontrar a árvore
geradora mínima de um grafo com V vértices e E arestas é O(E log
E)

6) Para calcular o valor de Y, precisamos encontrar o menor tempo


necessário para percorrer a maior distância do portão principal até
um dos passeios. O algoritmo de Dijkstra pode ser usado para
encontrar o caminho mais curto entre o portão de entrada e todos os
outros nós do grafo. Em seguida, basta selecionar o tempo mais
longo encontrado entre esses caminhos como o valor Y. Dijkstra é
O(E + V log V)

7) Para ver se podemos viajar de qualquer ponto do parque para


qualquer outro ponto, realizamos uma busca em largura (BFS) de
cada vértice do grafo. Se o BFS de um vértice não visitar todos os
outros vértices do grafo, podemos concluir que é impossível atingir
todos os vértices desse vértice e a rede ferroviária está incorreta.
A complexidade desse algoritmo é de O(N*(N+M)), onde N é o
número de vértices (brinquedos e portaria) e M é o número de trilhos
(arestas direcionadas) no grafo.

Você também pode gostar