±³°üÎÊÌâµÄËã·¨Ñо¿ÓëʵÏÖ±¾¿Æ±ÏÒµÂÛÎÄ ¾«Æ·

Abstract£º Knapsack problem is a typical NP-C problem as well as algorithm design and analysis of the classical problems in the common field of operations research. It is very important to study the solution of the problem, whether in theory or in practice. After some research, a lot of classical methods solving this problem have been come up with ,and the exploration of this issue and applied research has been ongoing. Under the guidance of advanced theory, there are distinctive features such as scientific, efficient, economic, flexible and convenient features in solving the 0-1 knapsack problem .

So to solve the knapsack problem, the first premise is to design a good algorithm.To seek the solution of knapsack problem, it is necessary to design algorithms using dynamic programming at first. In this paper, four methods such as dynamic programming, backtracking, branch - Bound method and genetic algorithm respectively aiming at knapsack problem ,0-1 knapsack problem and a simple 0-1 knapsack problem carry out the algorithm design and analysis of time complexity, and give the specific algorithm design and implementation of the process.And descript detailedly the basic idea of algorithm by using specific examples in solving the issue with different ways .And then aiming at solving the 0-1 knapsack problem , compare four algorithms in detail and summarize the advantages and disadvantages of realization of four methods and reach a conclusion.How to apply the knapsack problem into the practical, and to design targeted for the practical algorithms of solving 0-1 Knapsack Problem and to solve the practical problems very well, is an area of computer workers¡¯ constantly thinking and study.

Key words£º0-1 knapsack problem dynamic programmi backtracking branch - Bound method genetic algorithm

2

1 Ð÷ÂÛ

1.1ÎÊÌâµÄÌá³ö¼°Ñо¿ÒâÒå

0-1±³°üÎÊÌâÊǼÆËã»ú¿ÆÑ§ÖеÄÒ»¸ö·Ç³£¾­µäµÄÓÅ»¯ÎÊÌâ¡£Ò²ÊDZ»Ö¤Ã÷Á˵ÄNPÄѶÈÎÊÌâ¡£ËüÊÇÔÚ1978ÄêÓÉMerkelºÍHellmanÌá³öµÄ¡£ËüµÄÖ÷Ҫ˼·ÊǼٶ¨Ä³ÈËÓµÓдóÁ¿ÎïÆ·£¬ÖØÁ¿¸÷²»Í¬¡£´ËÈËͨ¹ýÃØÃܵØÑ¡ÔñÒ»²¿·ÖÎïÆ·²¢½«ËüÃǷŵ½±³°üÖÐÀ´¼ÓÃÜÏûÏ¢¡£±³°üÖеÄÎïÆ·ÖÐÖØÁ¿Êǹ«¿ªµÄ£¬ËùÓпÉÄÜÑ¡ÔñµÄÎïÆ·Ò²Êǹ«¿ªµÄ£¬µ«±³°üÖеÄÎïÆ·ÊDZ£Ãܵġ£¸½¼ÓÒ»¶¨µÄÏÞÖÆÌõ¼þ£¬¸ø³öÖØÁ¿£¬¶øÒªÁгö¿ÉÄܵÄÎïÆ·£¬ÔÚ¼ÆËãÉÏÊDz»¿ÉʵÏֵġ£±³°üÎÊÌâÊÇÊìÖªµÄ²»¿É¼ÆËãÎÊÌ⣬±³°üÌåÖÆÒÔÆä¼ÓÃÜ£¬½âÃÜËÙ¶È¿ì¶øÆäÈËעĿ¡£µ«ÊÇ£¬´ó¶àÊýÒ»´Î±³°üÌåÖÆ¾ù±»ÆÆÒëÁË£¬Òò´ËÏÖÔÚºÜÉÙÓÐÈËʹÓÃËü¡£Î§ÈÆÕâ¸öÎÊÌâµÄÇó½â·½·¨ºÜ¶à£¬±ÈÈç̰À·Ëã·¨¡¢¶¯Ì¬¹æ»®¡¢·ÖÖ¦Ï޽硢»ØËÝ·¨¡¢ÒÅ´«Ëã·¨µÈµÈ¡£ÆäÖлØËÝ·¨Êdz£¼ûµÄÒ»ÖÖÇó½â·½·¨¡£

