999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于集合求解01背包問題的跳躍點法

2019-07-12 08:28:42王金燕
電子技術與軟件工程 2019年9期
關鍵詞:價值

文/王金燕

1 引言

01背包問題的具體描述為:有n個物品,物品i(i=1,2,...,n)的重量為wi,價值為vi,一個背包容量為c。要求從背包的價值出發,做出最優的裝包決策。與背包問題不同,此處的物品不允許劃分,即選擇裝入一個物品就必須裝入其全部。這種01整數的規劃決策問題在當前生活中得到了廣泛的應用,類似問題已經推廣到密碼學、商業資金管理、數學應用計算等多個領域。雖然01背包問題的思想很好理解,但由于其NP復雜性,采用一般的算法很難解決。而動態規劃算法可以通分析,將原問題逐層劃分為若干小問題,通過層層遞歸得到原問題的解。

2 傳統的動態規劃求解策略

對于最終背包所包含的物品,可以形象化的用一個n元01向量(x1, x2, ...xn)表示,其中xi=0表示最優裝包策略不包含第i個物品,xi=1表示最優裝包策略包含第i個物品。則01背包問題則可以抽象為如下數學表達式:

記m(i,j)為一個子問題的最優值。該子問題為:為一個容量為j的背包做決策,選擇第i,i+1,...n個物品中裝入哪些物品。根據最優子結構性質,子問題的遞歸式可以表示為:

顯然,求解m[][]只需遍歷每個物品,時間復雜度為O(c*n),但是當背包容量很大如c>2n時,計算m[][]需要計算時間。

3 改進的跳躍點法求解01背包問題

3.1 算法的提出

很顯然,隨著背包容量的增加,允許裝入背包中的物品有更多的選擇余地,則背包的總價值或者保持不變(不再裝入新的物品),或者階梯狀上升(選擇新的物品裝入),不可能出現背包價值減小的情況。即m(i,j)是一個關于j的單調不減函數。

舉例來說,當n=5,c=10時,假設w={2,2,6,5,4},v={6,3,5,4,6}

則m(4,j),m(5,j)的函數圖像如圖1所示。

由于背包的容量存在增加時,背包總價值m(i, j)才會發生改變。即m(i,j)不是隨著j的連續取值而變化的。此外因為物品不可分割,而單個物品的價值往往是大于1的整數,則m(i, j)也并不是連續增加的值,每裝入一個重量為wi的物品,m(i, j)值會跳躍增加相應vi。則將(wi,vi)稱為函數m(i, j)的跳躍點。在m(i, j)的計算中,無需再對其子問題保存的值進行比較和賦值,只需要逐層計算跳躍點,最終的跳躍點即包含了背包的最大價值。

3.2 算法說明

此處假定變量j取連續值,求解過程中每求得一個跳躍點就將其插入到一個set集合中,最終該集合是m(i,j)的全部跳躍點集合,記為p[i].對于任意容量為j的背包(即任一個子問題),建立迭代遍歷跳躍點集p[i]即可確定m(i, j)的值。前面我們已經說明過m(i, j)的非遞減性,所以任一個子問題中的全部跳躍點都是呈階梯狀上升的。

根據遞歸表達式可知,m(i,j)的跳躍點主要包括以下兩類:

①m(i+1,j)的跳躍點集p[i+1];

②m(i+1,j-wi)+vi的跳躍點集q[i+1];

即p[i]=p[i+1]∪q[i+1].

需要注意的是,在所有的跳躍點集中并不全都是正確的跳躍點。下面進行例證:

設(i1, j1)和(i2, j2)都是p[i]中的跳躍點。假設存在一種可能,使得i1≤i2且j2≤j1,說明當背包容量時增加,所包含物品的總價值減少。與前文所述顯然矛盾,即(i2, j2)不是真正的跳躍點。(i2, j2) 受控于(i1, j1),被稱為受控跳躍點。實際上,受控跳躍點的出現是由于遞歸表達式產生的。當m(i,j)=max {m(i+1,j),m(i+1, j-wi)+vi}時,兩者中相對較小的點并沒有被采用,但卻也包含在跳躍點集中,就成為了受控跳躍點。

③由于受控跳躍點是不正確的跳躍點,p[i]=p[i]-{受控條約點}

3.3 算法實現

(1)變量及操作的定義:

定義跳躍點為結構體變量struct point{int x;int y;};定義一系列set集合p[i],q[i]表示全部跳躍點集set p[n],q[n];其中,p[i+1]表示m(i+1,j)的跳躍點集,

q[i+1]為子問題m(i+1,j-wi)+vi的跳躍點集。

