簡體   English   中英

給定無向圖G =(V,E),確定G是否為完整圖

[英]Given an undirected graph G = (V, E), determine whether G is a complete graph

我很確定這個問題是P而不是NP,但是我很難提出多項式綁定算法來解決它。

您可以 :

  1. 檢查圖中的邊數為n(n-1)/2
  2. 檢查每個頂點是否都連接到n-1不同的頂點。

這將在多項式O(V²)運行。

希望能有所幫助。

這是一個O(| E |)算法,該算法的常數也較小。

枚舉完整圖形中的每個邊都是微不足道的。 因此,您要做的就是掃描邊緣列表,並驗證每個這樣的邊緣是否存在。

對於每個邊(i,j),令f(i,j)= i * | V | + j。 假設頂點編號為0到| V | -1。

bitvec為長度| V |的位向量 2 ,初始化為0。

對於每個邊(i,j),設置bitvec[f(i, j)] = 1。

當且僅當bitvec每個元素== 1時,G才是完整的圖。

該算法不僅觸及E一次,而且如果您有分散指令,它也可以完全向量化。 這也意味着並行化很簡單。

這是一個O(E)算法:

  1. 使用O(E)作為輸入時間來掃描圖形
  2. 同時,記錄每個頂點的度數, 僅當鄰居不是p本身(自連接邊) 並且不是頂點q(其中p和q已經計算了另一個邊數(多個邊數)) 時才增加度數,這些檢查可以在O(1)
  3. 檢查是否所有頂點的度均為| V | -1,此步驟為O(V),如果是,則為完整圖形

總計為O(E)

對於給定的圖G =(V,E),檢查V中的每對u,v,並查看邊(u,v)是否在E中。u,v對的總數為| V | *( | V | -1)/ 2。 結果,時間復雜度為O(| V | ^ 2),您可以檢查並查看圖形是否完整。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM