【算法设计与分析】02 货郎问题与计算复杂性理论
什么是NP系列問題?今天來看看這些問題。
文章目錄
- 1 貨郎問題
- 2 0-1背包問題
- 3 什么是NP-hard問題(NP難問題)
1 貨郎問題
-
問題:有n個城市,已知任何兩個城市之間的距離,求一條每個城市恰好經過1次的回路,使得總長度最小。
-
建模與算法:
min{∑i=1n?1d(cki,cki+1)+d(ckn,ck1){\sum_{i=1}^{n-1} d(c_{k_i},c_{k_{i+1}}) +d(c_{k_{n}},c_{k_1})}∑i=1n?1?d(cki??,cki+1??)+d(ckn??,ck1??)}
2 0-1背包問題
- 0-1背包問題:有n個物品要裝入背包,第i件物品的重量wi,價值vi,i=1,2,…,n。背包最多允許裝入的重量是B。問如何選擇裝入背包的物品,使得總價值達到最大?
舉個例子:
n=4, B=6,物品的重量和價值如下:
| 重量 wi | 3 | 4 | 5 | 2 |
| 價值 vi | 7 | 9 | 9 | 2 |
- 0-1背包問題數學建模:
問題的解:0-1向量<x1,x2,…,xn>,當xi=1時,代表物品i裝入背包。
目標函數:max∑i=1nvixi{\sum_{i=1}^{n} v_ix_i}∑i=1n?vi?xi?
約束條件:∑i=1nwixi{\sum_{i=1}^{n} w_ix_i}∑i=1n?wi?xi?≤\leq≤B
xi=0,1。i=1,2,......,n。x_i=0,1 。 i=1,2,......,n。xi?=0,1。i=1,2,......,n。
0-1背包問題與貨郎問題一樣,至今沒有找到有效的算法來解決。
3 什么是NP-hard問題(NP難問題)
像上面的貨郎問題以及0-1背包問題,這樣的問題有數千個,大量存在于各個領域。
- 至今沒有找到有效的算法來解決該問題。(沒有找到有效的算法意思是現有的算法的運行時間是輸入規模的指數或者更高階函數)
- 至今沒有人能夠證明對于這類問題不存在多項式時間的算法。
- 從是否存在多項式時間算法的角度看,這些問題彼此是等價的。這些問題的難度處于可有效計算的邊界。
算法的研究目標主要是下面四點:
而本專欄的主要目標是下圖中的下面的算法設計的部分:
我們主要學習的內容是算法分析與問題的計算復雜性,以及分治策略、動態規劃、貪心算法、回溯與分支限界等的學習。
學習是漫長的,期待后面將算法知識學好。
總結
以上是生活随笔為你收集整理的【算法设计与分析】02 货郎问题与计算复杂性理论的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 思科命令配置使用方法介绍
- 下一篇: Knx ip协议和Java实现