为什么贪心算法不能解0-1背包问题 贪心算法解决0-1背包问题得到的解通常是最优解或者近似最优解...

0/1\u80cc\u5305\u95ee\u9898\u80fd\u4e0d\u80fd\u4f7f\u7528\u8d2a\u5fc3\u6cd5\u89e3\u51b3?

\u8d2a\u5fc3\u7b97\u6cd5\u89e3\u51b3\u80cc\u5305\u95ee\u9898\u6709\u51e0\u79cd\u7b56\u7565\uff1a
(i)\u4e00\u79cd\u8d2a\u5a6a\u51c6\u5219\u4e3a\uff1a\u4ece\u5269\u4f59\u7684\u7269\u54c1\u4e2d\uff0c\u9009\u51fa\u53ef\u4ee5\u88c5\u5165\u80cc\u5305\u7684\u4ef7\u503c\u6700\u5927\u7684\u7269\u54c1\uff0c\u5229\u7528\u8fd9\u79cd\u89c4\u5219\uff0c\u4ef7\u503c\u6700\u5927\u7684\u7269\u54c1\u9996\u5148\u88ab\u88c5\u5165\uff08\u5047\u8bbe\u6709\u8db3\u591f\u5bb9\u91cf\uff09\uff0c\u7136\u540e\u662f\u4e0b\u4e00\u4e2a\u4ef7\u503c\u6700\u5927\u7684\u7269\u54c1\uff0c\u5982\u6b64\u7ee7\u7eed\u4e0b\u53bb\u3002\u8fd9\u79cd\u7b56\u7565\u4e0d\u80fd\u4fdd\u8bc1\u5f97\u5230\u6700\u4f18\u89e3\u3002\u4f8b\u5982\uff0c\u8003\u8651n=2, w=[100,10,10], p =[20,15,15], c = 105\u3002\u5f53\u5229\u7528\u4ef7\u503c\u8d2a\u5a6a\u51c6\u5219\u65f6\uff0c\u83b7\u5f97\u7684\u89e3\u4e3ax= [ 1 , 0 , 0 ]\uff0c\u8fd9\u79cd\u65b9\u6848\u7684\u603b\u4ef7\u503c\u4e3a2 0\u3002\u800c\u6700\u4f18\u89e3\u4e3a[ 0 , 1 , 1 ]\uff0c\u5176\u603b\u4ef7\u503c\u4e3a3 0\u3002
(ii)\u53e6\u4e00\u79cd\u65b9\u6848\u662f\u91cd\u91cf\u8d2a\u5a6a\u51c6\u5219\u662f\uff1a\u4ece\u5269\u4e0b\u7684\u7269\u54c1\u4e2d\u9009\u62e9\u53ef\u88c5\u5165\u80cc\u5305\u7684\u91cd\u91cf\u6700\u5c0f\u7684\u7269\u54c1\u3002\u867d\u7136\u8fd9\u79cd\u89c4\u5219\u5bf9\u4e8e\u524d\u9762\u7684\u4f8b\u5b50\u80fd\u4ea7\u751f\u6700\u4f18\u89e3\uff0c\u4f46\u5728\u4e00\u822c\u60c5\u51b5\u4e0b\u5219\u4e0d\u4e00\u5b9a\u80fd\u5f97\u5230\u6700\u4f18\u89e3\u3002\u8003\u8651n= 2 ,w=[10,20], p=[5,100], c= 2 5\u3002\u5f53\u5229\u7528\u91cd\u91cf\u8d2a\u5a6a\u7b56\u7565\u65f6\uff0c\u83b7\u5f97\u7684\u89e3\u4e3ax =[1,0], \u6bd4\u6700\u4f18\u89e3[ 0 , 1 ]\u8981\u5dee\u3002
(iii)\u8fd8\u6709\u4e00\u79cd\u8d2a\u5a6a\u51c6\u5219\uff0c\u5c31\u662f\u6211\u4eec\u6559\u6750\u4e0a\u63d0\u5230\u7684\uff0c\u8ba4\u4e3a\uff0c\u6bcf\u4e00\u9879\u8ba1\u7b97yi=vi/si,\u5373\u8be5\u9879\u503c\u548c\u5927\u5c0f\u7684\u6bd4\uff0c\u518d\u6309\u6bd4\u503c\u7684\u964d\u5e8f\u6765\u6392\u5e8f\uff0c\u4ece\u7b2c\u4e00\u9879\u5f00\u59cb\u88c5\u80cc\u5305\uff0c\u7136\u540e\u662f\u7b2c\u4e8c\u9879\uff0c\u4f9d\u6b21\u7c7b\u63a8\uff0c\u5c3d\u53ef\u80fd\u7684\u591a\u653e\uff0c\u76f4\u5230\u88c5\u6ee1\u80cc\u5305\u3002
\u6709\u7684\u53c2\u8003\u8d44\u6599\u4e5f\u79f0\u4e3a\u4ef7\u503c\u5bc6\u5ea6pi/wi\u8d2a\u5a6a\u7b97\u6cd5\u3002\u8fd9\u79cd\u7b56\u7565\u4e5f\u4e0d\u80fd\u4fdd\u8bc1\u5f97\u5230\u6700\u4f18\u89e3\u3002\u5229\u7528\u6b64\u7b56\u7565\u8bd5\u89e3n= 3 ,w=[20,15,15], p=[40,25,25], c=30 \u65f6\u7684\u6700\u4f18\u89e3\u3002\u867d\u7136\u6309pi /wi \u975e\u9012\uff08\u589e\uff09\u51cf\u7684\u6b21\u5e8f\u88c5\u5165\u7269\u54c1\u4e0d\u80fd\u4fdd\u8bc1\u5f97\u5230\u6700\u4f18\u89e3\uff0c\u4f46\u5b83\u662f\u4e00\u4e2a\u76f4\u89c9\u4e0a\u8fd1\u4f3c\u7684\u89e3\u3002
\u800c\u4e14\u8fd9\u662f\u89e3\u51b3\u666e\u901a\u80cc\u5305\u95ee\u9898\u7684\u6700\u4f18\u89e3\uff0c\u56e0\u4e3a\u5728\u9009\u62e9\u7269\u54c1i\u88c5\u5165\u80cc\u5305\u65f6\uff0c\u53ef\u4ee5\u9009\u62e9\u7269\u54c1i\u7684\u4e00\u90e8\u5206\uff0c\u800c\u4e0d\u4e00\u5b9a\u8981\u5168\u90e8\u88c5\u5165\u80cc\u5305\uff0c1\u2264i\u2264n\u3002

