我有一个图数据结构,它是我从本文中复制的-http://www.dreamincode.net/forums/topic/377473-graph-data-structure-tutorial/
我想在上面实现BFS算法。我不完全确定如何--我看到/读到的大多数关于该算法的文章都使用了更简单的数据结构。该数据结构存储顶点的散列映射,并将其字符串表示形式作为键,然后还存储边的散列映射,使用整数作为键。
这是一个我在尝试实现BFS示例时遇到的问题的例子-
null
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);
}
}
}
}
null
我需要调用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);
}
}
}
}
本文向大家介绍图的边和顶点,包括了图的边和顶点的使用技巧和注意事项,需要的朋友参考一下 图是一组称为节点或顶点的点,它们由一组称为edge的线互连。图形或图形理论的研究是数学,工程学和计算机科学领域中许多学科的重要组成部分。 图论 定义-图形(表示为G =(V,E))由一组非空的顶点或节点V和一组边缘E组成。顶点a 表示边缘的端点。一条边连接两个顶点a,b ,并由其连接的一组顶点表示。 示例-让我
图的变换有什么算法或名称吗?可以把边变换成顶点,顶点变换成边?这样我们就可以得到一个新的图形或者类似的问题?我不确定这是否真的有意义,但我会很高兴,如果你能给我任何关于这样一个问题的提示。
GraphX暴露保存在图中的顶点和边的RDD。然而,因为GraphX包含的顶点和边拥有优化的数据结构,这些数据结构提供了额外的功能。顶点和边分别返回VertexRDD和EdgeRDD。这一章 我们将学习它们的一些有用的功能。 VertexRDDs VertexRDD[A]继承自RDD[(VertexID, A)]并且添加了额外的限制,那就是每个VertexID只能出现一次。此外,VertexRDD
所以我正在研究这个问题: 这是我目前所掌握的 首先,我想对我的答案再作核实。我对有向图不是那么熟悉,对算法的效率/复杂度也不是特别熟练。我想我做得对,但如果我需要的话,我想要一些帮助。我也在寻找任何想法,使它更有效率。这些是我脑海中最先出现的算法,所以我觉得可能有更好的方法来实现它。 谢谢
一个简单的背景:我正在构建一个语义图,使用带有邻接表的BGL有向图: 我需要做的事情之一,是处理一个较小的图(子图)到我的主图。 暗示我的lambda捕获参数应该是一对(我猜是一个实际的边?)。 所以,我的问题是:我怎样才能发现在顶点的外边中是否存在类似的边呢?
我有一个由顶点和边表示的图的文本文件(邻接列表)。有没有一个工具来创建一个图形的可视化,它可以读取一个文本文件? 文本文件的格式为 它是一个无向图。0 1 2表示0个邻居1,0个邻居2,反之亦然,因为它是无向的. 谢谢 鲁珀特