- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我目前正在使用二维数组来实现贪婪最佳优先搜索来表示网格。我的实现现在返回打开的节点。我正在使用 PriorityQueue。当我返回遍历路径/打开的节点并查看节点时,该算法有时会从网格的一侧跳到另一侧。它应该这样做吗?玩家在遍历网格时跳转到网格另一侧的单元格是没有意义的,因为那里的启发式算法更好,然后再跳回去。我正在使用这个网格:
这些是已经打开的所有节点的(y,x)坐标(注意是y,x代表一个二维数组):
0,0 Goes across the top of the board
0,1
0,2
0,3
0,4
0,5
1,5 Goes down one cell
1,4 goes left
1,6 goes right 2 spaces
0,6 goes up
1,7 goes down the side of the board
2,7 \/
3,7 \/
4,7 \/
5,7 \/
0,7 jumps up across the board
6,7
1,2 jumps up across the board
2,2
3,2
4,2
3,1
4,1
3,0
2,1
5,2
5,1
4,0
2,0
7,7 jumps up across the board
7,6
7,5
6,5
5,5
5,4
4,4
3,4
3,5
最佳答案
如果在将节点添加到优先级队列时跟踪每个节点的父节点,那么您可以认为队列不仅跟踪节点,而且跟踪整个路径段。队列中的每个节点代表一个可行的路径段,该路径段结束于该节点。
例如,当您到达 5,7 时,您确定这条路径是迄今为止最有希望的路径:
(0,0 0,1 0,2 0,3 0,4 0,5 1,5 1,6 1,7 2,7 3,7 4,7) [5,7]
(我已将节点放在 [brackets]
中,并将到达该节点的路径放在 (括号)
中。沿着父链向后产生路径.)
当 5,7 节点没有成功时,将其所有 5,7 的后继节点添加到队列中,然后从队列中拉出下一个节点。在这一点上,事实证明你没有得到 5,7 的后继者之一。相反,启发式函数决定尝试不同的节点:
(0,0 0,1 0,2 0,3 0,4 0,5) [0,6]
它尝试了这个,没有达到目标,然后继续。现在回到考虑 5,7 的后继者之一:
(0,0 0,1 0,2 0,3 0,4 0,5 1,5 1,6 1,7 2,7 3,7 4,7 5,7) [6,7]
等等。
关于java - 给定一个网格,如果启发式更好,最好先搜索跳到整个单元格吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13434590/
几个月前,我做了一个功能,我的应用程序正在等待用户文档并做出相应的响应。直到我对项目进行优化并将其更新到最新版本之前,它一直是一种魅力。 如果存在用户文档,则流将产生该文档并关闭该流。 如果云Fire
Stack Overflow 有几个 examples其中函数首先获得可升级锁,然后通过升级获得独占访问。我的理解是,如果不小心使用,这可能会导致死锁,因为两个线程可能都获得了可升级/共享锁,然后都尝
这个问题在这里已经有了答案: MVC 4 Code First ForeignKeyAttribute on property ... on type ... is not valid (1 个回答
以下是部分代码。我需要在 finally 子句中关闭资源。我需要先调用 closeEntry() 还是 close()?我收到一些错误消息。 Error closing the zipoutjava.
我想使用 RxJS-DOM 观察 mousewheel 事件,这样当第一个事件触发时,我转发它然后删除所有值,直到后续值之间的延迟超过先前指定的持续时间。 我想象的运算符可能看起来像: Rx.DOM.
版本似乎与安装的不同。 我在 npm install 上收到警告 我将二进制文件安装到我的家庭/开发目录中,但它不适用于 sudo。所以我安装了apt。 (注意:我并没有真正安装,我提取并将路径放在/
我正在尝试展示 GAN 网络在某些指定时期的结果。打印当前结果的功能以前与 TF 一起使用。我需要换成 pytorch。 def show_result(G_net, z_, num_epoch, s
我是一名优秀的程序员,十分优秀!