46 lines
1.1 KiB
Python
46 lines
1.1 KiB
Python
from queue import PriorityQueue
|
|
|
|
# fringe - kolejka priorytetowa przechowująca wierzchołki do odwiedzenia
|
|
fringe = PriorityQueue() # put or get
|
|
|
|
# explored - lista odwiedzonych stanów
|
|
explored = []
|
|
|
|
# istate - stan początkowy
|
|
|
|
|
|
# succ - funkcja następnika
|
|
def succ():
|
|
pass
|
|
|
|
|
|
# goaltest - test spełnienia celu
|
|
def goaltest():
|
|
pass
|
|
|
|
|
|
# f - funkcja wyznaczająca priorytet następników
|
|
def f():
|
|
pass
|
|
|
|
|
|
def graphsearch(fringe, explored, istate, succ, goaltest, f):
|
|
# umieść new node(istate) na fringe
|
|
# loop
|
|
# if fringe jest pusta
|
|
# return false
|
|
# elem = wybierz element z fringe
|
|
# if goal_test(elem.state)
|
|
# return ciąg akcji zbudowany z wykorzystaniem pól parent i action
|
|
# umieść elem na liście explored
|
|
# for (akcja, stan) in succ(elem.state)
|
|
# x = new node(stan)
|
|
# x.parent = elem
|
|
# x.action = akcja
|
|
# p = f(x)
|
|
# if stan nie należy do fringe i nie należy do explored
|
|
# umieść x na fringe zgodnie z priorytetem p
|
|
# else if stan należy do fringe i ma na nim priorytet r > p
|
|
# zastąp węzeł o priorytecie r węzłem o priorytecie p
|
|
pass
|