在实现我的 Dijkstra 算法时,我对如何初始化我的指针(边缘)类感到困惑。Node 类包含一个 Pointer 的 ArrayList,称为邻居,它们表示 Node 任意一侧的 4 个邻居。我的 Pointer 类将目标节点(它指向的位置)作为构造函数中的参数。它们都被添加到 36x25 二维节点数组中。
到目前为止,我正在使用 setNeighbors() 方法遍历在 36x25 网格上构建的每个节点,一旦所有节点都构建完成,它会根据每个可能的节点在网格中的相关性搜索多达 4 次(一个角落有 2 个邻居),并在通过比较 (x,y) 坐标找到邻居后中断。
这个初始化过程对于我的目的来说太长了,所以我想知道是否有人可以向我展示一种更有效的初始化方式。
我有一个类节点:
import java.util.ArrayList;
public class Node implements Comparable<Node>
{
public int x;
public int y;
public ArrayList<Pointer> neighbors = new ArrayList<Pointer>();
public double minDistance = Double.POSITIVE_INFINITY;
public Node previous;
public Node(int xPos, int yPos)
{
x = xPos;
y = yPos;
}
public int compareTo(Node other)
{
return Double.compare(minDistance, other.minDistance);
}
}
还有一个类指针:
public class Pointer
{
public final Node target;
public final double weight = 1;
public Pointer(Node targ)
{
target = targ;
}
}