shortest-path - 为什么矩形的两个角之间的路径看起来很奇怪?
问题描述
我编写了一个小程序来使用A* 算法找到两点之间的最短路径。
我将矩形中的每 10 个像素创建一个节点(宽度:100 个节点,高度:50 个节点)并将其与周围的 4 个节点(顶部、左侧、底部、右侧)连接起来。程序必须找到从左上角到右下角的最快路径。结果是这样的:
起初我想知道为什么这实际上是最快的方法,但后来我想我应该添加对角线连接。这是后来的样子:
到达终点需要 100 个节点,大约需要 100 个节点。1193 像素。这让我更加恼火,现在我想知道我的程序是否错误,或者这实际上是否是最短的方法。
你怎么看?
像第一张一样走同样的路,最后只走对角线不是更快吗?
解决方案
如果没有对角线移动,最快的路径将采取(width-1)+(height-1)
移动到达终点。但是对于对角线,它会更少。的移动,但我们只能进行min(width-1,height-1)
对角线移动,其余移动必须是非对角线(在这种特殊情况下向右)。因此,这两张图片确实显示了您的代码似乎正确的最短路径。
推荐阅读
- angular - 构建 Angular 应用程序并放在服务器上
- c# - 如何针对“从查询到输出快捷方式”优化此方法
- c# - Unity3d将刚体添加到MenuItem中的对象
- c# - 自定义 ClickOnce 安装路径
- react-native-android - 是否可以使用离线 pc 为 android 编译一个 react-native 应用程序
- php - 删除最后一个标点符号形式的 wordpress 类别列表
- r - R (data.table) 中的 fread() 为“”返回空白
- r - dll 和 R DLLRegisteredRoutines 为空
- android - FAILURE:构建失败,出现异常 React-native
- python - 搜索包含数字的字符串python