我目前正在做 A* 算法的作业。我以邻接列表的形式给出了一个图,告诉我哪个节点可以去哪个节点以及距离,起始节点,结束节点。对于 BFS 和 DFS,分别使用队列和堆栈非常简单。为了实现 A* 算法,我还获得了一个 heuristic.csv 文件。然而,这个启发式文件的形式对我来说很奇怪。它有 3 列,节点 ID,ID1、ID2、ID3。对于每一行,它从当前行的节点 ID 通知 ID1/ID2/ID3 的启发式距离。
nodeID, 26059364,418723472,123838209 26059364,100,200,300 26059376,400,500,600 ... ...
例如,100 是节点 26059364 和节点 26059364 之间的启发式距离。我很困惑,因为如果我需要不在列节点 ID(26059364、418723472、123838209)的节点之间的启发式距离,因为只有那里有 3 个 ID。
我目前的想法是使用该 csv 文件并计算每个节点的启发式距离(尝试为每个节点 A、B 找到从节点 A 到节点 B 的最近距离)。但是,我不确定这是否正确,而且时间复杂度会很高。如果可能的话,请为我提供一种可能的算法,或者另一种可用于完成 A* 算法的方法。谢谢。