A *:Rust中的打开和关闭列表[关闭]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了A *:Rust中的打开和关闭列表[关闭]相关的知识,希望对你有一定的参考价值。
我正在学习Rust,我很难找出使用A *的N-Puzzle解算器应该使用什么结构。
在这个项目中,我使用树来计算并选择解决N-Puzzle的最佳方法。典型的树看起来像这样:每个节点中的数字是计算的f分数,它代表我们在进入最终状态之前可以做的最小移动次数。灰色节点已经探索过节点,它们处于“近距离集”中。绿色节点是解决方案的潜在步骤,它是“开放式”。
在每次迭代中,我们探索具有最低f分数的绿色节点。为了优化在开放集中搜索此节点,我需要在向量/列表/数组中存储所有绿色节点的可变引用。
同时拥有树和相同可变节点列表的最佳方法是什么?
请注意我以后想要使用多个线程。
在对项目的内部可变性,线程和其他一些事情进行了一些研究之后,我找到了一个更优雅的解决方案。
该算法的目标是计算子项,直到找到目标,然后通过父系统返回所有图形并跟踪从一开始就执行的所有移动。我找到了一种方法,没有图表表示,只有openlist和closelist。在这种情况下不需要多个可变引用。如果在每个子节点中,将其父节点的索引存储在关闭列表中(不会更改),则可以返回到开头而不会发生可变性。
我问的答案是没有解决我的问题,我再次对算法进行了研究并再次做了一切。无论如何,谢谢你的答案,我学到了关于Rust的新东西。
以上是关于A *:Rust中的打开和关闭列表[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
Rust 闭包和 Haskell lambda 有啥区别? [关闭]
Rust闭包和Haskell lambda有什么区别? [关闭]