\u8fd9\u79cd\u89c4\u5219\uff0c\u4ef7\u503c\u6700\u5927\u7684\u7269\u54c1\u9996\u5148\u88ab\u88c5\u5165\uff08\u5047\u8bbe\u6709\u8db3\u591f\u5bb9\u91cf\uff09\uff0c\u7136\u540e\u662f\u4e0b\u4e00\u4e2a\u4ef7\u503c\u6700\u5927\u7684\u7269\u54c1\uff0c\u5982\u6b64\u7ee7\u7eed\u4e0b\u53bb\u3002\u8fd9\u79cd\u7b56\u7565\u4e0d\u80fd\u4fdd\u8bc1\u5f97\u5230\u6700\u4f18\u89e3\u3002\u4f8b\u5982\uff0c\u8003\u8651n=2, w=[100,10,10], p =[20,15,15], c = 105\u3002\u5f53\u5229\u7528\u4ef7\u503c\u8d2a\u5a6a\u51c6\u5219\u65f6\uff0c\u83b7\u5f97\u7684\u89e3\u4e3ax= [ 1 , 0 , 0 ]\uff0c\u8fd9\u79cd\u65b9\u6848\u7684\u603b\u4ef7\u503c\u4e3a2 0\u3002\u800c\u6700\u4f18\u89e3\u4e3a[ 0 , 1 , 1 ]\uff0c\u5176\u603b\u4ef7\u503c\u4e3a3 0\u3002 (ii)\u53e6\u4e00\u79cd\u65b9\u6848\u662f\u91cd\u91cf\u8d2a\u5a6a\u51c6\u5219\u662f\uff1a\u4ece\u5269\u4e0b\u7684\u7269\u54c1\u4e2d\u9009\u62e9\u53ef\u88c5\u5165\u80cc\u5305\u7684\u91cd\u91cf\u6700\u5c0f\u7684\u7269\u54c1\u3002\u867d\u7136\u8fd9\u79cd\u89c4\u5219\u5bf9\u4e8e\u524d\u9762\u7684\u4f8b\u5b50\u80fd\u4ea7\u751f\u6700\u4f18\u89e3\uff0c\u4f46\u5728\u4e00\u822c\u60c5\u51b5\u4e0b\u5219\u4e0d\u4e00\u5b9a\u80fd\u5f97\u5230\u6700\u4f18\u89e3\u3002\u8003\u8651n= 2 ,w=[10,20], p=[5,100], c= 2 5\u3002\u5f53\u5229\u7528\u91cd\u91cf\u8d2a\u5a6a\u7b56\u7565\u65f6\uff0c\u83b7\u5f97\u7684\u89e3\u4e3ax =[1,0], \u6bd4\u6700\u4f18\u89e3

