[英]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.