前提・実現したいこと
深さ優先探索でゴールにたどり着けるような結果にしたいです。
赤の四角がスタートで緑がゴールです。
オープンリストとクローズリストで管理したいです。
発生している問題・エラーメッセージ
深さ優先探索のアルゴリズムは理解しているのですが、コードがいまいち分からず書けません。
オープンリストが空ではないときにwhile文で回し、オープンリストから先頭の要素を取り出す。そしてクローズリストの先頭に追加する。
今回の場合、壁を1にしたので初めの0を検索する方法を色々試したのですが、うまくいきません。
該当のソースコード
python
ソースコード
import numpy as np
import matplotlib.pyplot as plt
迷路を定義
maze = np.array(
[
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1],
[1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1],
[1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1],
[1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1],
[1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1],
[1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1],
[1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1],
[1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
]
)
maze1=[]
start = (y1, x1)
goal = (y2, x2)
plt.plot(start[1], start[0], "D", color="tab:red", markersize=10)
plt.plot(goal[1], goal[0], "D", color="tab:green", markersize=10)
p = (y1, x1)
q = (y2, x2)
plt.quiver(p[1], p[0], (q[1]-p[1]), (q[0]-p[0]), angles='xy', scale_units='xy', scale=1)
height, width = maze.shape
plt.imshow(maze, cmap="binary")
plt.gca().set_aspect("equal")
plt.xticks(rotation=90)
plt.xticks(np.arange(width), np.arange(width))
plt.yticks(np.arange(height), np.arange(height))
plt.show()
あなたの回答
tips
プレビュー