贪心算法解决背包问题有几种策略:
(i)一种贪婪准则为:从剩余的物品中,选出可以装入背包的价值最大的物品,利用这种规则,价值最大的物品首先被装入(假设有足够容量),然后是下一个价值最大的物品,如此继续下去。这种策略不能保证得到最优解。例如,考虑n=2, w=[100,10,10], p =[20,15,15], c = 105。当利用价值贪婪准则时,获得的解为x= [ 1 , 0 , 0 ],这种方案的总价值为2 0。而最优解为[ 0 , 1 , 1 ],其总价值为3 0。
(ii)另一种方案是重量贪婪准则是:从剩下的物品中选择可装入背包的重量最小的物品。虽然这种规则对于前面的例子能产生最优解,但在一般情况下则不一定能得到最优解。考虑n= 2 ,w=[10,20], p=[5,100], c= 2 5。当利用重量贪婪策略时,获得的解为x =[1,0], 比最优解[ 0 , 1 ]要差。
(iii)还有一种贪婪准则,就是我们教材上提到的,认为,每一项计算yi=vi/si,即该项值和大小的比,再按比值的降序来排序,从第一项开始装背包,然后是第二项,依次类推,尽可能的多放,直到装满背包。
有的参考资料也称为价值密度pi/wi贪婪算法。这种策略也不能保证得到最优解。利用此策略试解n=

