表示邻接矩阵/列表

时间:2015-12-06 21:59:38

标签: java adjacency-list adjacency-matrix

我很难想出一个合适的数据结构来表示无向图的邻接矩阵。

我希望能够从这些图中获取节点并将它们插入到数组中的随机位置,然后根据它们设法保持相邻节点分开的程度对数组进行“评分”。即如果节点A和节点B在我的图表中连接,并且阵列将它们彼此相邻放置,则+1将被添加到阵列的得分中,得分最低的阵列是最好的。

那么用于表示节点集合以及集合中每个节点的相邻节点的最佳数据结构是什么?

1 个答案:

答案 0 :(得分: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,那么图表就会连接起来,您可以选择最高值来处理您正在做的事情。