在前面的利用回溯法求解01揹包問題的時候,我們提到了這個問題的解空間樹是子集樹,那麼什麼是子集樹呢?與子集樹對應的還有乙個排列樹!它們又有什麼區別呢?
為了說明這兩個概念的區別,我們首先假定有乙個集合s
當我們求解的結果是集合
s的某一子集的時候,其對應的解空間是子集樹。時間複雜度o(
當我們求解的結果是集合
s 的元素的某一種排列的時候,其對應的解空間就是排列樹。時間複雜度o(
解空間為排列樹的典型問題就是旅行售貨員問題。
簡要說明啥是旅行售貨員問題,用圖論的術語來說就是:
在乙個正權的完全圖中尋找乙個具有最小權的哈密頓迴路(由指定的起點前往指定的終點,途中經過所有其他節點且只經過一次。)。
這樣就很明確了,我們要尋找的就是所有點集的乙個排列(所有點都需要經過且只經過一次)。
子集樹:
void backtrack(int t) }}
排列樹:
void backtrack(int t)
swap(x[t], x[i]);}}
子集樹與排列樹
1.當所給問題是從n個元素的集合s中找出s滿足某種性質的子集時,相應的解空間稱為子集樹。例如 n個物品的0 1揹包問題所相應的解空間是一棵子集樹,這類子集樹通常有2 n個葉結點,其結點總數為 2 n 1 1。遍歷子集樹的演算法通常需要 2 n 計算時間。回溯法搜尋子集樹的演算法一般可以描述如下 vo...
子集樹與排列樹
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!在前面的利用回溯法求解01揹包問題的時候,我們提到了這個問題的解空間樹是子集樹,那麼什麼是子集樹呢?與子集樹對應的還有乙個排列樹!它們又有什麼區別呢?為了說明這兩個概念的區別,我們首先假定有乙個集合s 解空間為排列樹的典型問題就是旅行售貨員問題。簡...
子集樹與排列樹
1.當所給問題是從n個元素的集合s中找出s滿足某種性質的子集時,相應的解空間稱為子集樹。例如 n個物品的0 1揹包問題所相應的解空間是一棵子集樹,這類子集樹通常有2 n個葉結點,其結點總數為 2 n 1 1。遍歷子集樹的演算法通常需要 2 n 計算時間。回溯法搜尋子集樹的演算法一般可以描述如下 vo...