¶àÄêÀ´£¬±³°üÎÊÌâÎüÒýÁËÐí¶àÀíÂÛºÍʵ¼Ê¹¤×÷Õß¶Ô´ËÎÊÌâ×÷ÉîÈëµÄÑо¿£¬ÔÚÀíÂÛÉÏ£¬¾¡¹Ü±³°üÎÊÌâµÄ½á¹¹¼òµ¥£¬µ«ËüÈ´¾ßÓÐ×éºÏ±¬Õ¨µÄÐÔÖÊ£¬ÔÚʵ¼ÊÓ¦ÓÃÖУ¬Ðí¶à¹¤ÒµÎÊÌâ¶¼¿ÉÒÔÓñ³°üÎÊÌâÀ´ÃèÊöÇó½â£¬Èç×ʽðÔËËã¡¢»õ²Õ×°ÔØ¡¢´æ´¢·ÖÅäµÈ¶¼ÊÇÆäµäÐ͵ÄÓ¦ÓÃÀý×Ó¡£ÈçºÎ½«±³°üÎÊÌâÓ¦ÓÃÓÚʵ¼ÊÎÊÌâÖУ¬²¢ºÜºÃµØ½â¾öʵ¼ÊÎÊÌ⣬ÊǼÆËã»ú¹¤×÷Õß²»¶Ï˼Ë÷¡¢Ñо¿µÄÒ»¸öÁìÓò¡£

1.2 0-1±³°üÎÊÌâµÄËã·¨Ñо¿µÄ·ÖÎö

0-1±³°üÎÊÌâµÄËã·¨Ñо¿Ö÷ÒªÊÇͨ¹ýËã·¨Éè¼ÆÓë·ÖÎö֪ʶ£¬Éè¼Æ½â¾öÏà¹ØÎÊÌâµÄ¾¡¿ÉÄܸßЧµÄËã·¨²¢³ÌÐòʵÏÖ£¬¶øÇÒÄܹ»·ÖÎöËã·¨µÄ¸´ÔÓÐÔ£¬Í¨¹ýʵÑé½øÒ»²½Áì»á¸÷ÖÖËã·¨Éè¼Æ¼¼ÊõµÄ»ù±¾Ô­Àí£¬ÕÆÎÕËã·¨Éè¼ÆºÍ·ÖÎö·½·¨£¬Ìá¸ßËã·¨Éè¼ÆÓë·ÖÎöµÄÓ¦ÓÃÄÜÁ¦¡£

0-1±³°üÊÇÒ»ÀàºÜµäÐ͵ÄÓÅ»¯ÎÊÌâ,Ñо¿ËüÓкÜÖØÒªµÄʵ¼ÊÒâÒ壬Õâ²»½öÊÇÓÉÓÚËü½á¹¹¼ò½à£¬¿ÉÒÔ×÷Ϊ×ÓÎÊÌâΪÑо¿¸ü¸´ÔÓµÄÎÊÌâµì¶¨ÀíÂÛ»ù´¡£¬ÓкܸߵÄÀíÂÛÑо¿¼ÛÖµ£¬¶øÇÒÓÉÓÚËüÊÇÐí¶àʵ¼Ê¹¤³ÌÓ¦ÓÃÎÊÌâµÄÖÖͨÓû¯ÃèÊö£¬Ôںܶàʵ¼ÊÎÊÌâµ±ÖÐÓÐ×ŷdz£¹ã·ºµÄÓ¦Óñ³¾°£¬ÀýÈçÏîÄ¿¾ö²ßµÈ¡£ËûÊÇ×î»ù±¾µÄ±³°üÎÊÌ⣬¼´¶ÔÒ»¸öÎïÌåҪôѡÓã¬ÒªÃ´¾ÍÅׯú£¬²»Äܽ«Ò»¸öÎïÌåÔÙ¼ÌÐøÏ¸·ÖµÄÇé¿ö¡£Ëü°üº¬Á˱³°üÎÊÌâÖÐÉè¼Æ×´Ì¬¡¢·½³ÌµÄ×î»ù±¾Ë¼Ï룬ÔÚ¾­¼Ã¹ÜÀí¡¢×ÊÔ´·ÖÅ䡢Ͷ×ʾö

3

²ß¡¢×°ÔØÉè¼ÆµÈÁìÓòÓÐ×ÅÖØÒªµÄÓ¦ÓüÛÖµ¡£ÔÚ¼ÆËãÀíÂÛÖÐÊôÓÚNP-CÍêÈ«ÎÊÌ⣬Æä¼ÆË㸴ÔÓ¶È£¬´«Í³ÉϲÉÓö¯Ì¬¹æ»®À´Çó½â¡£±³°üÎÊÌâ¾ÍÊÇÔÚ×ÊÔ´ÓÐÏÞµÄÌõ¼þÏ£¬×·Çó×ܵÄ×î´óÊÕÒæµÄ×ÊÔ´ÓÐЧ·ÖÅäÎÊÌâ¡£

1.3¿ÎÌâµÄÖ÷ÒªÑо¿ÄÚÈÝ

1.3.1±³°üÎÊÌâµÄÃèÊö