因为贪心算法的正确性无法被证明,而且有反例

  • 鍙板窞ACM涓涓涓叧浜鑳屽寘闂鐨勯鐩笉鐭ラ亾鍝噷閿欎簡
    绛旓細鍦ㄩ夋嫨鐗╁搧i瑁呭叆鑳屽寘鏃讹紝鍙互閫夋嫨鐗╁搧i鐨涓閮ㄥ垎锛岃屼笉涓瀹氳鍏ㄩ儴瑁呭叆鑳屽寘锛1鈮鈮銆傝繖棰樹笉鏄敤鍔ㄦ佽鍒掔殑鑳屽寘绠楁硶锛岃屾槸璐績绠楁硶锛屽洜涓洪鐩腑璇翠簡鍙互閫夋嫨鐗╁搧鐨勪竴閮ㄥ垎銆傜洿鎺ユ寜鎬т环姣旇椽蹇冦
  • 0-1鑳屽寘闂鐨勫绉嶈В娉曚唬鐮(鍔ㄦ佽鍒掋璐績娉曘佸洖婧硶銆佸垎鏀檺鐣屾硶...
    绛旓細/* 0-1鑳屽寘闂: /* 缁欏畾n绉嶇墿鍝佸拰涓涓儗鍖 /* 鐗╁搧i鐨勯噸閲忎负wi,鍏朵环鍊间负vi /* 鑳屽寘鐨勫閲忎负c /* 搴斿浣曢夋嫨瑁呭叆鑳屽寘鐨勭墿鍝,浣垮緱瑁呭叆鑳屽寘涓殑鐗╁搧 /* 鐨勬讳环鍊兼渶澶? /* 娉:鍦ㄩ夋嫨瑁呭叆鑳屽寘鐨勭墿鍝佹椂,瀵圭墿鍝乮鍙湁涓ょ閫夋嫨, /* 鍗宠鍏ユ垨涓嶈鍏ヨ儗鍖呫涓嶈兘灏嗙墿鍝乮瑁呭叆澶氭,涔 /* 涓嶈兘鍙鍏ラ儴鍒嗙殑...
  • 璐績绠楁硶 0 1 鑳屽寘闂 娌℃湁浠峰 鍙渶瑁呭叆鐨勬婚噺鏈澶т笖涓嶈秴杩囪儗鍖呭彲瀹圭撼...
    绛旓細娌℃湁浠峰硷紝灏辨槸璐ㄩ噺灏辨槸浠峰笺倂alue=cost.鍏朵粬鐨勯棶棰樺氨鍚屾櫘閫氱殑01鑳屽寘涓鏍 浜嗐
  • 鐢ㄥ姩鎬佽鍒掕В鍐崇煩闃甸摼涔樻硶闂鏃,鏈浼樺瓙缁撴瀯闂鏄浠涔
    绛旓細涔熷繀椤绘弧瓒虫渶浼樺瓙缁撴瀯鐨勬ц川锛屽嵆涓涓棶棰樼殑鏈浼樿В鍖呭惈鍏跺瓙闂鐨勬渶浼樿В銆傞偅涔堬紝濡備綍鍖哄垎浠涔堟椂鍊欎娇鐢ㄥ姩鎬佽鍒掞紝浠涔堟椂鍊欎娇鐢璐績绠楁硶鍛紵鍏稿瀷鐨勪袱涓棶棰橈紝0-1鑳屽寘鍜屽垎鏁拌儗鍖呫備袱鑰呴兘鍏锋湁鏈浼樺瓙缁撴瀯鎬ц川锛屼絾鏄椽蹇冪畻娉曞彧鑳界敤鏉ユ眰鍒嗘暟鑳屽寘鐨勯棶棰橈紝鑰涓嶈兘鐢ㄦ潵姹0-1鑳屽寘鐨勯棶棰樸傚嵆鍙湁鍒嗘暟鑳屽寘鍏锋湁璐績閫夋嫨鎬...
  • C璇█ 璐績绠楁硶姹鑳屽寘闂
    绛旓細鎵浠 浣犺緭鍑虹殑鏃跺欐槸鎸 1-2-3杈撳嚭鐨勮瘽 灏辩瓑浜庣涓涓槸鍘熸潵鐨刋2 绗簩涓槸X1绗笁涓槸X3 鑰屼笖浣犵殑鍐掓场鎺掑簭鐢ㄩ敊浜 鍙瘮杈冧簡 P[0]/K[0]鍜孭[1]/K[1] P[1]/K[1]鍜孭[2]/K[2]鍛ㄤ竴鎴戝幓瀛︽牎甯綘閲嶆柊鏀规敼 鎴戝鐨勬満鍣ㄦ病鏈塁++ 鍛ㄤ竴鏅氫笂鎴戜細涓婁紶绛旀~鎴戞渶杩戞濂戒篃瑕佸仛绠楁硶鐨勪綔涓殈includ...
  • 绠楁硶鎬庝箞瀛
    绛旓細3.鍐嶈鑳屽寘闂 浠闆寮濮嬪鍔ㄦ佽鍒 涓垜浠凡缁忚皥杩囦笁绉嶆渶鍩烘湰鐨勮儗鍖呴棶棰:闆朵竴鑳屽寘,閮ㄥ垎鑳屽寘,瀹屽叏鑳屽寘銆傚緢瀹规槗璇佹槑,鑳屽寘闂涓嶈兘浣跨敤璐績绠楁硶銆傜劧鑰屾垜浠冭檻杩欐牱涓绉嶈儗鍖呴棶棰:鍦ㄩ夋嫨鐗╁搧i瑁呭叆鑳屽寘鏃,鍙互閫夋嫨鐗╁搧鐨勪竴閮ㄥ垎,鑰屼笉涓瀹氳鍏ㄩ儴瑁呭叆鑳屽寘銆傝繖鏃朵究鍙互浣跨敤璐績绠楁硶姹傝В浜嗐傝绠楁瘡绉嶇墿鍝佺殑鍗曚綅閲嶉噺浠峰间綔涓鸿椽蹇冮夋嫨...
  • c璇█鑳屽寘闂
    绛旓細鑳屽寘闂绠楁硶鎬濊矾锛1銆佸皢鍚勪釜鐗╁搧鎸夌収鍗曚綅浠峰肩敱楂樺埌浣庢帓搴忥紱2銆佸彇浠峰兼渶楂樿呮斁鍏ヨ儗鍖咃紱3銆佽绠楄儗鍖呯殑鍓╀綑绌洪棿锛4銆侀噸澶2-3姝ワ紝鐩村埌鑳屽寘鍓╀綑瀹归噺=0鎴栬呯墿鍝佸叏閮ㄨ鍏ヨ儗鍖呬负姝紙瀵逛簬0-1鑳屽寘锛岀粓姝㈡潯浠朵负鑳屽寘鍓╀綑瀹归噺鏃犳硶瑁呭叆浠绘剰涓浠剁墿鍝佹垨鑰呯墿鍝佸叏閮ㄨ鍏ヨ儗鍖咃級銆俰nclude<stdio.h> void package(int n,...
  • Pascal璐績绠楁硶,姹傝В绛!
    绛旓細绛夊緢澶氱銆傚鏋滀粛鐒舵寜鐓цВ01鑳屽寘鏃剁殑鎬濊矾,浠[i][v]琛ㄧず鍓峣绉嶇墿鍝佹伆鏀惧叆涓涓閲忎负v鐨勮儗鍖呯殑鏈澶ф潈鍊笺備粛鐒跺彲浠ユ寜鐓ф瘡绉嶇墿鍝佷笉鍚岀殑绛栫暐鍐欏嚭鐘舵佽浆绉绘柟绋,鍍忚繖鏍:f[i][v]=max{f[i-1][v-k*c[i]]+k*w[i]|0<=k*c[i]<=v}銆傝繖璺01鑳屽寘闂涓鏍锋湁O(N*V)涓姸鎬侀渶瑕姹傝В,浣嗘眰瑙f瘡涓姸鎬佺殑鏃堕棿...
  • 鏁版嵁缁撴瀯涔璐績绠楁硶
    绛旓細18/9=2 濡傛灉鏀规垚锛氳儗鍖呴棶棰樻槸绠楁硶鐨勭粡鍏搁棶棰橈紝鍒嗕负閮ㄥ垎鑳屽寘鍜0-1鑳屽寘锛屼富瑕佸尯鍒涓嬶細閮ㄥ垎鑳屽寘锛氭煇浠剁墿鍝佹槸涓鍫嗭紝鍙互甯﹁蛋鍏朵竴閮ㄥ垎 0-1鑳屽寘锛氬浜庢煇浠剁墿鍝侊紝瑕佷箞琚甫璧帮紙閫夋嫨浜嗗畠锛夛紝瑕佷箞涓嶈甯﹁蛋锛堟病鏈夐夋嫨瀹冿級锛屼笉瀛樺湪鍙甫璧颁竴閮ㄥ垎鐨勬儏鍐点傞儴鍒嗚儗鍖呴棶棰樺彲浠ョ敤璐績绠楁硶姹傝В锛屼笖鑳藉寰楀埌鏈浼樿В銆傚亣璁...
  • 澶у璇剧▼銆婄畻娉曞垎鏋愪笌璁捐銆嬩腑鍔ㄦ佽鍒掑拰璐績绠楁硶鐨勫尯鍒拰鑱旂郴?_鐧惧害...
    绛旓細瀵逛簬姣忎釜瀛愭爲鐨勬牴锛屾壘鍒颁笅闈㈡瘡涓彾瀛愮殑鍊笺傛渶鍚庯紝寰楀埌涓妫靛畬鏁寸殑鏍戯紝鏈鍚庨夋嫨鏈浼樺间綔涓鸿嚜宸辩殑鍊兼潵寰楀埌绛旀銆傚彲瑙侊紝鏍规嵁浠ヤ笂鎻忚堪锛璐績绠楁硶涓嶈兘淇濊瘉鏈缁堢殑瑙e喅鏂规鏄渶濂界殑锛屾讳綋澶嶆潅搴﹁緝浣庯紱鍔ㄦ佽鍒掔殑鏈川鏄┓涓炬硶锛屽畠鑳戒繚璇佹渶浼樼殑缁撴灉鍜岃緝楂樼殑澶嶆潅鎬с傜壒鍒槸瀵逛簬0-1鑳屽寘闂锛屽畠搴旇姣旇緝閫夋嫨椤圭洰鍜屼笉...
  • 扩展阅读:6-12岁孩子注意力不集中 ... 护理交班十不交十不接 ... 儿童心算入门教程 ... 如何增加孩子记忆力 ... 扫一扫题目出答案 ... 珠心算的危害有多大 ... 什么样孩子适合学奥数 ... 珠心算到底该不该学 ... 珠心算为什么最好别学 ...

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