Adjacency list 卡格尔';s算法-运行时间-边缘收缩

Adjacency list 卡格尔';s算法-运行时间-边缘收缩,adjacency-list,kargers-algorithm,contractions,Adjacency List,Kargers Algorithm,Contractions,对于无向(可能加权)多重图,主要操作是收缩随机选择的边,并将其关联顶点合并为一个元顶点。重复此过程,直到保留两个顶点。这些顶点对应于切割。该算法可以通过邻接列表来实现 问题: 我怎样才能找到被选择收缩的特定边缘 边如何收缩(在未加权和/或加权图中) 为什么这个过程需要二次时间 编辑:我发现了一些信息,运行时可以是二次的,因为我们有O(n-2)个顶点收缩,每个收缩可能需要O(n)个时间。如果有人能给我解释一下,为什么收缩在邻接列表中需要线性时间,那就太好了。注意:收缩包括:删除一条相邻边,将两个顶

对于无向(可能加权)多重图,主要操作是收缩随机选择的边,并将其关联顶点合并为一个元顶点。重复此过程,直到保留两个顶点。这些顶点对应于切割。该算法可以通过邻接列表来实现

问题:

  • 我怎样才能找到被选择收缩的特定边缘

  • 边如何收缩(在未加权和/或加权图中)

  • 为什么这个过程需要二次时间

  • 编辑:我发现了一些信息,运行时可以是二次的,因为我们有O(n-2)个顶点收缩,每个收缩可能需要O(n)个时间。如果有人能给我解释一下,为什么收缩在邻接列表中需要线性时间,那就太好了。注意:收缩包括:删除一条相邻边,将两个顶点合并为一个超节点,并确保其余相邻边连接到该超节点

    伪代码:

    procedure contract(G=(V,E)):
    while |V|>2
        choose edge uniformly at random
        contract its endpoints
        delete self loops
    return cut
    
    我读过相关的话题,但对我没有帮助。我也没有这么多的经验,所以一个“外行”的术语解释将非常感谢