|
| 1 | +#!/usr/bin/python |
| 2 | + |
| 3 | +# DANIEL GOBBI BERGHOLZ 16/0004551 |
| 4 | +# TRABALHO 3 FUNDAMENTOS DE REDES 1 |
| 5 | + |
| 6 | +from igraph import * |
| 7 | +import os |
| 8 | + |
| 9 | +# variavel global para ir armazenando decisoes do usuario |
| 10 | +n = 0 |
| 11 | + |
| 12 | +# criar grafo |
| 13 | +g = Graph() |
| 14 | + |
| 15 | +''' |
| 16 | +g.add_vertices(4) |
| 17 | +g.add_edges([(0,1), (1,2), (0,2), (2,3)]) |
| 18 | +g.vs["name"] = ["v0", "v1", "v2", "v3"] |
| 19 | +g.es["weight"] = [1,2,3,4] |
| 20 | +
|
| 21 | +# plotar grafo |
| 22 | +g.vs["label"] = g.vs["name"] |
| 23 | +g.es["label"] = g.es["weight"] |
| 24 | +
|
| 25 | +layout = g.layout("kk") |
| 26 | +
|
| 27 | +print (g) |
| 28 | +plot(g, layout = layout) |
| 29 | +''' |
| 30 | + |
| 31 | +def menu(primeira_vez=True): |
| 32 | + if (primeira_vez == True): |
| 33 | + os.system('clear') |
| 34 | + print 'Seja bem vindo ao meu programa que simula grafos\n' |
| 35 | + print 'A seguir os algoritmos disponiveis:\n' |
| 36 | + print '1) Dijkstra\n2) Bellman-Ford\n3) RPF\n4) Spanning Tree\n5) SAIR' |
| 37 | + global n |
| 38 | + n = input('Por favor, selecione um algoritmo que vc gostaria de executar:\n') |
| 39 | + while (n < 1 or n > 5): |
| 40 | + n = input('Escolha um numero valido (entre 1 e 5):\n') |
| 41 | + |
| 42 | +def criar_grafo(): |
| 43 | + print 'Agora iremos criar seu grafo de testes\n' |
| 44 | + y = raw_input('Voce gostaria de carregar um grafo a partir de um arquivo .DOT? (s/n)\n') |
| 45 | + if (y == 's'): |
| 46 | + print 'kk eae men' |
| 47 | + # fazer algo aqui depois |
| 48 | + else: |
| 49 | + x = input('Quantos vertices tem seu grafo?\n') |
| 50 | + g.add_vertices(x) |
| 51 | + lista = [] # lista auxiliar |
| 52 | + for i in range(g.vcount()): |
| 53 | + lista.append("v" + str(i)) |
| 54 | + g.vs["name"] = lista |
| 55 | + lista = [] |
| 56 | + print 'Agora iremos construir as arestas deste grafo\nPara parar de criar arestas basta nao digitar valor e apertar enter\n' |
| 57 | + while True: |
| 58 | + try: |
| 59 | + y, z = input('Escreva um vertice de origem e um de destino (dois valores separados por virgula)\n') |
| 60 | + except SyntaxError: |
| 61 | + y = z = None |
| 62 | + if ((y != None) and (z != None)): |
| 63 | + if((y > (g.vcount() - 1)) or ((z > (g.vcount() - 1)))): |
| 64 | + print 'Voce digitou um numero invalido de vertice. Seu grafo tem ' + str(g.vcount()) + ' vertices.\n' |
| 65 | + else: |
| 66 | + g.add_edges([(y, z)]) |
| 67 | + w = input('Qual o peso desta aresta?\n') |
| 68 | + lista.append(w) |
| 69 | + else: |
| 70 | + g.es["weight"] = lista |
| 71 | + break |
| 72 | + g.vs["label"] = g.vs["name"] |
| 73 | + g.es["label"] = g.es["weight"] |
| 74 | + layout = g.layout("kk") |
| 75 | + print 'Grafo criado com sucesso!' |
| 76 | + plot(g, layout=layout) |
| 77 | + |
| 78 | +# ----------------------------------------------------------------------ALGORITMOS----------------------------------------------------- |
| 79 | +def dijkstra(grafo, no_inicial): |
| 80 | + |
| 81 | + |
| 82 | + |
| 83 | + |
| 84 | +# ----------------------------------------------------------------------MAIN----------------------------------------------------------- |
| 85 | +def main(): |
| 86 | + global n |
| 87 | + menu() |
| 88 | + while (n != 5): |
| 89 | + criar_grafo() |
| 90 | + menu(False) |
| 91 | + |
| 92 | +if __name__ == "__main__": |
| 93 | + main() |
0 commit comments