A *:Rust中的打开和关闭列表[关闭]

问题描述 投票:1回答:1

我正在学习Rust,我很难找出使用A *的N-Puzzle解算器应该使用什么结构。

在这个项目中,我使用树来计算并选择解决N-Puzzle的最佳方法。典型的树看起来像这样:enter image description here每个节点中的数字是计算的f分数,它代表我们在进入最终状态之前可以做的最小移动次数。灰色节点已经探索过节点,它们处于“近距离集”中。绿色节点是解决方案的潜在步骤,它是“开放式”。

在每次迭代中,我们探索具有最低f分数的绿色节点。为了优化在开放集中搜索此节点,我需要在向量/列表/数组中存储所有绿色节点的可变引用。

同时拥有树和相同可变节点列表的最佳方法是什么?

请注意我以后想要使用多个线程。

tree rust a-star
1个回答
0
投票

在对项目的内部可变性,线程和其他一些事情进行了一些研究之后,我找到了一个更优雅的解决方案。

该算法的目标是计算子项,直到找到目标,然后通过父系统返回所有图形并跟踪从一开始就执行的所有移动。我找到了一种方法,没有图表表示,只有openlist和closelist。在这种情况下不需要多个可变引用。如果在每个子节点中,将其父节点的索引存储在关闭列表中(不会更改),则可以返回到开头而不会发生可变性。

enter image description here

我问的答案是没有解决我的问题,我再次对算法进行了研究并再次做了一切。无论如何,谢谢你的答案,我学到了关于Rust的新东西。

© www.soinside.com 2019 - 2024. All rights reserved.