±³°üÎÊÌâÊÇÕûÊý¹æ»®ÖеÄÒ»ÀàÌØÊâÎÊÌ⣬ÔÚÏÖʵÉú»îÖоßÓй㷺ӦÓá£Èç¹ûÄÜÌá³öÇó½â´ËÎÊÌâµÄÓÐЧËã·¨£¬Ôò¾ßÓкܺõľ­¼Ã¼ÛÖµºÍ¾ö²ß¼ÛÖµ¡£

ÎÊÌâµÄÒ»°ãÃèÊöÊÇ£ºÂÃÐÐÕß±³°üµÇɽ£¬±³°üµÄ×î´ó³ÐÖØÎªM£¬ÏÖÓÐn¸öÎïÆ·¿É¹©Ñ¡Ôñ×°Èë±³°ü£¬µÚi¸öÎïÆ·ÝºÁ¿Îªwi£¬¼ÛֵΪpi£¬¼Ù¶¨ÎïÆ·iµÄÒ»²¿·Öxi(0?xi?1)·ÅÈ˱³°ü£¬»ñµÃ¼ÛֵΪxipi£¬ÓÉÓÚ±³°ü×î´ó³ÐÖØÎªM£¬ÒªÇó×°ÈëÎïÆ·×ÜÖÊÁ¿²»¹ý³¬¹ýM£¬ÎÊÂÃÐÐÕßÓ¦¸ÃÈçºÎÑ¡ÔñÎïÆ·×°Èë±³°ü£¬Ê¹µÃ×°ÈëÎïÆ·µÄ¼ÛÖµ×ܺʹﵽ×î´óÖµ¡£

±³°üÎÊÌâµÄÊýѧÃèÊöÈçÏ£ºÒªÇóÕÒµ½Ò»¸önÔªÏòÁ¿(x1£¬x2?xn)£¬ÔÚÂú×ãÔ¼

??xw?MÊøÌõ¼þ£º??iiÇé¿öÏ£¬Ê¹µÃÄ¿±êº¯Êýmax?xi?0?x?1i?p£¬ÆäÖУ¬1?i?n£»M>0£»

iwi>0£»pi>0¡£Âú×ãÔ¼ÊøÌõ¼þµÄÈκÎÏòÁ¿¶¼ÊÇÒ»¸ö¿ÉÐн⣬¶øÊ¹µÃÄ¿±êº¯Êý´ïµ½×î´óµÄÄǸö¿ÉÐнâÔòΪ×îÓŽâ[1]¡£ 1.3.2 0-1±³°üÎÊÌâ

¢Ù 0-1±³°üÎÊÌâµÄÌá³ö

¸ø¶¨n ÖÖÎïÆ·ºÍ1¸ö±³°ü¡£ÎïÆ·i µÄÖØÁ¿ÊÇwi£¬Æä¼ÛֵΪpi£¬±³°üµÄÈÝÁ¿ÎªM¡£ÎÊÓ¦ÈçºÎ×°Èë±³°üÖеÄÎïÆ·£¬Ê¹µÃ×°È˱³°üÖÐÎïÆ·µÄ×ܼÛÖµ×î´ó£¿ÔÚÑ¡Ôñ×°È˱³°üµÄÎïÆ·Ê±£¬¶ÔÿÖÖÎïÆ·iÖ»ÓÐÁ½ÖÖÑ¡Ôñ£¬¼´×°Èë±³°ü¡¢²»×°Èë±³°ü¡£²»Äܽ«ÎïÆ·i ×°È˱³°ü¶à´Î£¬Ò²²»ÄÜÖ»×°È벿·ÖµÄÎïÆ·i¡£¸ÃÎÊÌâ³ÆÎª0-1±³°üÎÊÌâ¡£

¢Ú ÎÊÌâ·ûºÅ»¯

0-1±³°üÎÊÌâµÄ·ûºÅ»¯±íʾÊÇ£¬¸ø¶¨M>0£¬ w i >0£¬ pi >0£¬1?i?n £¬ÒªÇóÕÒµ½Ò»¸önÔª0-1ÏòÁ¿ÏòÁ¿(x1£¬x2?xn)£¬ X i =0 »ò1 , 1?i?n, ʹµÃ

?xwii?M £¬¶øÇÒ?xip´ïµ½×î´ó

i[2]

¡£

4

2 0-1±³°üÎÊÌâµÄʵÏÖ

2.1 0-1±³°üÎÊÌâÔÚ¶¯Ì¬¹æ»®ÖеÄʵÏÖ

2.1.1 ¶¯Ì¬¹æ»®µÄ»ù±¾Ô­ÀíÓë·ÖÎö

