나는 폭 우선으로 확장하고, 노드를 다시 방문하지 않으며, 목표 노드를 찾았는지 여부를 감지하는 경로 찾기 알고리즘을 작성해야한다. 그러나 내가 고민하는 주요한 점은 시작 노드에서 목표 노드까지의 실제 경로 인 솔루션을 찾는 것입니다. 기본적으로 모든 것이 완벽하게 작동하지만 시작 노드에서 목표 노드로 실제 경로를 반환하는 방법을 모르겠습니다.파이썬에서 폭스 우선 검색 알고리즘을 만들었습니다. 솔루션을 반환하는 방법을 모르겠다
그건 그렇고, 궁금한 점이 있으면, 이것은 과제가 아닙니다. 나는 스스로 길 찾기 알고리즘 (그리고 인공 지능)을 스스로 가르치고 있으며 너비 우선 탐색 알고리즘을 다시 만들려고 노력하고있다. 따라서 나는 의사 코드 (psuedocode)를 환영한다. (내가하고 싶은 것을 말해주기 때문에 코드를 많이 배우기 위해 직접 코드를 만들 수있다.)
솔루션 내 알고리즘으로 시작 노드에서 끝 노드로)? 내 전체 알고리즘을 다시 작성해야 또는 내 폭 우선 탐색 알고리즘 모두의
import collections
def bfs(graph,start, end):
path = collections.deque()
trail = collections.deque()
solution = collections.deque()
path.append(start)
# A series of visited nodes
trail.append(start)
if start == end:
return path
while True:
for node in graph[start]:
print node
# Adds node to path if it is not visited already
if node not in trail:
path.append(node)
trail.append(node)
print path
#Removes parent node after all children added to path (by removing the left of the path)
path.popleft()
start = path.popleft()
path.appendleft(start)
print "****Node Scan Completed:****"
print path
# If goal node is reached
if start == end:
print "----------------------Final Results:----------------------"
print trail
print path
return solution
print "Final Results:"
print trail
print path
return None
graph = { "a" : [],
"b" : ["a"],
"c" : ["a"],
"d" : ["b","c","e"],
"e" : ["h","r"],
"f" : ["c","g"],
"g" : [],
"h" : ["p","q"],
"p" : ["q"],
"q" : [],
"r" : ["f"],
"s" : ["d","e","p"]
}
print bfs(graph,'s','g')
많은 도움이됩니다.이 코드를 학습하고 이에 대해 배우게됩니다. 고맙습니다! – user3377126