Skip to content

Commit b19123f

Browse files
RPF agora mostra o custo total de cada caminho
1 parent 79c9b44 commit b19123f

File tree

1 file changed

+14
-7
lines changed

1 file changed

+14
-7
lines changed

trabalho3.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ def menu(primeira_vez=True):
3838
if (primeira_vez == True):
3939
os.system('clear')
4040
print 'Seja bem vindo ao meu programa que simula grafos\n'
41-
print 'A seguir os algoritmos disponiveis:\n'
41+
print '\nA SEGUIR OS ALGORITMOS DISPONIVEIS:\n'
4242
print '1) Dijkstra\n2) Bellman-Ford\n3) RPF\n4) Spanning Tree\n5) SAIR'
4343
n = input('Por favor, selecione um algoritmo que vc gostaria de executar:\n')
4444
while (n < 1 or n > 5):
@@ -190,7 +190,7 @@ def vizinhos(arestas, vertice, primeira_vez = False):
190190

191191
# ----------------------------------------------------------------------ALGORITMOS-----------------------------------------------
192192
# caso queira, pode retornar a arvore gerada pelo dijkstra
193-
def dijkstra(no_inicial = '', no_final = '', quer_somente_o_resultado = False): # DIJKSTRA --------------------------------------
193+
def dijkstra(no_inicial = '', no_final = '', quer_somente_o_resultado = False, so_mensagem = False): # DIJKSTRA -----------------
194194
global g
195195
global vertices
196196
global arestas
@@ -275,7 +275,7 @@ def dijkstra(no_inicial = '', no_final = '', quer_somente_o_resultado = False):
275275
aux = []
276276
cont = 0
277277
cabou = False
278-
if quer_somente_o_resultado == False:
278+
if so_mensagem == True or (quer_somente_o_resultado == False and so_mensagem == False):
279279
print 'O menor caminho entre ' + no_inicial + ' e ' + no_final + ' eh: ',
280280
aux.append(no_final)
281281
while cabou == False:
@@ -288,14 +288,15 @@ def dijkstra(no_inicial = '', no_final = '', quer_somente_o_resultado = False):
288288
cont = a
289289
aux = aux[::-1]
290290

291-
if quer_somente_o_resultado == False:
291+
if so_mensagem == True or (quer_somente_o_resultado == False and so_mensagem == False):
292292
for i in range(len(aux)):
293293
if (i == (len(aux)-1)):
294294
print aux[i]
295295
else:
296296
print aux[i] + ' -> ',
297297
print 'Com o custo total de: ' + str(menor_custo[no_final])
298-
print 'A seguir a arvore de caminho minimo criada pelo DIJKSTRA:'
298+
if (quer_somente_o_resultado == False and so_mensagem == False):
299+
print 'A seguir a arvore de caminho minimo criada pelo DIJKSTRA:'
299300

300301
# printar arvore criada para o dijkstra
301302
t = Graph()
@@ -326,7 +327,7 @@ def dijkstra(no_inicial = '', no_final = '', quer_somente_o_resultado = False):
326327
if quer_somente_o_resultado == False:
327328
plot(t, layout=layout)
328329
salvar(t, 'dijkstra.png', 'tree', lista)
329-
else:
330+
elif quer_somente_o_resultado == True and so_mensagem == False:
330331
return t
331332

332333
# o algoritmo usado na spanning tree foi o de Kruskal
@@ -483,7 +484,13 @@ def rpf(): # RPF ---------------------------------------------------------------
483484
g.es["label"] = g.es["weight"]
484485
raiz = []
485486
raiz.append(no_inicial)
486-
print 'A arvore a seguir mostra o menor caminho entre ' + no_inicial + ' e todos os outros vertices do grafo que o senhor passou'
487+
print 'A arvore a seguir mostra o menor caminho entre ' + no_inicial + ' e todos os outros vertices do grafo'
488+
489+
# printar na tela o menor caminho entre todos os vertices
490+
for v in vertices:
491+
if v != no_inicial:
492+
dijkstra(no_inicial, v, True, True)
493+
487494
plot(g, layout = "tree", root = raiz)
488495
salvar(g, "rpf.png", "tree", raiz)
489496
# ----------------------------------------------------------------------MAIN-----------------------------------------------------

0 commit comments

Comments
 (0)