最大子團問題回溯法

2021-10-05 19:25:13 字數 1053 閱讀 9667

問題:乙個無向圖 g=(v,e),v 是點集,e 是邊集。取 v 的乙個子集 u,若對於 u 中任意兩個點 u 和 v,有邊 (u,v)∈e,那麼稱 u 是 g 的乙個完全子圖。 u 是乙個團當且僅當 u 不被包含在乙個更大的完全子圖中。

g的最大團指包含頂點數最多的乙個團。

#include

using

namespace std;

#define m 101

bool a[m]

[m];

//圖的鄰接矩陣

bool x[m]

;//當前 解

int cn;

//當前團的頂點數

int bestn, bestx[m]

;//當前的最優解

int n, m;

//n圖g的頂點數

void

backtrack

(int i)

}bool ok=

true

;for

(j=1

; jif(ok)

//進入左子樹,選該頂點

if(cn+n-i>bestn)

//剪枝,右子樹,如果代價函式<=bestn,就不用再搜尋

}main()

cn=bestn=0;

backtrack(1

);cout<<

"頂點數:"

<"最大團為:"

;for

(i=1

;i <= n;i++)}

return0;

}

執行結果:

輸入頂點數和邊的個數:

5 81 2

1 31 4

1 52 4

3 43 5

4 5頂點數:4

最大團為:1,3,4,5,

process exited after 3.279 seconds with return value 0

請按任意鍵繼續.

最大團問題 回溯法

題目 對於給定的無向圖,找出他的最大團 分析 圖的乙個完全子圖就是乙個團,所以找最大團,通俗點講就是在乙個無向圖中找出乙個點數最多的完全圖 任意兩點之間均有邊相鄰 採用回溯法,對於解空間的子集樹,只有當前節點和所有已選的頂點都相連,才進入左子樹 而當 當前結點加上剩下節點數比最優節點的個數多時 才進...

回溯法 最大團問題c

本文參考 1 問題描述 給定無向圖g v,e v是頂點集,e是邊集。如果u v,且對任意u,v u有 u,v e,u,v是兩個頂點的符號,則稱u是g的完全子圖。g的完全子圖u是g的乙個團當且僅當u不包含在g的更大的完全子圖中。注 最大團定義 從無向圖的頂點集中選出k個並且k個頂點之間任意兩點之間都相...

回溯法之最大團問題

給定無向圖 g v,e 如果 u subseteq v 且對任意 u,v in u 有 u,v in e 則稱 u 是 g 的完全子圖。完全子圖 u 是 g 的團 iff 不包含在比 g 更大的完全子圖中。g 的最大團是指在 g 中所含頂點數最多的團。設當前擴充套件節點 z 位於解空間樹的第 i 層...