表示邻接 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,则图形是连通的,无论你在做什么,你都可以选择最高值。