我正在学习Rust,我很难找出使用A *的N-Puzzle解算器应该使用什么结构。
在这个项目中,我使用树来计算并选择解决N-Puzzle的最佳方法。典型的树看起来像这样:每个节点中的数字是计算的f分数,它代表我们在进入最终状态之前可以做的最小移动次数。灰色节点已经探索过节点,它们处于“近距离集”中。绿色节点是解决方案的潜在步骤,它是“开放式”。
在每次迭代中,我们探索具有最低f分数的绿色节点。为了优化在开放集中搜索此节点,我需要在向量/列表/数组中存储所有绿色节点的可变引用。
同时拥有树和相同可变节点列表的最佳方法是什么?
请注意我以后想要使用多个线程。