子集樹與排列樹

2021-09-30 13:41:48 字數 790 閱讀 2127

在前面的利用回溯法求解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...