python - BFS与python,当endPoint远离startPoint时找不到解决方案
问题描述
BFS 的主要算法如下。当 endRow 和 endColumn 远离 startRow 和 startColumn 时,需要很长时间才能在 10x10 网格中找到 startPoint 和 endPoint 之间的路径。关于如何减少运行时间的任何合乎逻辑的解释?
nums = Queue.Queue()
nums.put("")
add = ""
maze = createMaze()
maze[endRow][endColumn] = "O"
while not findEnd(maze, add):
add = nums.get()
#print(add)
for j in ["L", "R", "U", "D"]:
put = add + j
if valid(maze, put):
nums.put(put)
解决方案
您的实现细节看起来有点模糊,但据我所知,您没有任何类型的visited
数组可以跟踪您已经访问过的单元格,这会将您的算法从 O(N^2) 转换为疯狂的东西O(4^N) (其中 N 是数组的高度/宽度,假设它们相等)。您只需要保留这样的数组并在将它们添加到队列时标记值,并确保下次看到它们时不要再次添加它们。
推荐阅读
- python - 结合两列的值计数
- javascript - $(...).tagsinput 不是函数
- c++ - 如何在 C++ 中通过表情符号分割字符串
- android-studio - ¿ 如何在 CustomInfoWindow 中滑动模块?科特林
- c - 应用程序的运行地址,后跟堆和栈扩展
- sql - 上个月 MTD
- javascript - 当将函数从 javascript 迁移到 php 并给出相同的输入数据时,结果是不同的
- python - 使用 Poetry 对“找不到分发”pkg_resources 进行故障排除
- java - 如何为这种异步方法编写单元测试?
- python - 如何导出 Python 文件和文本文件变量?