Algorithm 给定一个无向图G=(V,E),确定G是否是一个完全图

Algorithm 给定一个无向图G=(V,E),确定G是否是一个完全图,algorithm,graph,np,Algorithm,Graph,Np,我很确定这个问题是p而不是NP,但我很难想出一个多项式界算法来解决它 您可以: 检查图形中的边数是否为n(n-1)/2 检查每个顶点是否连接到exacltyn-1不同的顶点 这将在多项式形式的O(V²)中运行 希望有帮助。这里有一个O(E)算法: 使用O(E)作为输入时间,扫描图形 同时,记录每个顶点p的度数,仅当相邻点不是p本身(自连接边)并且不是顶点q,其中p和q已经计算了另一条边(多条边),这些检查可以在O(1)中完成 检查所有顶点的阶数是否为| V |-1,此步骤为O(V),如果是,则它

我很确定这个问题是p而不是NP,但我很难想出一个多项式界算法来解决它

您可以:

  • 检查图形中的边数是否为
    n(n-1)/2
  • 检查每个顶点是否连接到exaclty
    n-1
    不同的顶点
  • 这将在多项式形式的
    O(V²)
    中运行

    希望有帮助。

    这里有一个O(E)算法:

  • 使用O(E)作为输入时间,扫描图形
  • 同时,记录每个顶点p的度数,仅当相邻点不是p本身(自连接边)并且不是顶点q,其中p和q已经计算了另一条边(多条边),这些检查可以在O(1)中完成
  • 检查所有顶点的阶数是否为| V |-1,此步骤为O(V),如果是,则它是一个完整的图
  • Total是O(E)

    这里有一个O(| E |)算法,它也有一个小常数

    在一个完整的图中枚举每一条边是很简单的。所以,您所需要做的就是扫描您的边缘列表,并验证每个这样的边缘是否存在

    对于每条边(i,j),设f(i,j)=i*| V |+j。假设顶点编号为0到| V |-1

    bitvec
    为长度为| V | 2的位向量,初始化为0

    对于每个边(i,j),将
    bitvec[f(i,j)]
    =1

    G是完全图当且仅当
    bitvec
    ==1的每个元素

    这个算法不仅只涉及E一次,而且如果你有一个分散指令,它也完全可以矢量化。这也意味着并行化很简单。

    对于给定的图G=(V,E),检查V中的每一对u,V,看看边(u,V)是否在E中。
    u、v对的总数为| v |*(|v |-1)/2。因此,时间复杂度为O(|V | ^2),您可以检查图形是否完整。

    p中的所有问题也都是NP。你的意思是“是P而不是NP完全的”(或“不是NP难的”)。你到底被困在哪里?你有不是P的算法吗?或者你不能证明的是P?还是停留在定义上?你必须对你的符号更加迂腐。它不会在O(V^2)中运行,因为您甚至没有描述
    V
    n
    的关系。