我用Python构建了一个Depth-First-Search脚本,它遍历了一个图形 . 由于我没有最优的排序算法,DFS的可视化看起来有点奇怪 . 我的意思是我的DFS获取节点的顺序是可重现的,但它看起来很奇怪,因为我的图形类在内部逐行读取文本文件并将边(节点的元组)存储在一个集合中 .

当我启动算法时,它会扩展起始节点,查找它的邻居,移动并继续这个但是因为边缘是集合中的元组,有时我的DFS所采用的第一个邻居是底部节点 . 下一次可能是正确的,依此类推 . 这种打破可视化,因为人类会说好,如果我扩展我的节点,收集邻居并加深/向右移动,我将总是加深图表向右,暗示一些具体的顺序 .

My question is: is the solution still correct? 或者在这种情况下应该是DFS,例如走一条直线到右边?必须订购图表中的边缘,然后......

我想实现图形,就像它在数学中定义一样 . 这就是为什么我为边缘的节点和元组(V x V)设置了一个集合 .

每个州的行动是:上,下,左,右 . 只要没有墙/障碍物存在 .

Example

x: wall | s: start | g: goal | o: path taken by the DFS

xxxxxxxxxxxxxxxxxxxxxxxxx
x                       x
x                       x
x  s               goo  x
x  oo                o  x
x   o    ooooo     ooo  x
x   oo  oo   oooo  o    x
x    oooo       oooo    x
xxxxxxxxxxxxxxxxxxxxxxxxx