我已经使用Python构建了一个深度优先搜索脚本,该脚本遍历图形。由于我没有最优的排序算法,DFS的可视化看起来有点奇怪。我的意思是我的DFS获取节点的顺序是可重现的,但它看起来很奇怪,因为我的图形类在内部逐行读取文本文件并将边(节点的元组)存储在一个集合中。
当我启动算法时,它会扩展起始节点,查找它的邻居,移动并继续这个但是因为边缘是集合中的元组,有时我的DFS所采用的第一个邻居是底部节点。下一次可能是正确的,依此类推。这样打破了可视化,因为人类会说确定,如果我扩展我的节点,收集邻居并加深/向右移动,我将总是将图表加深到右边,这意味着一些具体的顺序。
我的问题是:解决方案仍然正确吗?或者在这种情况下应该使用DFS,例如走一条直线到右边?必须对图表中的边缘进行排序,然后......
我想实现图形,就像在数学中定义一样。这就是为什么我为边缘设置了节点和元组(V x V)的集合。
每个州的行动包括: up , down , left , right 。只要没有墙/障碍物存在。
示例:
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