繁体   English   中英

在图中编码连接的节点

[英]coding connected nodes in graph

我正在尝试在Java中创建一个具有不同节点的图形。 一些节点将连接到其他节点,而另一些则不会。 如果它们已连接,则该节点的某个布尔值将为true,而另一个变量将保存与其连接的节点的值。

...关于你们认为是解决此问题的最佳方法的任何建议?

表示图形的两种最常见方法是邻接矩阵和邻接表。 令n为节点数。

邻接矩阵A是布尔值的nxn矩阵,因此,如果节点i和j连接,则A(i,j)= 1,否则,则为0。

在每个节点的邻接列表表示中,您将维护一个与其连接(相邻)的节点的列表。

现在的问题是您要如何处理图形。 如果这很简单,则可以自己滚动。 如果没有,您可能想在网络上戳一个Java库来处理图形。 提到了JGraphT

如果要使用邻接矩阵,则可以轻松地在Java中将其表示为bool或int的2D数组。 您将需要给每个节点一个索引。 最简单的方法是将Node对象始终以相同的顺序放置在数组中。 因此,您实际上将拥有两个数据结构:Nodes数组(它们是表示您的节点实际上是什么的对象)和邻接矩阵,该矩阵通过其索引来引用Nodes。

填充矩阵后,如果可以通过将所有列(或行)中的值(0和1)相加并找到最大值,轻松找到与大多数其他节点连接的节点。 希望这可以帮助。

有两种用于存储图形的标准模型。 汤姆描述的一个是邻接表 另一个将是独立的邻接矩阵

如果您关心效率,请研究情况的稀疏性(矩阵越多,边缘的性能越友好)。 如果性能不是问题,请使用您喜欢的程序...

创建一个Node类,并为其提供Node类型的实例变量。 将其初始化为null-如果所述节点连接到另一个节点,则此实例变量将引用它;否则,它将引用它。 否则,它将保持为空。

如果该节点可能连接到多个节点(这在图形中是很常见的),则使用ArrayList存储该节点连接到的所有节点。

可能是' 良好的Java图形算法库的副本 '。 简短的答案是看JGraphT

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM