回溯演算法 分支限定 解最大團問題

2021-08-20 19:26:02 字數 859 閱讀 5202

最大團問題介紹:給定無向圖g=,g是乙個完全子圖(任何兩點之間都有邊)就稱為g的乙個團,問題是找乙個最大團(頂點  數最多的團)(先實現只從中找乙個最大團,題目也可能要求找所有的最大團)

/**************************最大團問題********************/

#include using namespace std;

const int n = 10;

int n;//原圖頂點數

int a[n][n] = ;//表示圖的頂點是否連線的關係矩陣

int tempmax;

int optimalmax;

int x[n] = ;

int optimal[n] = ;

//bool ok = true;

int bound(int k)

cout << endl;

optimalmax = tempmax;

}else

if (ok)// 進入左子樹

if (tempmax + n - k >= optimalmax)// 進入右子樹

//tempmax + n - k是代價函式,optimalmax是界,右子樹要是有比optimalmax大的希望就走下試試

} }int main()

traceback(1);

cout << "最大頂點集的頂點個數是:";

cout << optimalmax << endl;

cout << "與之對應的解向量是:";

for (int i = 1; i <= n; i++)

return 0;

}

參考:

演算法分析 回溯法 最大團問題

在若干點和若干連線中,找到完全子圖,即子圖中各個點都和其他點相連 有4部分 1.定義全域性變數 2.約束函式 限制生成左子樹的函式 3.遞迴函式 4.呼叫遞迴函式的函式,也可以直接寫在main 1.定義全域性變數 const int m1 5 元素數 vector vector a1 int cn1...

最大團問題 回溯法

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

分支限界 最大團問題

給定有乙個無向圖,找出最大團個數。最大團也就是該圖中最大的完全圖 各頂點之間都有邊 演算法思想 設p為所有點集的集合,依次取出p中的頂點作為團的起始點,也就是以該點為起點開始拓展,每次檢視相鄰頂點是否與團內各點聯通,若true,則加入該點。為了進一步降低時間複雜度,採取記憶化遞迴的方式,從後向前遍歷...