gpt4 book ai didi

java - 图顶点和边作为邻居的 BFS

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:58:50 26 4
gpt4 key购买 nike

我有一个图形数据结构,我从这篇文章中复制了它 - http://www.dreamincode.net/forums/topic/377473-graph-data-structure-tutorial/

我想在上面实现 BFS 算法。我不完全确定如何——我看到/读到的关于该算法的大多数文章都使用更简单的数据结构。此数据结构存储顶点的 HashMap ,并将其字符串表示形式作为键,然后还存储边的 HashMap ,使用整数作为键。

这是我在尝试实现我发现的 BFS 示例时遇到的问题示例 -

public void bfs(Vertex rootNode){

Queue q = new LinkedList();
q.add(rootNode);
rootNode.visited=true;
while(!q.isEmpty()){
Vertex n = (Vertex)q.poll();
System.out.print(n.toString() + " ");
for(Vertex adj : n.getNeighbors()){ -- Here's my problem. Get neighbors doesn't return a list of verts, it returns a list of edges.
if(!adj.visited){
adj.visited=true;
q.add(adj);
}
}
}

}

我是否需要调用 getNeighbors 然后遍历邻域中的每个唯一顶点?

谢谢。

最佳答案

您确实需要调用 getNeighbors 并遍历每条边(因此遍历每个顶点)。

public void bfs(Vertex rootNode){

Queue q = new LinkedList();
q.add(rootNode);
rootNode.visited=true;
while(!q.isEmpty()){
Vertex n = (Vertex)q.poll();
System.out.print(n.toString() + " ");
for(Edge edge : n.getNeighbors()){
Vertex adj = edge.getNeighbor(n);
if(!adj.visited){
adj.visited=true;
q.add(adj);
}
}
}

}

关于java - 图顶点和边作为邻居的 BFS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40403335/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com