No funciona el código de busqueda en amplitud (no entra el main)
Publicado por Maxi (1 intervención) el 30/09/2019 14:30:50
Necesito saber porque no ingresa el main el codigo es un ejemplo de un libro.. ¿que puede estar mal o le falta?
Gracias.
codigoPrincipal.py
arbol.py
Gracias.
codigoPrincipal.py
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
from arbol import Nodo
def buscar_solucion_BFS(estado_inicial,solucion):
print ("sols")
solucionado=False
nodos_visitados=[]
nodos_frontera=[]
nodoIniacial= Nodo(estado_inicial)
nodos_frontera.append(nodoIniacial)
while (not solucionado) and len(nodos_frontera)!=0:
nodo=nodos_frontera.pop(0)
nodos_visitados.append(nodo)
if nodo.get_datos()==solucion:
solucionado=True
return nodo
else:
dato_nodo=nodo.get_datos()
hijo=[dato_nodo[1],dato_nodo[0],dato_nodo[2],dato_nodo[3]]
hijo_izquierdo= Nodo(hijo)
if not hijo_izquierdo.en_lista(nodos_visitados)and not hijo_izquierdo.en_lista(nodos_frontera):
nodos_frontera.append(hijo_izquierdo)
hijo=[dato_nodo[0],dato_nodo[2],dato_nodo[1],dato_nodo[3]]
hijo_central= Nodo(hijo)
if not hijo_central.en_lista(nodos_visitados)and not hijo_central.en_lista(nodos_frontera):
nodos_frontera.append(hijo_central)
hijo=[dato_nodo[0],dato_nodo[1],dato_nodo[3],dato_nodo[2]]
hijo_derecho= Nodo(hijo)
if not hijo_derecho.en_lista(nodos_visitados) and not hijo_derecho.en_lista(nodos_frontera):
nodos_frontera.append(hijo_derecho)
nodo.set_hijos([hijo_izquierdo],[hijo_central],[hijo_derecho])
if __name__ == "__main__":
print ("main")
estado_inicial=[4,2,3,1]
solucion= [1,2,3,4]
nodo_solucion=buscar_solucion_BFS(estado_inicial,solucion)
resultado=[]
nodo=nodo_solucion
while nodo.get_padre()!= None:
resultado.append(nodo.get_datos())
nodo=nodo.get_padre()
resultado.append(estado_inicial)
resultado.reverse()
print resultado
arbol.py
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
class Nodo:
print ("arbol")
def __init__(self,datos,hijos=None):
self.datos=datos
self.hijos=None
self.padre=None
self.coste=None
self.set_hijos(hijos)
def set_hijos(self,hijos):
self.hijos=hijos
if self.hijos!= None:
for h in self.hijos:
h.padre=self
def get_hijos(self):
return self.hijos
def get_padre(self):
return self.padre
def set_padre(self,padre):
self.padre=padre
def set_datos(self,datos):
self.datos=datos
def get_datos(self):
return self.datos
def set_coste(self,coste):
self.coste=coste
def get_coste(self):
return self.coste
def igual(self, nodo):
if self.get_datos()==nodo.get_datos():
return True
else:
return False
def en_lista(self, lista_nodos):
en_la_lista=False
for n in lista_nodos:
if self.igual(n):
en_la_lista=True
return en_la_lista
def __str__(self):
return str(self.get_datos())
Valora esta pregunta


0