用动态规划算法和贪婪算法求解01背包问题的区别 分析用动态规划和贪心算法求解背包问题的差异

\u7528\u52a8\u6001\u89c4\u5212\u7b97\u6cd5\u600e\u6837\u6c42\u89e301\u80cc\u5305\u95ee\u9898

\u52a8\u6001\u89c4\u5212\u4e3b\u8981\u89e3\u51b3\u7684\u662f\u591a\u9636\u6bb5\u7684\u51b3\u7b56\u95ee\u9898\u3002
01\u80cc\u5305\u4e2d\uff0c\u72b6\u6001\u4e3a\u80cc\u5305\u5269\u4f59\u7684\u5bb9\u91cf\uff0c\u9636\u6bb5\u662f\u6bcf\u4e00\u4e2a\u7269\u54c1\uff0c\u51b3\u7b56\u662f\u662f\u5426\u9009\u62e9\u5f53\u524d\u7684\u7269\u54c1\u3002

\u6240\u4ee5\u7528\u52a8\u6001\u89c4\u5212\u6765\u89e3\u51b3\u662f\u975e\u5e38\u8d34\u5207\u7684\u3002
\u6211\u4eec\u8bbef[V]\u8868\u793a\u5df2\u7ecf\u4f7f\u7528\u5bb9\u91cf\u4e3aV\u65f6\u6240\u80fd\u83b7\u5f97\u7684\u6700\u5927\u4ef7\u503c\uff0cw[i]\u8868\u793ai\u7269\u54c1\u7684\u8d28\u91cf\uff0cc[i]\u8868\u793ai\u7269\u54c1\u7684\u4ef7\u503c\u3002
for(int i=1;i=w[i];j--) f[j]=max(f[j],f[j-w[i]]+c[i]);\u8fd9\u4fbf\u662f\u6240\u8c13\u7684\u4e00\u4e2a\u72b6\u6001\u8f6c\u79fb\u65b9\u7a0b\u3002
f[j]\u8868\u793a\u5728\u5df2\u7ecf\u4f7f\u7528\u5bb9\u91cf\u4e3aj\u65f6\u7684\u6700\u5927\u4ef7\u503c\uff0cf[j-w[i]]\u8868\u793a\u5728\u5df2\u7ecf\u4f7f\u7528\u5bb9\u91cf\u4e3aj-w[i]\u65f6\u7684\u6700\u5927\u4ef7\u503c\u3002
f[j]\u53ef\u4ee5\u7531f[j-w[i]]\u8fd9\u4e2a\u72b6\u6001\u8f6c\u79fb\u5230\u8fbe\uff0c\u8868\u793a\u9009\u53d6w[i]\u8fd9\u4e2a\u7269\u54c1\uff0c\u5e76\u4ece\u800c\u83b7\u5f97\u4ef7\u503c\u4e3ac[i]\u3002
\u800c\u6bcf\u6b21f[j]\u4f1a\u5728\u9009\u4e0e\u4e0d\u9009\u4e2d\u51b3\u7b56\u9009\u51fa\u6700\u4f18\u7684\u65b9\u6848\u3002
\u4ece\u6bcf\u4e00\u4e2a\u7269\u54c1\uff0c\u4e5f\u5c31\u662f\u6bcf\u4e00\u4e2a\u9636\u6bb5\u7684\u5c40\u90e8\u6700\u4f18\u63a8\u51fa\u6700\u540e\u7684\u5168\u5c40\u6700\u4f18\u503c\u3002\u8fd9\u6837\u5c31\u89e3\u51b3\u4e8601\u80cc\u5305\u95ee\u9898

\u52a8\u6001\u89c4\u5212\u672c\u8d28\u662f\u4ee5\u7a7a\u95f4\u6362\u65f6\u95f4\uff0c\u7b97\u51fa\u4e86\u6240\u6709\u53ef\u884c\u89e3\u7684\u503c\u57df\u3002

