Skip to content

Commit 948cb44

Browse files
Finalizando spanning tree
1 parent 1c6bd17 commit 948cb44

File tree

1 file changed

+73
-5
lines changed

1 file changed

+73
-5
lines changed

trabalho3.py

Lines changed: 73 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,41 @@ def vizinhos(arestas, vertice, primeira_vez = False):
174174
return predecessor, adjacentes
175175
if (primeira_vez == False):
176176
return adjacentes
177+
178+
# funcao que checa se ha ciclo fechado
179+
def checar_ciclos(arestas, vertices):
180+
tem_ciclo = False
181+
vizinhos = {} # vertice: arestas vizinhas deste vertice
182+
loop = False
183+
cont = 0
184+
185+
# loop para se adicionar os vizinho de todos os vertices no dicionario "vizinhos"
186+
while cont < len(vertices):
187+
lista = []
188+
for a in arestas:
189+
if vertices[cont] in a:
190+
lista.append(a)
191+
vizinhos[vertices[cont]] = lista
192+
cont = cont + 1
193+
194+
for v in vizinhos:
195+
for a in vizinhos[v]:
196+
cont = 0
197+
loop = True
198+
lista = []
199+
lista2 = []
200+
lista.append(a)
201+
lista2.append(v)
202+
while loop == True:
203+
for i in range(2):
204+
if(lista2[cont] != lista[cont][i]):
205+
lista.append(lista[cont][i])
206+
207+
cont = cont + 1
208+
209+
210+
return tem_ciclo
211+
177212
# ----------------------------------------------------------------------ALGORITMOS-----------------------------------------------
178213
def dijkstra():
179214
global g
@@ -322,7 +357,7 @@ def spanning_tree():
322357
global vertices
323358
global arestas
324359
global pesos
325-
antes = {}
360+
antes = {} # aresta: peso
326361
depois = {}
327362
arestas2 = []
328363
pesos2 = []
@@ -332,12 +367,45 @@ def spanning_tree():
332367
print 'ARESTAS: ' + str(arestas)
333368
print 'PESOS: ' + str(pesos)
334369

335-
for i in range(len(vertices)):
370+
# ordenar os pesos em ordem crescente e adicionar as 2 primeiras arestas na arvore final
371+
for i in range(len(arestas)):
336372
antes[arestas[i]] = pesos[i]
337373
print antes
338-
menor = pesos
339-
menor.sort()
340-
arestas2.append
374+
menor_pesos = pesos
375+
menor_pesos.sort()
376+
menor_arestas = []
377+
for p in menor_pesos:
378+
for a in arestas:
379+
if(antes[a] == p):
380+
menor_arestas.append(a)
381+
for i in range(2):
382+
arestas2.append(menor_arestas[i])
383+
pesos2.append(menor_pesos[i])
384+
385+
# comecar o algoritmo de kruskal
386+
cabou = False
387+
cont = 2
388+
while cabou == False:
389+
lista = []
390+
arestas2.append(menor_arestas[cont])
391+
n_arestas = len(arestas2)
392+
for i in range(len(arestas2)):
393+
for j in range(2):
394+
lista.append(arestas2[i][j])
395+
lista2 = []
396+
for v in lista:
397+
if v not in lista2:
398+
lista2.append(v)
399+
n_vertices = len(lista2)
400+
graus = [0]*(len(lista2))
401+
for i in range(len(lista2)):
402+
for j in range(len(lista)):
403+
if lista[j] == lista2[i]:
404+
graus[lista2[i]] = graus[lista2[i]] + 1
405+
406+
407+
408+
341409
'''
342410
t = Graph()
343411
t.add_vertices(len(vertices))

0 commit comments

Comments
 (0)