<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Change Dir

    先知cd——熱愛生活是一切藝術的開始

    統計

    留言簿(18)

    積分與排名

    “牛”們的博客

    各個公司技術

    我的鏈接

    淘寶技術

    閱讀排行榜

    評論排行榜

    深入理解動態規劃的一系列問題(15)

    今天要說的 是0/1背包問題,問題非常經典,即:給定一個袋子,容量為c,c∈N,同時有n個球A={a0,a1,…a(n-1)},每個球有一自己的價值v(ai),同時有一定的重量w(ai),目標就是盡可能的裝球使得總價值最高,同時重量不能超出袋子的容量c。所以形式化表示這個問題即,對于Σwixi<=c,求最大max z=Σvixi。這個問題可以被看做一個多階段決策問題,對于每個ai,都要做決策xi來判斷是否要裝ai,階段標示即n個物體A的下標,那么動態規劃方程如下:f(i,w)= 0 if i=-1 and 0≤w≤c,f(i,w)=-∞ if i=-1 and w<0,f(i,w)=max {xivi+f(i-1,w-xiwi)} if i≥0。目標自然是計算f(n-1,c)咯。其實現在理解01背包,典型的思路就是能階段性考慮,遞歸求解。不妨設c=22,n=3,v={25,24,15},w={18,15,10}。那么結論就是只選擇第一個球,最終切價值最高~~當然這個例子可能特殊了點,但是從公式上推理,我們知道這個遞歸方程是正確的。

    源碼如下:

       1: /*
       2:  * Copyright (C) 2013 changedi
       3:  *
       4:  * Licensed under the Apache License, Version 2.0 (the "License");
       5:  * you may not use this file except in compliance with the License.
       6:  * You may obtain a copy of the License at
       7:  *
       8:  * http://www.apache.org/licenses/LICENSE-2.0
       9:  *
      10:  * Unless required by applicable law or agreed to in writing, software
      11:  * distributed under the License is distributed on an "AS IS" BASIS,
      12:  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      13:  * See the License for the specific language governing permissions and
      14:  * limitations under the License.
      15:  */
      16: package com.jybat.dp;
      17:  
      18: import java.util.HashSet;
      19: import java.util.Set;
      20:  
      21: /**
      22:  * Knapsack01Problem.
      23:  * 
      24:  * @author zunyuan.jy
      25:  * 
      26:  * @since 2014年6月13日
      27:  */
      28: public class KS01 {
      29:  
      30:     private static int knapsackCapacity = 22;
      31:     private static int[] value = { 25, 24, 15 };
      32:     private static int[] weight = { 18, 15, 10 };
      33:     private static int n = value.length; // number of objects n=3
      34:     private static int highestIndex = n - 1; // items are indexed
      35:  
      36:     // from 0 through n-1
      37:  
      38:     private static Set<Integer> calculateDecisionSet(int objInd, int w) {
      39:         Set<Integer> decSet = new HashSet<Integer>();
      40:         decSet.add(new Integer(0)); // decision to not take object
      41:         // is always feasible
      42:         if (w >= weight[objInd]) { // check if there is enough space
      43:             // to take object
      44:             decSet.add(new Integer(1));
      45:         }
      46:         return decSet;
      47:     }
      48:  
      49:     public static double f(int currentObejctIndex, int weightToGive) {
      50:         if (currentObejctIndex == -1)
      51:             return 0.0;
      52:         Set<Integer> decisionSet = calculateDecisionSet(currentObejctIndex,
      53:                 weightToGive);
      54:         double max = 0.0;
      55:         for (int d : decisionSet) {
      56:             double tmp = d
      57:                     * value[currentObejctIndex]
      58:                     + f(currentObejctIndex - 1, weightToGive - d
      59:                             * weight[currentObejctIndex]);
      60:             if (tmp > max)
      61:                 max = tmp;
      62:         }
      63:         return max;
      64:     }
      65:  
      66:     /**
      67:      * @param args
      68:      */
      69:     public static void main(String[] args) {
      70:         System.out.println(KS01.f(2, 22));
      71:     }
      72:  
      73: }

    posted on 2014-06-16 13:02 changedi 閱讀(2486) 評論(6)  編輯  收藏 所屬分類: 算法

    評論

    # re: 深入理解動態規劃的一系列問題(15) 2014-06-16 14:25 IT前線

    很想繼續看完,太難呀

    http://www.itqx.net  回復  更多評論   

    # re: 深入理解動態規劃的一系列問題(15) 2014-06-22 09:58 手賺網-手機賺錢軟件排行,手機賺錢平臺,網絡賺錢http://www.szapk.cn

    輕松賺:http://www.szapk.cn/ruanjianzhongxin/30.html  回復  更多評論   

    # re: 深入理解動態規劃的一系列問題(15) 2014-06-27 17:22 e

    e  回復  更多評論   

    # re: 深入理解動態規劃的一系列問題(15) 2014-06-27 17:22 e

    真的可以評論啊  回復  更多評論   

    # re: 深入理解動態規劃的一系列問題(15)[未登錄] 2014-06-27 17:23 a

    真的可以評論啊啊啊!  回復  更多評論   

    # re: 深入理解動態規劃的一系列問題(15) 2014-07-15 02:29 自媒體

    有料  回復  更多評論   

    主站蜘蛛池模板: 亚洲人成中文字幕在线观看| 亚洲免费在线观看视频| 精品成人免费自拍视频| 666精品国产精品亚洲| 性一交一乱一视频免费看| 一级黄色免费网站| 亚洲福利视频网址| 免费在线观看一级毛片| 最近免费2019中文字幕大全| 亚洲AV无码AV男人的天堂不卡| 亚洲综合精品香蕉久久网| 0588影视手机免费看片| 一级成人生活片免费看| 亚洲三级中文字幕| 日日噜噜噜噜夜夜爽亚洲精品| 免费能直接在线观看黄的视频| 特级毛片aaaa免费观看| 亚洲午夜电影在线观看高清| 久久久久亚洲av毛片大| 大地资源在线观看免费高清| 中文字幕看片在线a免费| 亚洲熟伦熟女专区hd高清| 亚洲AV永久纯肉无码精品动漫| 日韩电影免费在线| 日韩精品无码一区二区三区免费| 在线观看亚洲专区| 亚洲伊人久久大香线蕉结合| 久久亚洲精品中文字幕三区| 免费国产成人高清在线观看麻豆| **真实毛片免费观看| a级精品九九九大片免费看| 国产亚洲午夜精品| 亚洲av无码国产综合专区| 亚洲AV中文无码乱人伦下载 | 免费中文字幕在线观看| 亚洲w码欧洲s码免费 | 国产免费怕怕免费视频观看| 亚洲国产精品免费在线观看| 男女一边摸一边做爽的免费视频| 亚洲av无码兔费综合| 亚洲校园春色另类激情|