在若干點和若干連線中,找到完全子圖,即子圖中各個點都和其他點相連
**有4部分
1.定義全域性變數
2.約束函式(限制生成左子樹的函式)
3.遞迴函式
4.呼叫遞迴函式的函式,也可以直接寫在main()
1.定義全域性變數
const int m1 = 5; //元素數
vector< vector>a1 =,,,
,};int cn1; //記錄當前最優值
vectorcx1(m1, 0); //記錄當前最優策略
int bestn1; //記錄最終最優值
vectorbestx1(m1, 0); //記錄最終最優策略
2.約束函式(限制生成左子樹的函式)
//允許生成左子樹的限制條件:第t個結點和0~t-1個結點中已被選中的結點是否全部相連,有假則假
bool mcpplace(int t)
} return flag;
}
3.遞迴函式
void mcpbackpack(int t) //傳入的實參初值是0
//左子樹
if (mcpplace(t))
//右子樹
if (cn1+(m1-t-1)>bestn1)
}
4.呼叫遞迴函式
void mcp()
{ bestn1 = cn1 = 0;
mcpbackpack(0);
cout << "最優值= " << bestn1《難得的一次編譯執行,值得紀念
最大團問題 回溯法
題目 對於給定的無向圖,找出他的最大團 分析 圖的乙個完全子圖就是乙個團,所以找最大團,通俗點講就是在乙個無向圖中找出乙個點數最多的完全圖 任意兩點之間均有邊相鄰 採用回溯法,對於解空間的子集樹,只有當前節點和所有已選的頂點都相連,才進入左子樹 而當 當前結點加上剩下節點數比最優節點的個數多時 才進...
演算法設計與分析 最大團問題(回溯法)
了解最大團問題 maximum clique problem,mcp 之前需要明白幾個概念。複習一下圖論知識.完全圖 如果無向圖中的任何一對頂點之間都有一條邊,這種無向圖稱為完全圖。完全子圖 給定無向圖g v,e 如果u v,且對任意u,v u 有 u,v e,則稱u 是g 的完全子圖。團 最大完全...
回溯法 最大團問題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個頂點之間任意兩點之間都相...