Python - Circuito Euleriaro

 
Vista:

Circuito Euleriaro

Publicado por Yerson Alexis (1 intervención) el 24/03/2021 23:58:35
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
import random
 
print
print ("Desarrollo Aplicativo")
print
 
Grafo = dict()
Grafo_variable = dict()
nodos = []
Conversion_nodos = []
 
print ('Numero de NODOS')
num_de_nodos = input()
num_de_nodos = int(num_de_nodos)
print ('Ingrese la lista de adyacencia para cada nodo y separe los elementos con comas (,)')
 
 
for i in range (num_de_nodos):
    print
    print ("nodo",i+1)
    nodos = input()
    nodos = str(nodos)
    Conversion_nodos = list(nodos)
    Grafo[i+1] = Conversion_nodos
 
 
Grafo_variable = Grafo
num_aristas = 0
 
num_elementos_list = len(Grafo)
nodo_inicio = random.randint(1,num_elementos_list)
Solucion = []
 
 
print ('El nodo de inicio del circuito es' ,nodo_inicio)
 
valencia_nodos = 0
ultimo_nodo_borrado = 0
 
Solucion.append(nodo_inicio)
for i in Grafo:
    num_aristas += len(Grafo[i])
 
 
num_aristas = num_aristas/2
num_aristas_var = num_aristas
 
while(num_aristas_var != 0):
 
    nodo = nodo_inicio
    valencia_nodos = 0
    check_nodo = 0
 
for i in Grafo_variable[ nodo ]:
    for j in Grafo_variable[ nodo ]:
        if j != 0:
            valencia_nodos += 1
 
 
    if valencia_nodos == 0 & num_aristas_var <= 1:
        for i in Grafo_variable[ Solucion[-1] ]:
            if i == 0:
                Grafo_variable[ Solucion [-1] ][ Grafo_variable[ Solucion [-1] ].index( i ) ] = Solucion[ -2 ]
                break
        for i in Grafo_variable[ Solucion[-2] ]:
            if i == 0:
                Grafo_variable[ Solucion [-2] ][ Grafo_variable[ Solucion [-2] ].index( i ) ] = Solucion[ -1 ]
                break
 
        ultimo_nodo_borrado = Solucion.pop()
        num_aristas_var += 1
        valencia_nodos = 0
 
        for j in Grafo_variable[ Solucion[-1] ]:
            if j != 0:
                valencia_nodos += 1
 
        if valencia_nodos == 1:
            while valencia_nodos == 1:
                for i in Grafo_variable[ Solucion[-1] ]:
                    if i == 0:
                        Grafo_variable[ Solucion [-1] ][ Grafo_variable[ Solucion [-1] ].index( i ) ] = Solucion[ -2 ]
                        break
                for i in Grafo_variable[ Solucion[-2] ]:
                    if i == 0:
                        Grafo_variable[ Solucion [-2] ][ Grafo_variable[ Solucion [-2] ].index( i ) ] = Solucion[ -1 ]
                        break
                ultimo_nodo_borrado = Solucion.pop()
 
                num_aristas_var += 1
                valencia_nodos = 0
 
                for j in Grafo_variable[ Solucion[-1] ]:
                    if j != 0:
                        valencia_nodos += 1
 
            nodo_inicio = Solucion[ -1 ]
            break
 
        else:
            nodo_inicio = Solucion[ -1 ]
            break
 
 
    else:
        if i != 0 and i != ultimo_nodo_borrado:
            ultimo_nodo_borrado = 0
 
            for k in Grafo_variable [ nodo ]:
                if k == i:
                    Grafo_variable[ nodo ][ Grafo_variable[ nodo ].index( k ) ] = 0
 
            for l in Grafo_variable [ i ]:
                if l == nodo:
                    Grafo_variable[ i ][ Grafo_variable[ i ].index( l ) ] = 0
 
            num_aristas_var -= 1
            nodo_inicio = i
            valencia_nodos = 0
            Solucion.append(i)
            break
 
print
print ('El circuito de EULER es:',Solucion)
print
print (Solucion)
print

No me permite imprimir la SOLUCION, ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Jaime
Val: 526
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Circuito Euleriaro

Publicado por Jaime (136 intervenciones) el 29/03/2021 06:08:53
Hola.
Yo veo que tu código lo que hace es crear un grafo. La verdad, yo no soy muy bueno para los grafos. Pero hasta donde llegué debuggeando tu código, el primer problema es que entras a un ciclo infinito en la linea 48.

1
2
3
4
5
6
num_aristas_var = num_aristas
 
while(num_aristas_var != 0):
    nodo = nodo_inicio
    valencia_nodos = 0
    check_nodo = 0

Corrija y ya veremos si te sigue el problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Circuito Euleriaro

Publicado por tincopasan (1082 intervenciones) el 29/03/2021 21:44:32
partamos de la base que no es real como grafo ni como nodos, está usando solamente listas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar