@@ -38,7 +38,7 @@ def menu(primeira_vez=True):
38
38
if (primeira_vez == True ):
39
39
os .system ('clear' )
40
40
print 'Seja bem vindo ao meu programa que simula grafos\n '
41
- print 'A seguir os algoritmos disponiveis :\n '
41
+ print '\n A SEGUIR OS ALGORITMOS DISPONIVEIS :\n '
42
42
print '1) Dijkstra\n 2) Bellman-Ford\n 3) RPF\n 4) Spanning Tree\n 5) SAIR'
43
43
n = input ('Por favor, selecione um algoritmo que vc gostaria de executar:\n ' )
44
44
while (n < 1 or n > 5 ):
@@ -190,7 +190,7 @@ def vizinhos(arestas, vertice, primeira_vez = False):
190
190
191
191
# ----------------------------------------------------------------------ALGORITMOS-----------------------------------------------
192
192
# 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 -----------------
194
194
global g
195
195
global vertices
196
196
global arestas
@@ -275,7 +275,7 @@ def dijkstra(no_inicial = '', no_final = '', quer_somente_o_resultado = False):
275
275
aux = []
276
276
cont = 0
277
277
cabou = False
278
- if quer_somente_o_resultado == False :
278
+ if so_mensagem == True or ( quer_somente_o_resultado == False and so_mensagem == False ) :
279
279
print 'O menor caminho entre ' + no_inicial + ' e ' + no_final + ' eh: ' ,
280
280
aux .append (no_final )
281
281
while cabou == False :
@@ -288,14 +288,15 @@ def dijkstra(no_inicial = '', no_final = '', quer_somente_o_resultado = False):
288
288
cont = a
289
289
aux = aux [::- 1 ]
290
290
291
- if quer_somente_o_resultado == False :
291
+ if so_mensagem == True or ( quer_somente_o_resultado == False and so_mensagem == False ) :
292
292
for i in range (len (aux )):
293
293
if (i == (len (aux )- 1 )):
294
294
print aux [i ]
295
295
else :
296
296
print aux [i ] + ' -> ' ,
297
297
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:'
299
300
300
301
# printar arvore criada para o dijkstra
301
302
t = Graph ()
@@ -326,7 +327,7 @@ def dijkstra(no_inicial = '', no_final = '', quer_somente_o_resultado = False):
326
327
if quer_somente_o_resultado == False :
327
328
plot (t , layout = layout )
328
329
salvar (t , 'dijkstra.png' , 'tree' , lista )
329
- else :
330
+ elif quer_somente_o_resultado == True and so_mensagem == False :
330
331
return t
331
332
332
333
# o algoritmo usado na spanning tree foi o de Kruskal
@@ -483,7 +484,13 @@ def rpf(): # RPF ---------------------------------------------------------------
483
484
g .es ["label" ] = g .es ["weight" ]
484
485
raiz = []
485
486
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
+
487
494
plot (g , layout = "tree" , root = raiz )
488
495
salvar (g , "rpf.png" , "tree" , raiz )
489
496
# ----------------------------------------------------------------------MAIN-----------------------------------------------------
0 commit comments