Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 18 additions & 2 deletions busquedas.py
Original file line number Diff line number Diff line change
Expand Up @@ -283,5 +283,21 @@ def busqueda_A_estrella(problema, heuristica):
@return Un objeto tipo Nodo con la estructura completa

"""
raise NotImplementedError('Hay que hacerlo de tarea \
(problema 2 en el archivo busquedas.py)')
frontera = []
heapq.heappush(frontera, (0, Nodo(problema.x0))) # (costo estimado, nodo)
costos = {problema.x0: 0} # Guarda el costo real del mejor camino a cada nodo

while frontera:
_, nodo = heapq.heappop(frontera)

if problema.es_meta(nodo.estado):
nodo.nodos_visitados = problema.num_nodos
return nodo # Se encontró la solución

for hijo in nodo.expande(problema.modelo):
nuevo_costo = hijo.costo
if hijo.estado not in costos or nuevo_costo < costos[hijo.estado]:
costos[hijo.estado] = nuevo_costo
heapq.heappush(frontera, (nuevo_costo + heuristica(hijo), hijo))

return None # No se encontró solución
62 changes: 31 additions & 31 deletions ocho_puzzle.py
Original file line number Diff line number Diff line change
Expand Up @@ -128,46 +128,46 @@ def probando(pos_ini):
print(Modelo8puzzle.dibuja(pos_ini))

# ------- BFS -----------
print("---------- Utilizando BFS -------------")
problema = Ocho_puzzle(pos_ini)
solucion = busquedas.busqueda_ancho(problema)
print(solucion)
print("Explorando {} nodos\n\n".format(solucion.nodos_visitados))
# print("---------- Utilizando BFS -------------")
# problema = Ocho_puzzle(pos_ini)
# solucion = busquedas.busqueda_ancho(problema)
# print(solucion)
# print("Explorando {} nodos\n\n".format(solucion.nodos_visitados))

# ------- DFS -----------
print("---------- Utilizando DFS -------------")
problema = Ocho_puzzle(pos_ini)
solucion = busquedas.busqueda_profundo(problema, 50)
print(solucion)
print("Explorando {} nodos\n\n".format(solucion.nodos_visitados))
# print("---------- Utilizando DFS -------------")
# problema = Ocho_puzzle(pos_ini)
# solucion = busquedas.busqueda_profundo(problema, 50)
# print(solucion)
# print("Explorando {} nodos\n\n".format(solucion.nodos_visitados))

# ------- IDS -----------
print("---------- Utilizando IDS -------------")
problema = Ocho_puzzle(pos_ini)
solucion = busquedas.busqueda_profundidad_iterativa(problema, 50)
print(solucion)
print("Explorando {} nodos\n\n".format(solucion.nodos_visitados))

# ------- UCS -----------
print("---------- Utilizando UCS -------------")
problema = Ocho_puzzle(pos_ini)
solucion = busquedas.busqueda_costo_uniforme(problema)
print(solucion)
print("Explorando {} nodos\n\n".format(solucion.nodos_visitados))

# # ------- A* con h1 -----------
# print("---------- Utilizando A* con h1 -------------")
# print("---------- Utilizando IDS -------------")
# problema = Ocho_puzzle(pos_ini)
# solucion = busquedas.busqueda_A_estrella(problema, h_1)
# solucion = busquedas.busqueda_profundidad_iterativa(problema, 50)
# print(solucion)
# print("Explorando {} nodos".format(solucion.nodos_visitados))
# print("Explorando {} nodos\n\n".format(solucion.nodos_visitados))

# # ------- A* con h2 -----------
# print("---------- Utilizando A* con h2 -------------")
# ------- UCS -----------
# print("---------- Utilizando UCS -------------")
# problema = Ocho_puzzle(pos_ini)
# solucion = busquedas.busqueda_A_estrella(problema, h_2)
# solucion = busquedas.busqueda_costo_uniforme(problema)
# print(solucion)
# print("Explorando {} nodos".format(solucion.nodos_visitados))
# print("Explorando {} nodos\n\n".format(solucion.nodos_visitados))

# ------- A* con h1 -----------
print("---------- Utilizando A* con h1 -------------")
problema = Ocho_puzzle(pos_ini)
solucion = busquedas.busqueda_A_estrella(problema, h_1)
print(solucion)
print("Explorando {} nodos".format(solucion.nodos_visitados))

# ------- A* con h2 -----------
print("---------- Utilizando A* con h2 -------------")
problema = Ocho_puzzle(pos_ini)
solucion = busquedas.busqueda_A_estrella(problema, h_2)
print(solucion)
print("Explorando {} nodos".format(solucion.nodos_visitados))


if __name__ == "__main__":
Expand Down
Loading