Fórum de Matemática
DÚVIDAS? Nós respondemos!

Um Fórum em Português dedicado à Matemática
Data/Hora: 17 jun 2025, 21:44

Os Horários são TMG [ DST ]




Fazer Nova Pergunta Responder a este Tópico  [ 5 mensagens ] 
Autor Mensagem
MensagemEnviado: 28 mar 2016, 19:16 
Offline

Registado: 28 mar 2016, 18:00
Mensagens: 15
Localização: Santa Catarina
Agradeceu: 6 vezes
Foi agradecido: 0 vez(es)
Boa tarde

Podem me ajudar nessa questão?


Na tabela abaixo estão indicadas distâncias entre seis cidades (se não aparece um
número, as cidades não estão conectadas, porém se aparece um número, pode-se ir em
ambas as direções, por exemplo podemos ir da A até B ou de B até A percorrendo
uma distância de 5 unidades):


B C D E F
A 5 4
B 9 6 2
C 8
D 3
E 3

Encontre o percurso mínimo entre A e D


Topo
 Perfil  
 
MensagemEnviado: 28 mar 2016, 21:40 
Offline

Registado: 21 mar 2016, 01:35
Mensagens: 94
Localização: Rio de Janeiro
Agradeceu: 2 vezes
Foi agradecido: 31 vezes
Amigo,

Não seria melhor anexar essa tabela? Não deu pra entender nada.


Topo
 Perfil  
 
MensagemEnviado: 29 mar 2016, 21:28 
Offline

Registado: 28 mar 2016, 18:00
Mensagens: 15
Localização: Santa Catarina
Agradeceu: 6 vezes
Foi agradecido: 0 vez(es)
Na tabela abaixo estão indicadas distâncias entre seis cidades (se não aparece um
número, as cidades não estão conectadas, porém se aparece um número, pode-se ir em
ambas as direções, por exemplo podemos ir da A até B ou de B até A percorrendo
uma distância de 5 unidades):


Encontre o percurso mínimo entre A e D

Grato desde já


Anexos:
Comentário do Ficheiro: Na tabela abaixo estão indicadas distâncias entre seis cidades (se não aparece um
número, as cidades não estão conectadas, porém se aparece um número, pode-se ir em
ambas as direções, por exemplo podemos ir da A até B ou de B até A percorrendo
uma distância de 5 unidades): Encontre o percurso mínimo entre A e D

foto (3).JPG
foto (3).JPG [ 343.32 KiB | Visualizado 2990 vezes ]
Topo
 Perfil  
 
MensagemEnviado: 29 mar 2016, 22:10 
Offline

Registado: 17 jan 2013, 13:36
Mensagens: 2487
Localização: Lisboa
Agradeceu: 31 vezes
Foi agradecido: 1049 vezes
Se desenhar o grafo vai perceber imediatamente qual é a solução. O caminho mais curto entre A e D é o correspondente ao percurso A - B - F - E - D, com comprimento 13. Outros percursos seriam

A - B - D (comprimento 14)
A - B - E - D (comprimento 14)
A - C - E - D (comprimento 15)


Topo
 Perfil  
 
MensagemEnviado: 29 mar 2016, 22:49 
Offline

Registado: 08 jan 2015, 18:39
Mensagens: 930
Localização: Campo Grande - MS - Brasil
Agradeceu: 14 vezes
Foi agradecido: 475 vezes
Boa noite!

Para encontrar caminho mínimo conheço alguns algoritmos, mas acredito ser mais eficiente o algoritmo de Dijkstra.
Código:
INITIALIZE-SINGLE-SOURCE(G, s)
for each vertex v ∈ G.V
   v.d = ∞ // coloca em cada vértice o peso infinito
   v.π = NIL // atribui o 'pai' (pi) de cada vértice como NULO
s.d=0 // este é o vértice de início, atribui peso 0

RELAX(u, v, w) // calcula o peso dos vértices
if v.d > u.d+w(u,v) // se o peso do vértice 'v' (destino) for maior do que a soma do vértice 'u' (origem) com o peso da aresta (distância entre u e v)
   v.d =u.d+w(u,v) // atribui ao vértice destino a soma da origem com o peso da aresta
   v.π = u // atribui como 'pai' (vértice anterior) de 'v' o vértice 'u'

DIJKSTRA(G, w, s)
INITIALIZE-SINGLE-SOURCE(G, s) // inicializa todos os vértices
S=∅ // cria um conjunto S, vazio
Q=G.V // cria um conjunto com todos os vértices
while Q̸ <> ∅ // enquanto o conjunto dos vértices não estiver vazio (diferente de vazio)
   u = EXTRACT-MIN(Q) // retira um vértice do conjunto, o que tiver MENOR peso
   S = S ∪ {u} // insere este vértice no conjunto S
   for each vertex v ∈ G.Adj[u] // para cada vértice adjunto ao vértice retirado, ou seja, para cada vértice onde há um caminho para outro vértice
      RELAX(u, v, w) // aqui faz o 'relaxamento' dos vértices, conforme algoritmo

Usando o algoritmo anterior para todos os vértices, chegamos na seguinte conclusão:
A(0)
B(5) - pai A
C(4) - pai A
D(13) - pai E
E(10) - pai F
F(7) - pai B

Fica a sequência:
A(0)->B(5)->F(7)->E(10)->D(13)
A(0)->C(4)

Se quiser alguma ajuda a mais quanto à execução do algoritmo, só perguntar, ok?

Espero ter ajudado!

_________________
Baltuilhe
"Nós somos o que fazemos repetidamente. Excelência, então, não é um modo de agir, é um hábito." Aristóteles


Topo
 Perfil  
 
Mostrar mensagens anteriores:  Ordenar por  
Fazer Nova Pergunta Responder a este Tópico  [ 5 mensagens ] 

Os Horários são TMG [ DST ]


Quem está ligado:

Utilizadores a ver este Fórum: Nenhum utilizador registado e 0 visitantes


Criar perguntas: Proibído
Responder a perguntas: Proibído
Editar Mensagens: Proibído
Apagar Mensagens: Proibído
Enviar anexos: Proibído

Pesquisar por:
Ir para:  
cron