圖1:m(4,j)m(5,j) 圖像

(2)初始化并加入所有可能的跳躍點:

(3)用迭代器遍歷每個跳躍點集,刪除受控跳躍點。

(4)重復①-③,直到確定p[1]的跳躍點集,該集合中最后一個跳躍點即為所求的背包最大價值。至此算法結束。

4 算法復雜度分析

上述算法的主要計算量在于步驟②-③中的遍歷過程。對p[i]集合的合并求解需要遍歷每個p[i]保存的跳躍點集,判斷并刪除刪除跳躍點集中的受控跳躍點也需要遍歷p[i],即需要O(|p[i+1]|)的計算時間。而每個跳躍點相應于一個解變量xn序列的01賦值。故p[i]中的元素數目存在上限2n-i+1。從而算法計算跳躍點集所花費的時間為:

5 結語

本文從傳統的動態規劃求解01背包問題出發,根據遞歸表達式研究跳躍點法對于問題的求解,同時提出用STL模板庫中的set集合存儲求解過程中的跳躍點集,避免了重復跳躍點的出現,降低了算法的時間復雜度和空間復雜度。

猜你喜歡
價值
踐行初心使命的價值取向
當代陜西(2019年18期)2019-10-17 01:48:58
價值3.6億元的隱私
華人時刊(2019年23期)2019-05-21 03:31:36
一分鐘能創造多少價值?
一粒米的價值
人與自然的和諧之美——《七月》價值新解讀
唐山文學(2016年2期)2017-01-15 14:03:53
“給”的價值
俆衛:用夢創造價值
科學中國人(2015年4期)2015-02-28 09:12:39
價值
小說月刊(2014年8期)2014-04-19 02:39:17
從平凡中體現價值
聲屏世界(2014年1期)2014-02-28 15:17:32
“活著就要體現自身價值”
中國火炬(2012年3期)2012-07-25 10:34:02
主站蜘蛛池模板: 精品国产成人高清在线| 色窝窝免费一区二区三区 | 无码'专区第一页| а∨天堂一区中文字幕| 免费中文字幕一级毛片| 亚洲有无码中文网| a免费毛片在线播放| 亚洲av片在线免费观看| 国产亚洲精久久久久久久91| 99久久精品免费看国产免费软件| 国产精品毛片一区| 国内精自视频品线一二区| 凹凸精品免费精品视频| 亚洲国产成人在线| 国产电话自拍伊人| 四虎国产永久在线观看| 国产成人h在线观看网站站| www亚洲精品| 国产经典在线观看一区| 久久综合九色综合97婷婷| 老色鬼久久亚洲AV综合| 熟女视频91| 欧美色图久久| 一级一毛片a级毛片| 狠狠色噜噜狠狠狠狠色综合久 | 婷婷丁香色| 国产精品永久不卡免费视频| 国产高清无码第一十页在线观看| 成人福利在线看| 伊人久久大线影院首页| 国产成人麻豆精品| 欧美成人a∨视频免费观看| 91青青视频| 天天躁狠狠躁| 午夜无码一区二区三区| 国产成人啪视频一区二区三区| 国产美女丝袜高潮| 国产一级α片| 日韩高清在线观看不卡一区二区| 免费A级毛片无码免费视频| 18禁色诱爆乳网站| 91www在线观看| 一级毛片免费高清视频| 久久国产精品嫖妓| 国产男人天堂| 亚洲黄网在线| 国产在线第二页| 五月天丁香婷婷综合久久| 亚洲天堂.com| 亚洲无码高清视频在线观看| 中文一级毛片| 97影院午夜在线观看视频| 黄片在线永久| a级毛片免费网站| 国产激情无码一区二区APP| 日本尹人综合香蕉在线观看| 欧美色亚洲| 操美女免费网站| 亚洲精品欧美日本中文字幕| 天天躁夜夜躁狠狠躁图片| 无码精品福利一区二区三区| 亚洲免费黄色网| 日韩无码真实干出血视频| 成人午夜久久| 少妇精品在线| 国产美女主播一级成人毛片| 国产午夜不卡| 久久精品aⅴ无码中文字幕| 国产欧美日韩18| 456亚洲人成高清在线| 91口爆吞精国产对白第三集| 中国毛片网| 农村乱人伦一区二区| 欧美激情二区三区| 曰AV在线无码| 国产99在线| 四虎成人免费毛片| 亚洲天堂成人在线观看| 热这里只有精品国产热门精品| 精品久久人人爽人人玩人人妻| 亚洲男人天堂久久| 欧美亚洲欧美|