¶¯Ì¬¹æ»®Ëã·¨µÄ»ù±¾Ë¼ÏëÊǽ«´ýÇó½âÎÊÌâ·Ö½â³ÉÈô¸É¸ö×ÓÎÊÌ⣬ÏÈÇó½â×ÓÎÊÌ⣬Ȼºó´ÓÕâЩ×ÓÎÊÌâµÄ½âµÃµ½Ô­ÎÊÌâµÄ½â¡£µ«ÊǾ­·Ö½âµÃµ½µÄ×ÓÎÊÌâÍùÍù²»ÊÇ»¥Ïà¶ÀÁ¢µÄ¡£²»Í¬×ÓÎÊÌâµÄÊýÄ¿³£³£Ö»ÓжàÏîʽÁ¿¼¶¡£Èç¹ûÄܹ»±£´æÒѽâ¾öµÄ×ÓÎÊÌâµÄ´ð°¸£¬¶øÔÚÐèҪʱÔÙÕÒ³öÒÑÇóµÃµÄ´ð°¸£¬¾Í¿ÉÒÔ±ÜÃâ´óÁ¿Öظ´¼ÆË㣬´Ó¶øµÃµ½¶àÏîʽʱ¼äËã·¨¡£Ëü°ÑÒÑÖªÎÊÌâ·ÖΪºÜ¶à×ÓÎÊÌ⣬°´Ë³ÐòÇó½â×ÓÎÊÌ⣬ÔÚÿһÖÖÇé¿öÏ£¬Áгö¸÷ÖÖÇé¿öµÄ¾Ö²¿½â£¬°´Ìõ¼þ´ÓÖÐѡȡÄÇЩ×îÓпÉÄܲúÉú×î¼ÑµÄ½á¹ûÉáÆúÆäÓࡣǰһ×ÓÎÊÌâΪºóÃæ×ÓÎÊÌâÌṩÐÅÏ¢£¬¶ø¼õÉÙ¼ÆËãÁ¿£¬×îºóÒ»¸ö×ÓÎÊÌâµÄ½â¼´ÎªÎÊÌâ½â¡£²ÉÓô˷½·¨Çó½â0-1±³°üÎÊÌâµÄÖ÷Òª²½ÖèÈçÏ£º

¢Ù·ÖÎö×îÓŽâµÄ½á¹¹£º×îÓÐ×ӽṹÐÔÖÊ£» ¢Ú½¨Á¢µÝ¹é·½³Ì£» ¢Û¼ÆËã×îÓÅÖµ£» ¢Ü¹¹Ôì×îÓŽâ[4]¡£

¶¯Ì¬¹æ»®Ëã·¨µÄÿһ²½¾ö²ß¶¼ÊǸù¾Ýǰһ²½µÄ״̬²ÎÁ¿À´¾ö¶¨ÕâÒ»²½×´Ì¬²ÎÁ¿µÄÉèÖã¬Ò²¾ÍÊÇ˵£¬´Ó³õʼ״̬µ½×îÖÕ״̬Ҫ¾­¹ý¶à¸ö¹ý³Ì£¬¾­Àú²»Í¬µÄ״̬£¬²»¶ÏµØ¸ù¾ÝÉÏÒ»²½×´Ì¬¾ö¶¨ÏÂһ״̬£¬´Ó¶øÐγÉÁËÒ»¸ö¾ö²ßÐòÁУ¬×îÖÕ½«Õû¸öÎÊÌâ½â¾ö£¬Õâ¾ÍÊǵäÐ͵Ķà¶Î¾ö²ßµÄÌØÐÔ¡£

ÓÉÉÏÃæµÄ¶¯Ì¬¹æ»®·¨µÄ½éÉÜ£¬¿ÉÒÔ¿´³ö0-1±³°üÎÊÌ⣬ÊÇ·ûºÏ¶à¶Î¾ö²ßµÄÌØµãºÍ¾ßÓÐÖØµþ×ÓÎÊÌâ¡£Òò´Ë£¬ÔÚÉè¼Æ0-1±³°üÎÊÌâ½â¾ö·½°¸Ê±£¬¿ÉÒÔ½«Õû¸öÎïÆ··Åµ½±³°üµÄ¹ý³Ì£¬¿´³ÉÒ»¸öÈ¡ÎïÆ·µÄ¹ý³Ì¡£ 2.2.2 0-1±³°üÎÊÌâµÄʵÏÖ

¢Ù ×îÓÅ×ӽṹÐÔÖÊ

0-1±³°üÎÊÌâ¾ßÓÐ×îÓÅ×ӽṹÐÔÖÊ¡£Éè(y1£¬y2?yn)ÊÇËù¸ø0-1±³°üÎÊÌâµÄÒ»¸ö×îÓŽ⣬Ôò(y2£¬y3?yn)ÊÇÏÂÃæÏàÓ¦×ÓÎÊÌâµÄÒ»¸ö×îÓŽ⣺

max?vkxkk?in

5

ÁªÏµ¿Í·þ£º779662525#qq.com(#Ìæ»»Îª@)