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

2021-10-02 18:35:02 字數 853 閱讀 4516

在若干點和若干連線中,找到完全子圖,即子圖中各個點都和其他點相連

**有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個頂點之間任意兩點之間都相...