\u800c\u8d2a\u5fc3\u7b97\u6cd5\uff0c\u6bcf\u6b21\u9009\u5219\u6700\u4f18\u7684\uff0c\u800c\u7ed3\u679c\u672a\u5fc5\u6700\u4f18\u3002
\u4e3e\u4e2a\u7b80\u5355\u4f8b\u5b50\u3002
\u80cc\u5305\u80fd\u88c58kg,\u67093\u4e2a\u7269\u54c1\uff0c\u5206\u522b\u4e3a3kg,4kg,5kg
\u52a8\u6001\u89c4\u5212\uff0c\u662f\u8ba1\u7b97\uff0c3+4\uff0c 3+5\uff0c\u5f97\u51fa\u89e3\uff0c\u6700\u5927\u7684\u662f3+5=8kg
\u8d2a\u5fc3\u7b97\u6cd5\uff0c\u662f\u9009\u62e9\uff0c\u7b2c\u4e00\u6b21\u9009\u6700\u5927\u7684\uff1a5kg8,\u6545\u800c\u89e3\u4e3a5kg\u3002

首先这两个算法是用来分别解决不同类型的背包问题的,不存在哪个更优的问题。 当一件背包物品可以分割的时候,使用贪心算法,按物品的单位体积的价值排序,从大到小取即可。 当一件背包物品不可分割的时候,(因为不可分割,所以就算按物品的单位体积的价值大的先取也不一定是最优解)此时使用贪心是不对的,应使用动态规划。

  • 璐績绠楁硶涓庡姩鎬佽鍒掔畻娉鐨勫叡鍚岀偣
    绛旓細杩欎袱鑰呯殑鍏卞悓鐐瑰弬鑰冨涓嬶細1銆侀夋嫨鎬э細璐績绠楁硶鍜屽姩鎬佽鍒掔畻娉閮芥槸閫夋嫨鎬х畻娉曪紝鍗充粠涓涓欓夐泦鍚堜腑閫夋嫨閫傚綋鐨勫厓绱犲姞鍏ヨВ闆嗗悎銆2銆佹渶浼樺瓙缁撴瀯鎬ц川锛氳椽蹇冪畻娉曞拰鍔ㄦ佽鍒掔畻娉曢兘瑕佹眰闂鍏锋湁鏈浼樺瓙缁撴瀯鎬ц川銆3銆侀掓帹鍏崇郴锛氬姩鎬佽鍒掔畻娉曟槸閫氳繃鎷嗗垎闂锛屽畾涔夐棶棰樼姸鎬佸拰鐘舵佷箣闂寸殑鍏崇郴锛屼娇寰楅棶棰樿兘澶熶互閫掓帹锛堟垨鑰呰...
  • 鍔ㄦ佽鍒掑拰璐績娉曟湁浠涔堝尯鍒?鏈変粈涔堣仈绯?
    绛旓細鍧囨湁灞閮ㄦ渶浼樿В鏉ユ帹瀵煎叏灞鏈浼樿В 涓嶅悓鐐癸細璐績绠楁硶锛1.璐績绠楁硶涓紝浣滃嚭鐨勬瘡姝ヨ椽蹇冨喅绛栭兘鏃犳硶鏀瑰彉锛屽洜涓鸿椽蹇冪瓥鐣ユ槸鐢变笂涓姝ョ殑鏈浼樿В鎺ㄥ涓嬩竴姝ョ殑鏈浼樿В锛岃屼笂涓閮ㄤ箣鍓嶇殑鏈浼樿В鍒欎笉浣滀繚鐣欍2.鐢憋紙1锛変腑鐨勪粙缁嶏紝鍙互鐭ラ亾璐績娉曟纭殑鏉′欢鏄細姣忎竴姝ョ殑鏈浼樿В涓瀹氬寘鍚笂涓姝ョ殑鏈浼樿В銆鍔ㄦ佽鍒掔畻...
  • 鍔ㄦ佽鍒鎶鏈涓庤椽濠鎶鏈悇鏈変粈涔堢壒鐐
    绛旓細閲囩撼鐜:0% 甯姪鐨勪汉:2036涓 鎴戜篃鍘荤瓟棰樿闂釜浜洪〉 灞曞紑鍏ㄩ儴 鍔ㄦ佽鍒掔畻娉 姒傚康鍙婃剰涔 鍔ㄦ佽鍒(dynamic programming)鏄繍绛瑰鐨勪竴涓垎鏀,鏄姹傝В鍐崇瓥杩囩▼(decision process)鏈浼樺寲鐨勬暟瀛︽柟娉曘20涓栫邯50骞翠唬鍒濈編鍥芥暟瀛﹀R.E.Bellman绛変汉鍦ㄧ爺绌跺闃舵鍐崇瓥杩囩▼(multistep decision process)鐨勪紭鍖栭棶棰樻椂,鎻愬嚭浜嗚憲鍚...
  • 鍔ㄦ佽鍒 - 绠楁硶褰掔被鎬荤粨
    绛旓細鎵╁睍璺冲彴闃讹細鏁板鍏紡鎻ず浜嗙畝娲佺殑瑙e喅鏂规锛2^(n-1)銆 鍧愭爣鍨嬶細濡傛鐩橀棶棰橈紝閫氳繃鍒掑垎鍜岄掓帹锛岃В鍐冲尯闂磋鐩栨垨鏈鐭矾寰勩 鑳屽寘闂锛1/2/澶氱淮鐗堟湰锛岀伒娲婚傚簲涓嶅悓鍦烘櫙锛屽0-1鑳屽寘銆佸畬鍏ㄨ儗鍖呯瓑銆 鏍戝瀷缁撴瀯锛氬敖绠′笉鐩存帴浣跨敤鍔ㄦ佽鍒锛屼絾娣卞害浼樺厛鎼滅储绛绠楁硶涓涔嬪瘑鍒囩浉鍏炽備互涓嬫槸鍑犱釜鍏稿瀷闂鐨勫疄渚...
  • 鍒嗘瀽鐢ㄥ姩鎬佽鍒掑拰璐績绠楁硶姹傝В鑳屽寘闂鐨勫樊寮
    绛旓細鑰璐績绠楁硶锛屾瘡娆¢夊垯鏈浼樼殑锛岃岀粨鏋滄湭蹇呮渶浼樸備妇涓畝鍗曚緥瀛愩傝儗鍖呰兘瑁8kg,鏈3涓墿鍝侊紝鍒嗗埆涓3kg,4kg,5kg 鍔ㄦ佽鍒锛屾槸璁$畻锛3+4锛 3+5锛屽緱鍑鸿В锛屾渶澶х殑鏄3+5=8kg 璐績绠楁硶锛屾槸閫夋嫨锛岀涓娆¢夋渶澶х殑锛5kg<8kg锛岀浜屾閫夊垯鍓╀笅鐨勬渶澶х殑4kg锛4+5>8,鏁呰岃В涓5kg銆
  • 绠杩璐績,閫掑綊,鍔ㄦ佽鍒,鍙鍒嗘不绠楁硶涔嬮棿鐨勫尯鍒拰鑱旂郴
    绛旓細1銆璐績绠楁硶锛氭牴鎹鎰忛夊彇涓绉嶉噺搴︽爣鍑嗐2銆侀掑綊绠楁硶锛氶掑綊灏辨槸鍦ㄨ繃绋嬫垨鍑芥暟閲岃皟鐢ㄨ嚜韬3銆佸姩鎬佽鍒掞細铏界劧鍔ㄦ佽鍒掍富瑕佺敤浜姹傝В浠ユ椂闂村垝鍒嗛樁娈电殑鍔ㄦ佽繃绋嬬殑浼樺寲闂锛屼絾鏄竴浜涗笌鏃堕棿鏃犲叧鐨勯潤鎬佽鍒(濡傜嚎鎬ц鍒掋侀潪绾挎ц鍒)锛屽彧瑕佷汉涓哄湴寮曡繘鏃堕棿鍥犵礌锛屾妸瀹冭涓哄闃舵鍐崇瓥杩囩▼锛屼篃鍙互鐢ㄥ姩鎬佽鍒鏂规硶鏂逛究鍦...
  • 鏁版嵁缁撴瀯涔璐績绠楁硶
    绛旓細璐┆绠楁硶锛圙reedy锛夌殑瀹氫箟锛氭槸涓绉嶅湪姣忎竴姝ラ変腑閮介噰鍙栧湪褰撳墠鐘舵佷笅鏈濂芥垨鏈浼樼殑閫夋嫨锛屼粠鑰屽笇鏈涘鑷寸粨鏋滄槸鍏ㄥ眬鏈濂芥垨鏈浼樼殑绠楁硶銆傝椽濠畻娉曪細褰撲笅鍋氬眬閮ㄦ渶浼樺垽鏂紝涓嶈兘鍥為 锛堣兘鍥為鐨勬槸鍥炴函锛屾渶浼+鍥為鏄鍔ㄦ佽鍒锛夌敱浜璐績绠楁硶鐨勯珮鏁堟т互鍙婃墍姹傚緱绛旀姣旇緝鎺ヨ繎鏈浼樼粨鏋滐紝璐績绠楁硶鍙互浣滀负杈呭姪绠楁硶鎴瑙e喅...
  • c璇█甯哥敤绠楁硶鏈夊摢浜
    绛旓細璐┆绠楁硶鍙互鑾峰彇鍒伴棶棰樼殑灞閮ㄦ渶浼樿В锛屼笉涓瀹氳兘鑾峰彇鍒板叏灞鏈浼樿В锛屽悓鏃惰幏鍙栨渶浼樿В鐨勫ソ鍧忚鐪嬭椽濠瓥鐣ョ殑閫夋嫨銆傜壒鐐瑰氨鏄畝鍗曪紝鑳借幏鍙栧埌灞閮ㄦ渶浼樿В銆傚氨鍍忔墦鐙楁娉曪紝鍚屼竴濂楁娉曪紝娲竷鍏拰椴佹湁鑴氱殑姘村钩灏卞樊澶浜嗭紝鍥犳鍚屾牱鏄椽濠畻娉曪紝涓嶅悓鐨勮椽濠瓥鐣ヤ細瀵艰嚧寰楀埌宸紓闈炲父澶х殑缁撴灉銆2锛 鍔ㄦ佽鍒掔畻娉 褰撴渶浼樺寲...
  • 鍔ㄦ佽鍒掔畻娉鎬庝箞璁$畻?
    绛旓細鑰屼笖鍚屾椂姹鍑轰簡鍒颁腑闂寸姸鎬佺殑鏈浼樺硷紝杩欏浜庡緢澶氬疄闄呴棶棰樻潵璇存槸寰堟湁鐢ㄧ殑銆傚姩鎬佽鍒掔浉姣斾竴鑸畻娉曚篃瀛樺湪涓瀹氱己鐐:绌洪棿鍗犳嵁杩囧锛屼絾瀵逛簬绌洪棿闇姹傞噺涓嶅ぇ鐨勯鐩潵璇达紝鍔ㄦ佽鍒掓棤鐤戞槸鏈浣虫柟娉!鍔ㄦ佽鍒掔畻娉曞拰璐┆绠楁硶閮芥槸鏋勯犳渶浼樿В鐨勫父鐢ㄦ柟娉曘傚姩鎬佽鍒掔畻娉曟病鏈変竴涓浐瀹氱殑瑙i妯″紡锛屾妧宸фу緢寮恒
  • 璐績绠楁硶鐨勫熀鏈绱
    绛旓細2銆佹渶浼樺瓙缁撴瀯鎬ц川 褰撲竴涓棶棰樼殑鏈浼樿В鍖呭惈鍏跺瓙闂鐨勬渶浼樿В鏃讹紝绉版闂鍏锋湁鏈浼樺瓙缁撴瀯鎬ц川銆傞棶棰樼殑鏈浼樺瓙缁撴瀯鎬ц川鏄闂鍙敤鍔ㄦ佽鍒掔畻娉鎴璐績绠楁硶姹傝В鐨勫叧閿壒寰併傝椽蹇冪畻娉曠殑灞闄愭у拰鍒嗘瀽杩囩▼ 1銆佽椽蹇冪畻娉曠殑灞闄愭э細璐績绠楁硶鏈変粬鐨勫眬闄愭э紝鏈夌殑鏃跺欐垜浠夋嫨灞閮ㄧ殑鏈浼樿В锛屼絾鏄畠瀵逛笌鍏ㄥ眬骞堕潪鏈...
  • 扩展阅读:ff14需求和贪婪技巧 ... 贪婪算法优缺点 ... 动态规划设计步骤 ... 六大算法之动态规划 ... 贪心和动态规划的区别 ... 动态规划算法执行步骤 ... 贪婪算法缺点 ... 动态规划算法详细讲解视频 ... 比较贪心算法与动态规划 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网