- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]演算法第七章NP-完备理论繁
演算法 _ 第七章 NP-完備理論 7 簡單問題與困難問題 在 60 年代末期到 70 年代初期,許多研究人員成功地找出一些最佳化問題的快速解 但是,在那同時卻也發現越來越多的問題似乎無法快速地找到解 解這些問題的演算法在最壞的情況下都會需要指數時間 簡單問題與困難問題 於是有人開始懷疑,是不是還有什麼不知道的演算法設計方法尚待開發 或者是不是應該有一個證明告訴我們這些問題本質上就很難,低於指數時間的演算法根本就不存在? 簡單問題與困難問題 大約就是那個時候,出現了一個重大的發現 這個發現告訴我們這些所謂的“困難”問題彼此間是相關的,只要它們其中有一個問題可以在多項式時間內解掉的話,那麼所有這些困難問題將都可以在多項式時間內解掉 這些問題就統稱為NP-完備問題 多項式時間 以一個問題能不能在多項式時間內解決掉來區隔“可以有效率地解決的問題”與“無法有效率地解決的問題” 前者籠統地統稱為“簡單的問題”而後者則籠統地通成為“困難的問題” 評估一個演算法的執行時間所採用的都是最壞情況的複雜度 事實上,NP-完備問題所探討的時間複雜度都是最壞情況的複雜度。 多項式時間 當我們說一個演算法的複雜度是 O(n)時,n 指的是輸入資料的“數量” 針對不同問題,我們對於這個“數量”的定義會有一些不同 但是,真正比較嚴謹的定義應該是「使用合理、有效率的編碼方式來表示輸入資料時所需要的位元數」 多項式時間 前面都假設任何算術運算(例如,兩個數的加、減、乘、除)都固定需要一個常數時間 但是,現在我們得小心些,實際上它們所需要的計算時間跟表示一個數字所用的位元數成正比 例如,把兩個 64 位元整數相加所需要的時間是把兩個 32 位元整數相加所需要時間的兩倍 多項式時間 如果一個問題存在一個多項式時間演算法來解它的話,我們就說這個問題可以在多項式的時間內解掉 最佳化問題與判斷問題 每一個最佳化的問題都有一個對應的判斷問題版本 是不是存在一個打包方法使得它打包所得的總價值高於等於常數C? 是不是存在一個路徑的長度小於等於常數C? 輸出只是很單純的“是”或“否” 最佳化問題與判斷問題 定義 P 為所有可以在多項式時間內解決掉的判斷問題所成的集合。 P 因此就是我們認為的簡單問題所成的集合 一些常見的困難問題 SAT問題 給定一個布林公式(CNF的形式),是不是存在一種真假值的指派使得整個布林公式為真? 舉一個例子,是不是存在一種真假值的指派使得 F = 為真? 一些常見的困難問題 F=(x? y? z) ? (x? y) ? (y? z) ? (z? x) ? (x? y? z) 這個例子不管我們如何選擇 x, y, z 的真假值組合,F 總之都是假,因此針對這個例子我們應該回答“否” SAT是第一個被證明是NP-完備的問題 一些常見的困難問題 3-SAT問題 它是SAT問題的一個特例,布林公式裡要 and 起來的每一個子句都恰好含3個字元 例如, F = 這個問題也被證明是一個NP-完備問題 一些常見的困難問題 如果一個問題被證明是NP-完備的問題,那麼它的特例可能是NP-完備問題,也可能不是NP-完備問題 一些常見的困難問題 0/1打包問題 打包問題的特例 給定的 n 項物品,每一項物品 i 都有其重量 wi 以及價值 pi 這個問題要求我們,在總重量小於等於 C 的前提下,選出來搬走的物品之總價值要最高 xi = 0, 1-物品不能切割 一些常見的困難問題 旅行推銷員問題 判斷問題版本則是「給定平面上一些點以及這些點彼此間的距離,是否存在一個迴路將所有這些點連結起來,而且這個迴路的邊長總和小於等於常數C?」 這個問題的判斷問題版本就是NP-完備問題 一些常見的困難問題 一些常見的困難問題 頂點涵蓋問題 給定一個圖 G = (V, E)。如果存在一組頂點 S ? V 使得任何屬於 E 的一個邊 (u, v) 都滿足要麼 u ? S 不然就是 v ? S,那麼我們就說 S 是一個頂點涵蓋 例如,{A,D} 與 {B,C,E} 都是頂點涵蓋,因為所有的邊都跟 A 或 D(B、C、或E)相連 一些常見的困難問題 這個問題的最佳化版本問的是「請找出最小的頂點涵蓋S,即?S?最小化。」 它的判斷問題版本則是「是不是存在一個頂點涵蓋 S 使得?S?? k,其中k是一個常數?」 這個問題的判斷問題版本就是NP-完備問題 一些常見的困難問題 著色問題 給定一個圖 G = (V, E),我們要為頂點 V上色 上色的原則是相鄰的兩個頂點 u, v必須著不同的顏色 一些常見的困難問題 這個問題的最佳化版本問的是「請找出使用最少顏色的著色方法。」 它
文档评论(0)