表示邻接 matrix/list
Representing an adjacency matrix/list
我很难想出一个合适的数据结构来表示无向图的邻接矩阵。
我希望能够从这些图中获取节点并将它们插入数组中的随机位置,然后 "score" 根据它们设法使相邻节点分开的程度来插入数组。即如果节点 A 和节点 B 在我的图表中连接,并且数组将它们彼此相邻放置,+1 将添加到数组的分数,得分最低的数组是最好的。
那么,什么是最好的数据结构来表示一组节点,以及集合中每个节点的相邻节点?
如果我理解你的问题,我认为它不是很清楚。
对于邻接矩阵,我认为最好的方法是数组。您可以访问 O(1) 中的每个位置,并且由于它是无向图,因此应该很容易创建。见下图
0 --- 1------5---6
| \ \ | /
| \ \ | /
2 3----4---7
0 1 2 3 4 5 6 7
-----------------
0 | 0 1 1 1 0 0 0 0
1 | 1 0 0 0 1 1 0 0
2 | 1 0 0 0 0 0 0 0
3 | 1 0 0 0 1 0 0 0
4 | 0 1 0 1 0 0 0 1
5 | 0 1 0 0 0 0 1 1
6 | 0 0 0 0 0 1 0 1
7 | 0 0 0 0 1 1 1 0
------------------
您可以像这样实现您的矩阵并对其执行任何您想要的操作。重要的是,如果位置不为 0,则图形是连通的,无论你在做什么,你都可以选择最高值。
我很难想出一个合适的数据结构来表示无向图的邻接矩阵。
我希望能够从这些图中获取节点并将它们插入数组中的随机位置,然后 "score" 根据它们设法使相邻节点分开的程度来插入数组。即如果节点 A 和节点 B 在我的图表中连接,并且数组将它们彼此相邻放置,+1 将添加到数组的分数,得分最低的数组是最好的。
那么,什么是最好的数据结构来表示一组节点,以及集合中每个节点的相邻节点?
如果我理解你的问题,我认为它不是很清楚。 对于邻接矩阵,我认为最好的方法是数组。您可以访问 O(1) 中的每个位置,并且由于它是无向图,因此应该很容易创建。见下图
0 --- 1------5---6
| \ \ | /
| \ \ | /
2 3----4---7
0 1 2 3 4 5 6 7
-----------------
0 | 0 1 1 1 0 0 0 0
1 | 1 0 0 0 1 1 0 0
2 | 1 0 0 0 0 0 0 0
3 | 1 0 0 0 1 0 0 0
4 | 0 1 0 1 0 0 0 1
5 | 0 1 0 0 0 0 1 1
6 | 0 0 0 0 0 1 0 1
7 | 0 0 0 0 1 1 1 0
------------------
您可以像这样实现您的矩阵并对其执行任何您想要的操作。重要的是,如果位置不为 0,则图形是连通的,无论你在做什么,你都可以选择最高值。