an exact algorithm for the subset sum problem

10
Discrete Optimization An exact algorithm for the subset sum problem Nei Yoshihiro Soma a , Paolo Toth b, * a Instituto Tecnol ogico de Aeron autica ± ITA, Divisao de Ci^ encia da Computac ß~ ao ± IEC, S~ ao Jos e dos Campos, 12.228-900, SP, Brazil b DEIS, University of Bologna, Viale Risorgimento 2, I-40136 Bologna, Italy Received 18 January 1999; accepted 18 October 2000 Abstract The subset sum problem SSP) is de®ned as: ``Given n positive integers w 1 ; ... ; w n , ®nd a combination amongst them such that their sum is the closest to, but not exceeding, a positive integer c''. We suggest an exact algorithm by in- troducing a new type of Core Problem and also, by using an improved version of Bellman's recursion. We show that the resulting algorithm is bounded in time and space resource utilizations, respectively, by OMaxfn log 2 c 2 c; c log 2 cg and On c. In addition to the sharp memory requirement decrease in comparison with any dynamic programming- based algorithm, the search space, for a vast range of instances, is restricted only to feasible states. Ó 2002 Elsevier Science B.V. All rights reserved. Keywords: Combinatorial optimization; Subset sum problem; Dynamic programming; Core problem; Binary tree 1. Introduction In the well-known subset sum problem SSP), one is faced with n items, associated with positive integer weights w 1 ; ... ; w n , and is required to ®nd an item subset such that the corresponding weight sum is the closest to a given integer capacity c, but does not exceed it. The SSP is NP-Hard cf. [5]) but since the ®fties it is known that it can be exactly solved in pseudo-polynomial time and space by Bellman's classic dynamic programming tech- nique. The algorithm MTSL suggested by Martello and Toth [8] was the ®rst to exactly solve the problem in polynomial time and space for a large range of instance sets denoted by Pg's), albeit with an exponential time behaviour as its worst case. Recently, Pisinger cf. [11]) proposed a new algorithm decomp) which, in addition to solving Pg's in polynomial time and space, has pseudo- polynomial behaviour in its worst-case, i.e., On:c in time and space. The exact algorithm suggested here also has a polynomial performance, equivalent to MTSL and decomp, for Pg's, but with much better worst-case behaviour, i.e., On c in space and OMaxfn log 2 c 2 c; c log 2 cg in time. The al- gorithm is based on a new de®nition of the Core Problem introduced by Balas and Zemel [2] for the classic 0±1 Knapsack problem, and an improvement of the multiple stages ± single state algorithm proposed by Yanasse and Soma [17]. European Journal of Operational Research 136 2002) 57±66 www.elsevier.com/locate/dsw * Corresponding author. Tel.: +39-051-2093028; fax: +39-051- 2093073. E-mail address: [email protected] P. Toth). 0377-2217/02/$ - see front matter Ó 2002 Elsevier Science B.V. All rights reserved. PII: S 0 3 7 7 - 2 2 1 7 0 0 ) 0 0 3 2 9 - 5

Upload: nei-yoshihiro-soma

Post on 04-Jul-2016

214 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: An exact algorithm for the subset sum problem

�������� �������� �

�� ����� ��� ���� � � ��� ������ �� � ���

��� � ������ � ��� �� � � �����

� ��������� ��������� ���������� � ���� ������� ������� � ������������ � ���� ���� ����� �� ������� ������� !!� �"� #��$��� ����� %�������& �' #������� (��� )���������� �� ��*!�+, #������� ����&

������� !" #�����$ !%%%& ������ !" ��� ��� '(((

��������

��� ������ �� � ��� )���* �� �+�� ��, --.���� � ������ �������� �!� � � � ���� +� � � ������ � � ���� ���

���� ���� ����� �� �� ��� �� ���� � � ��� � � ����� ���� � ������ ������� //0 1� ������� �� ����� ��� ���� �$ ��2

�� ����� � ��3 �$� � ���� ������� �� ��� � �$ ����� �� �� �� ����� � � 4�����/� ������� �0 1� �� 3 ���� ���

��������� ��� ���� �� � �� � �� ��� �� ���� ��� ���� ��������� ��� ����������$� �$ ��5������ � �' �'��� � � �' ���

�� ���� ��0 6� � ��� � � ��� ���� � �$ ��7������� ������� �� � ���� � 3��� ��$ $���� � ������2

���� ��� ����� ��� ������ ����� � � � ���� ����� � ���������� �� ��������� ��$ � �������� ������0 � '((' 8�������

������� 4090 ��� ������ ������� 0

-&.�� �/ : ����� ���� ������� �& ������ �� � ���& �$���� � ������& : �� � ���& 4����$ ����

� ���� ������

6� ��� 3���2;� 3� ������ �� � ��� )���*� �� �� ���� 3��� � ����� ��� ����� 3��� ������������� 3������ �!� � � � ���� �� �� ��7���� � +� �� ��� ��0�� ���� ���� ��� � ���� � ��� 3�������� �� ��� �� ���� � � ����� ������� ������$ � ��� �� � � ����� ��0 ��� ��� �� ���� )��0 <=>* �������� ��� +����� �� �� ;� 3� ���� �� ��� �� ������$� ��� �� ��� 2 �$� ��� ��� �� ���� �$4�����/� ������� $���� � ������ ����2��7��0

��� ��� ���� 5��? �������� �$ 5������ �� � �� <"> 3�� ��� +��� � ������$ � ��� ���

� ��� �� �$� ��� ��� �� ���� � � � ���������� � �������� ���� ) �� �� �$ ����/�*� ������3��� �� �� ������� ��� ������ �� �� ��� 3 �������0 �������$� �������� )��0 <!!>* � �� � ��3��� ���� ) �����* 3����� �� � ��� � � � ���������/� �� �$� ��� ��� �� ����� ��� ��� 2 �$� ��� ������ �� �� ��� 3 ���2����� �0�0� �������� ��� �� ����0

��� ����� ��� ���� �������� ���� ��� ��� � �$� ��� ��� ������ �7�������� � 5��?�� ������ � � ����/�� ��� 3��� ��� ������3 ���2���� ������ ��� �0�0� ���� �� �� ���� �� ��5������ � �' �

'��� � � �' ��� �� ���0 ��� ��2� ���� �� ���� � � ��3 �+���� � � ��� ����������� ���� ��� �$ 4���� �� @��� <'> � ���� ������� (A! B�����; � ���� �� ���� ����� � ��� ������ ������ A ����������� ��� ���� � �� �$ ������� �� � �<!C>0

8�� ��� # ����� � ������ ��� �������� !DE )'(('* =CAEE

3330��������0� F� ����F �3

�: ���� � ��� ���� �0 ���0, GD%2(=!2'(%D('"& ���, GD%2(=!2

'(%D(CD0

������ � ���/ � ��H ���0���� 0�� )�0 � ��*0

(DCC2''!CF('FI 2 ��� �� �� ����� � '((' 8������� ������� 4090 ��� ������ ������� 0

�66, � ( D C C 2 ' ' ! C ) ( ( * ( ( D ' % 2 =

Page 2: An exact algorithm for the subset sum problem

6� ��� ���� ����� � 3� ����J$ ������� ��� ���� ������ � 4���� �� @���/� ���� ��������3��� ��� �� ����� �$ 5������ �� � �� <">��� ��� ��� ������� �� � �/� ������ ������ A������ ����� ��� ����� ����� ����� �+���� ���� � ���� �� ��� � � ��� ����3 �; ���� ��3 ��� ����0

����� � D ���� ���� ��� ��� ���� 3��� ���� ���� � ��� ���������� � ������ � �� ����� � �� 3��� ����� � ��� � ����� ��� ������� ��������0

� ��� ���� ������� �� ��� �������� ������ � ����������� ���������

��� ��� �� ������$ � ������ ��

5������ � ���

�!�

���K��� � ��

�!� � ��

�!�

3���� � ! �� ��� � �� ������� � � ( ����3���06� �� ����� 3��� �� � �� � ���������$ ���� ���� �L������ ��� ������ ������� ���������

�! � � � �� � � �� � !� � � � � �0 ��$ �� ���� � � ����� ������ �� ��� �� ��� �� �����$ )��0<%>*0

� ���� �������� �� �+�� �$ 4���� �� @���<'>� 3�� ��������$ ������ � � ��� ��� B�����;� ��� )B�*� �� �� �� �� �� �+� �� ��� � � ��� ��� ����� �� 5������ �� � �� <">0 ��� ������� � �� � � �� ��� � �� � �� �� � ���� ��� � ���� )���� ���* � �� ����/� ���� ���� �� ���� � ���� �� 3��� ����� �������$� ��� �� � �� �� ��0

6� �� ����� ���� ��� ���� ��� �� � � ;� 3� ��� ������ ������ ��� �� �� ��������$ � ���� �� ��2����� � �� ��� ����� 0 ���� ����� ���� ���� � M ���3��� ��� ���� � ��� ���� ��� �� ���������� ��� ��� �� ��;�� ��� ��� ���� ������ ���� �� � ���� ��� ���� � ���� � �$ � � �������� �� �� �� �� �� �� � ������ ����������$� ����� �� 3��� �� ������ ��0

��� 5������ �� � �� <"> �� ��� +��� �2������� ��� ������ .��1� �� �� ��� ������ ���� �� � �� 3�,

�� ����!�!

��

�� � � � �� � ���

� ���� � !� � � � � �� !�

� ���� � �� !� � � � � ��

�'�

���� ��� ���� ������� �� �+�� ��

5������ �� �����

����

���K��� � ����

����

� � �������!

�!��

� ( � !� � �� �� � � � � �� ��

�D�3���� � � 5�����'� N=�� �� ��� � �L������ � )D*��� � ��� �� � �2���������� � ��0

��� � �� ��� 4@"( �������� �$ 4���� �� @��� <'> �������� �� �� � ����������$� �$�������� ��� ������� ��� � 3������ ��!� � � � ������� ����� ����� ��$ �� � �� �� 3����� � �� �� � �� ��� � ��� � ��� �����!� � � � ����� �� �� ���� �� � � �� �� � �0 6��� �

��� � � �� ���� ��� ��������� ������ �� ��2

������� � ��� ��� �0 �����3���� ��� ��� 3������������ �� � 3��� � �� ��� �������� 3����� ��

�� ��� ��������� ������ � ������� � ���� � �� �0 6� �� � � �L���� � ��� ���� ��� ������ ��� �� ���� ��� ����� ��7���� � � ���� ��������� � ��2 ��� ��� � �� � �� � �$ ���� )��0 <%>*0

����������� �� ����� � � �+���� ��� ����������� �� 3������ 3��� ��� �������� �� ?�3��� <E>��� ��� � �� � ��� �� O�$�� �� ������ <N> �� �� �������$� �� �������� <!(>0

6� � � ���� � � �� ��� ����� �������!�! � ��

� �� � � )D*� ���� �� � ��� � � ��� ���������+�� � ! �$ ��� ���� �������� ��� ��������� �� !� �� �� ! ��� ��� +�� � !0 �����3���� � �� ���� �� ��� � ���� ������ ��� ��� �����0�� ��� )D* �� � ��� �$ � � ������ � � �$2���� �� ������ �� ���� ������0

��� ������ ������ A ������ ����� ������� �� � � <!C> ��� ����2��3 � ���� ��� ��� ��� ��� ���������� �� ��� �M����� �� ���� � �$������ ������� 3��� ������ �������� � �� �� ���������� )����������* �� ���� ��7��������0

=" 4�2� ����� "� ���1 5 ������� ������� �' 6��������� )���1 �+, 7�!!�8 93�,,

Page 3: An exact algorithm for the subset sum problem

��� ������� � �� �� � � ��� �� ��$ '���0������0 6� � ��� �� �� ������� � � ������ �� �����2����� �� ���� � ����� � � � ����� �����0 � '���0����� )�* �� ���� ���� ��� ����� ����1����� :�������,

���! � � �� � ( � ! � � � !� � � � � � ���

� �������� � ���� �0��� ���������� � ������ � � � ��� ��� 2

���� ��

������ � � ��

������ � � ( ������� �� ������ � ( �� ����� � �� ������� !� � � � ��� ���� ��� ��� !� � � � ��� !�

���

�N�O����� � � �� ��� ��� ���� ������ �� �

����� � ���������� � ��� � � 3���� � �������� �������� �� ������ � �0�0 ����� � ����� ���� ��� �3 ������ �� ������� �7���� ��,

� �! � � ��� � (

� ! � � � !� � � � � � �� � �!

�! � � ��� � � �( � ! � � � !� � � � � � ! ���� � �������� � ���� �05 �� ���� �� ���� � (� ���� ������ � � � (�� ��� ������ �� ������� �7���� �,

� �!�! � �

��� � � � � � ( � ! � � � !� � � � � � !� ������� � ���� � �������� � ���� �0 � ���� ����� � � ����� �������� ����� ��� ������ ����� � !� � � � � ���� ��� ��;�� ��� � ��� ����� �0

O����� � � ��� �� ������� ������,

���� � � � !� � � � � �� �=��� �� � � ��� ���� � ���� ��� � � � �!� � � � � ��� � �0

��� ��� ���� �� � 3��� �� ���� � ���� � � ����� �� � �� � �0�0� �� �� � ����� ������� ���� � � �0 6� ��� ���� � ���� � ����� �� �M������� � ���� �� �� � 3��� �� � �� �5���� � !� � !� � � � � �0

��� ���� � ���� � ����� �� ����� �$

� � 5�� �� � ������

� (� �� � (� � � � � ��

�E��� ��� ��������� )*� � !� � � � � �� ��� � ! ��� ������� ��� ��� ��� � �� ���

����� � !� �� � �� �� ������� � � � � �� ����� � (�

�C�6� �� � � �L���� � �� 3 ���� ��� ������� ��� ��� �� � �$ ������ �� ��� � �$ ��7���������$ ���� ��0

6� �� 3 ��� ���� ���� ���� ��� �K � �2� ����� � ���� ������� � �� ������ � � �$������ ������ �� ��� 3�$ �������� � ���� �� ����� �� �� ��� ���� � �0�0� ��� ��������� ������ ��� ��� K��� ��� �� ���� � � 3���� ��� ���� �;������������ �� ; �� ��� ��� �!� � � � � �� �� ��������$� � � � ����� '���0� ����0 ��� ������� � ��� ���� ��� ���� �;������������ �� ; 3���� �������� � ����� ����� ����� � ������ � ������3���� � �����+���� ���2 M � ��� � ��� �� �$ ��������$ � ��� ��� � � ���� � �� �2����� 0

� ��� ��� ���������

��� ��� ���� � �� ����� �� � �� ��� ��� �+��� �� � ���� � ���� �������� �� �� ��� 2���� � ���� � ����� �� � � �7��� � � ���� � ��2������� � �� ��� � �� 3�0 O � ��� ��;� � ������$�3� ������ ��� ��� ����� ��������$0

+��� �1 �� ���0��

4���� �� @��� <'> �� �������� �� � �� <!!>� �� ���� �� ��� ���� � ���� � � � )!*� ��� ������������� ��� )�*� ����� �$ )'*� ��� � � ! � ��� ���3������ �K ���$ � ��� ���������� �����05 �� ���� 3��� ���� � ���$ �� � � � � � �0�0�� � ( ���� � � !� � � � � </� ���� ���� �� � � ��� < �� �� � �0 1� ��� ��� � 3� 3��� �� ���������� � ���$ �$ �������� � � ��$ ��� ������� � ���� �������� ��� )� � !*� ��� ��� � ��� � � ����2����� ���� )� � ��! � � � � � � !*0 6� � ��� ��3� ��� � ��� �� �3 �M����� ������7��� � � +� 2��� ��� �������� ��� �� 3�����0 1��� � � ����2�� � � ����� � ��� 3� 3��� ������ �� � ��3 �� �M����� �+���� � � ��� ���� �������0

��� ����$ � � ����� �� ��� ���)�*� � �2�� ��� ���� ��� ��� � �,

5������ � ����!�!

���K��� � ���!�!

� �� � �"�

� ( � !� � !� � � � � �� !�

3���� � ��� � � � � ��� � � ��� �� ��

4�2� ����� "� ���1 5 ������� ������� �' 6��������� )���1 �+, 7�!!�8 93�,, =%

Page 4: An exact algorithm for the subset sum problem

6� �7�����$ ����� )�0�0� � � � * � � � ����� �� ��� ���)�*� ����� �� �� ����� ���� ��� ����� ���� � )� � �* � � ��� � ���� � ��� ��� �� ��� � �� 0

��� ��� ���� �� � � �+���� ��3 � �� ����� � � ����� ��� �������� ��� �� 3����� 3��� ����� ������$ �� ��� � �� 3��� �������� ��,� ��� � �� ��� 4@"( �� � 3��� ��� � ��� � ���� ���� ��� ����� � ��� 3����� ������$ �� �� �� ��� � ������ � ������ � � ������� )���2���* ���� 3���� �$ ���������$ � � � ��������3�����0

� � ��� ������ ���� $ ������ ��� ��������� � 3�� � �� � � � ��� ��� )��0 <!=>* �� �� ���� �� ��� � �L������ � ��� ��� ���� ��� �� � �2���������� � ��� ��� � 3��� �� � ������ �$ ����������� 3���� ��� ��2� ����� � ��� �� ���� ��� �$� ����$� �� � � ��� ���� ������ )��0 <%�!N>*0��� +��� ������� � � � ��� ��������� � � ��

�� � )4@"(���* �� ���� � ��� +��� �������� ��� ��� �0�0� ��� ������ � ������� ����� �� ����� ������ � � ��� �������� 3�����0 ��� ��� � ������� �)�.?�* ����� ��� ������ ������ � ��� ���� ����� � �� �� 3���� ���$ ��������$ ����� �0�0� ���$��� � � ��� � ����������$ ��� ����� �� ��������0 O � ����� �3 ������� �� � ��2� �������� �� ��� 3�� ��� � �� � �0�0� ��� ���� 3����� � �� ��� �� �� � ������ � ��� ����0

��� ���� �3 ������ ������� ��� � ���2�� ��� ��������� ������ �� 3��� ��� ����� � 2�� ���� � � ��������� � )�� ��*� �� ����������� � 3��� �� ��� ���)�*0

6� ����� !� � �� ��� ����� � � �������������� �������� �� �� 3� �� ��������� ��� +�� � !� � � !((� � �'� �� ��D� ��� � ���� )� ���*3� �� � �L������ 3��� ��� �$ �������� �� ����������� !� !(��� � � ���!(�

N�� �� � ����� ��� ���2

��� ' �� D0 ��� ���� ���� �� !(�((( ����������� ��� � ���� 3��� � ��� �$ ����� 2��30 ���������� �� ����� ��� ��������� � ����� � � 3������� � ���� � ��� � +�� � ! �������� ��� 2���� � ���� � ����� � � �0 6� ��� ���� ������ ���������� ����� ������� �� ��� � � �� � ��� 645 "E(� � � +� ��� � �� �� ��� �� 3�0 ���� �L������ 3��� ��3� �� ��D�� 3��� ��� ������� ����0

��� ������� ������� �� ����� ' 3��� ������$������ ������ �� �������� 4@"(��� ��� �� �� ����� �� ���� 4@"(� 3���� �� ���� ��� �� �� ����� �� ���� �.?�0 6� �� 3 ��� ��2�� ���� ���� ��� ������� ���� � � ��� ����������� ���� � ����� �� ��� � �� ������� � � ��� �3���� �� �� ��������� � ��� ������ ����$ ��2����� ���$ ��� ��� ���$ ���� �� ��7���� ��� ���� ��� � � �$0

��� � ����� �M������� ��� �� 3� �� ����� !�3���� �.?� ������$ � ���� ������ ������� ����4@"(��� �� 4@"(0 � ������ �������� � � � ���������� �� � �� �� ��� ���� ���� 4@"( �� 4@"(��� ��� � ��� 3����� ��� ��!� � � � ���� ��� ����� �� ���� � �L������0 5 �� ���� �� �� ��� ���� � � ������ � 3������ � �� ��� ��!� � � � �������� ���� ����� �� �� �7��� � � ����� � � � ��� � � � � ��� ��� � � �� � �� 0 ����� ��� ����3��� � 3�� �� ���� 3��� ���� ������ 3������ ��

����� !

��� � �� ���)�*

� 4@"( 4@"(��� �.?�

� �'� ��D� � �'� � �D� � �'� � �D�! (0=' (0(' C0"C (0(N N(0=N %N0!!

' 'E0C% D0%" D(0"D E0D= %%0'! %%0="

D C!0C= DC0DD C=0CD ='0C% %%0%E %%0%E

N "D0ND C(0%= %=0DD %D0NN !((0(( !((0((

= %!0CE "N0'= %%0=" %%0D' !((0(( !((0((

E %C0!N %=0(N %%0%" %%0%( !((0(( !((0((

C %%0!! %"0D= %%0%% %%0%N !((0(( !((0((

" %%0"! %%0D% %%0%" %%0%E !((0(( !((0((

% %%0%( %%0CE %%0%C %%0%= !((0(( !((0((

!( %%0%! %%0"% !((0(( %%0%" !((0(( !((0((

E( 4�2� ����� "� ���1 5 ������� ������� �' 6��������� )���1 �+, 7�!!�8 93�,,

Page 5: An exact algorithm for the subset sum problem

4@"(� �� � � ������� ������ �� 4@"(���� � � ���������� � � ��� ����� � ���� � ���� �� � �� � � ��� ��� �� ��� ���� � � ��� �3 ������0 ����� ��� ���� � ��������� �� ��� �.?� 3��� +� �� � ���� �� � � ��� ��� ���� ��� ���� �3 ������ �������� �� ��� ��� ����� ��� ��� ���� � � ��� � �0�0� ����� �� � � � 3����� ������� ����3��� ��� � �L������ �� ���� ��� ��� � ������� ������ � +� ��� � ������ �� � ����3��� ����� �� ���� 3������ � �� ����!� � � � ����! �� �� ��� � � � �� �� 3���0

�� ���� � ����� 7����� � 3���� �������� ��� ����$��� � ����� ! �� 3�� ��� � �� �$4���� �� @��� <'> �� �������� �� � �� <!!>� ��3�$ �� ��� ���������� ����� �� ���� � ���� ��� --���// � ��� �������� ��� �� �0�0 � � � !� ��D��� � !((� ��� �������� ��� � � �� �$ ����� �.?�3��� �� ������ �� ��� ���� � ���� � �� %N!! �� � !(�((( �����0 � ��������� �������� � � � ����� ���$ � �� �� ��� ���� ���� ��� ������ �� 2������� �7���� � �!! � � � � � ��� � �� 3��� ����������� � � ���� � .:���!� � � � ���� � !��� � ������� � �� � � � ��� ���������� 3��� ���.�&� ���� � � ���� � � � ����� � ��0 ���;� � <D>05 �� ���� ���� � � ������ ������ � �� ��� ���������� � ����� ����� � � ���� �� � � ���� �7��2�� �� ��0 ��� ?��� �� 1��� � <C>0 � � � � ��� ����3���� ��� ��������� ��� ��������$ � �� � � �� ����� ���� �� �� ���� ����� � ����� ���� ��� � ���3��� ������� ���� � ���$ � �������� ��$� ���� �� � � � ����� �����2��� �� � � ��� � �2�������0

��� ���� ������� 3� ��� ��;�� ��� ��� �������� �������� �0�0� ����� +� ��� ��� �������� ���)�� 3�����*� ��� �.?�� � ������ 3����� ������������ �� ��� �������$ � ��� �������� ��� �������� ��0 ��� 3�$ � �+�� ��� ������ ��� � ��� �������� ��� �� � 3 � � ��� �� ��� ���� � ���� � ��� $�� � �� � �� ��� ����� ����� ���� ����� �0

��� ���������� � ������ � � ��� ����������� ��,

5������ ��� !�!

����� '�!

��

���K��� � � !�!

����� '�!

��

���� �%�

� ( � !� � !� � � � � !� �� � �� � � � ��� '�!�

3���� � � �����!� !�! �& !� ' ��� ��2 �+��

������& � �� �� ��� � �� �$ �.?�0 5 �� ���� ��� � � ���� ��� ���� � ���� � )3��� � � �* � � ��� ������� ��� ��� ��� ���� � �� 0

� ���� ���� ��� ���� ������� �+�� ���� ���������$ �M����� �� ��� �� ��� ���� � �� 3����� �� ���� �$ 5������ �� � �� <">& � � ��������� ��� �M������ �� �� ��� 3�$ � �� �� ���� �� 0

6� ��� ���� ����� � 3� �� 3 � 3 � ������� !� ' �� � 3 � � ��� ��� ��������� � ��� )%*�$ ����� � ������� �����$ ���� ������0

+��� ������ 0����& ��� �� ������� ���1

��� �3 ��� ����� 3���� ��� � ���� ��������� � +��� ����� � +� �� ���� � ���� � � ���� ���� �0�0� 5��? �� ������ ���� � ���$ � ������� ��� ��� ����� 3��� � � �� ��� �� � � ����� 2��3 ����� �� ���� ��0 ����� � D0D0 � ���� � ���� ������� �� 3���� 3 �� � ���������$������ 3��� ��� �������� ��� ����� 3� � ��� ��� �� 3�,

)�* �������� �3 � ���� �����$ ����� 3���������� ! )?��� ����* �� ' )����� ����*� � �2��� � ��� � ��� � ������ �� � ��� ����� ��2��������$� �!� � � � �� ! �� ��� � � � ���� '�! �� )%*&)��* ��� � �������� � �� ��� ������ � ���?��� �� ����� ����� � ��$ � +� � 3����� ��2������� �7��� � �& �� ���� �� ��� ���� ��� ����� ���� � �� � �� � ����3����)���* ��� ���� � ���� � �� � � ������ �� ������� �������� ���� ��� ��� ���� 2��3 � �� 3�3��� � �� ��� ����� � ���������0

6� �� ����� ���� ��� �� ���� � � � � ��� ������ � ! �� ' �M��� ��� ������ � ���� � � +� ��� ���� ���� ��� ����� �� ����� �3 ������ ��� ������ �0�0 ! �� �� � �� ! �� �� '� ! � �� ��� ����

����� '

���� � � +� ��� � �� ��

� 4@"( 4@"(��� �.?�

!(( (0((((C% (0((((%" (0(((('=

D(( (0((('E( (0(((D(" (0((((=C

!((( (0(((%%= (0((!!N' (0(((!N"

4�2� ����� "� ���1 5 ������� ������� �' 6��������� )���1 �+, 7�!!�8 93�,, E!

Page 6: An exact algorithm for the subset sum problem

� ���� � �� ��������$ ������ �� ��� ���� ����������� 3� ��� ��� ����� �� ������� ������� ����� � �$ ��7��������0

�� ��� ���� ������� �� ! �� ' ��� ������0�0� ! �� �� � ! �� �� '� ! � �� ��� ����������� 3��� �� ���� �� � ������ 3����� � ��������� �� � �$ ��7��������� ��� �� 3��� �� ���$��;��$ ���� ��� ���� � ���� � 3��� � � �� �������� ��� �� ����� �� ������ �������� � � �������� �� �$���� �� ������ � ������� �� )N*�� )=* 3��� ��� � �� ��� 0 P� �� ���� �����2������� ��$ �� ��� 3��� �� � �� � �$ ��� ����� ��� � ������0

1� �� �� ! �� ' ���� ���� ��� ������������� ������� �� ��L������$ ����� � � ����� ��2 �� ��� ���� � ���� �� � � ��� ���� ��� ��� �� � ��� ����� � � 3���� ���� �� � � ����� ������ ���� ��� ����� � ������� � �� ���������� 2��3� 3����� �� ���� �� �� ��� ��� ������� ��� ����� ���� ������ 5��? �4�����/� ������� � 3��� � � �0 ��� ������ � !�� ' 3���� ��$ � � ��� ����� � �� ����� ��� � ��� ���� 3��� ! � ' ��� �' ��0 ��� ���� � � � ���� �� ��� 3��� �� ��2����� ����� �� 3��� 3� 3��� ����$�� ��� ���2����� ��� ����0

����� ��� ��$ ����������� � ���������� �� ���� �����$ ���� )��0 <!'>*0 1� ��� ��� ��2���� � ���� �0�0� � � 3������ �!� � � � �� !,

?��������(� � (�

?��������!� � �!�

?��������' � �� � ��! � ?����������� �!(�� � (� � � � � ' � !� � !� � � � � !�

� ���� ���� � � � ����� ?����������� � � !� � � � �' ! � !� ��� 3������ 3���� � �� �� ��� ��������$��� ���� ����� ��� �� ���� ��� ����� 3��� ���3������ �!� � � � �� ! ��� �����$ ��� � �� �� �0�0���� ?�������)!%*� !%%"� ���� !% � �!((!!�' �� � �! � �' � �= � ?��������!%� � !%%"0

O � 3������ ��� � � � ���� '�! 3� ��� ��� ���������� � � �������� ��� ����� ����0 ���� 3� � ������� ������ �$ 3������ �� +����$ 3� ��$ � +� ���3����� �M������ � ��� �����$ ������0

6� �� 3 ��� ���� ����� ������ ���� �� ���� �� �������� ���� � � ��$ ��� ���� ������� )%* �� � ��� )� � �*� ��� ��� ��� )!* � )� � �*0 6� �� ����� ��2

��� ���� ��� � ��� ����� � ����� �� �� ���3 ��� ���� 3��� �� �� ' � �' ! � ' '��0

����� ��� � 3����� � ������ 3�$ � � ��� ���������� �� ������� � )!(*� 3������� � ��3 3����� � ��� ��� ��� � ��� ����� � ������ ����� �� � ��� � � ��� ��3 ������0 Q����� ���� �� � �����$���� ��� ���� ����� $ � ��� 0'�� ��� ������� � � � ��3 3������ ���� ��� � �� 3��� ������ 3������ �� � ��� 0 O � ��������� �� �� ����� �� ����� 3��� ������ � � '� 3���� ����������(������������!�� � � � �����������'� � !�� ����� ���������� � � ��� ���� ��� )� � !* ��� �����������������'��� � � � �����������'��! � !�3��� ��� ��� ��� 0

� �������� ���� ��� � ����� ���������� 3� +���� �� ��� 3������ ��� � � � ���� '�! ��� � ��� � � �2 ��������� ������� �� ���� 3� � ��� �� �� ��2����� � )!(*� �0�0�

����������(��(�

����������!�����

����������'�����!� �!!�����������D��������!�

�����������N�����'������������� �(�!�'�D�

���� 3� ���� ��� �3 ��7������ ��� ��� �3 23�$5����� ��� �0�0,

�����������(�� ����������!�� ����������'�� ����������D���� � � � 5����

�����������N�� ����������=�� ����������E�� ����������C���

1� � ������ ���� �������� � �� ������ ��2��������$ � � ��� �� '� !0 ��� � ��� ����� � ����� ��� �� ��� 3 ��� ����� 3��� ����� '� � ' ! � ' '�� 3���� �� ������$ ��������� � ��� ���� �� �������� �0

� ��� � ��� � ����� �� ���� �� � ���� ���������� ������ 3� +��� �������� ������������� �� ���� � � ��� ?�������� 3������� ����� �� ������ � 3� ���� ��� 3����� ��� �����$ ������3��� ��� ������ � ��� ���������0 6� �� ����� ���� ���������� ��� � �� ������ ��� ���� ��� �� �� ���� � ���� � �� ������ �� ��� ���� ������� 3��$ �� ��� �� ��� �������� � � ��� ������ �����0

�� ���� � 3 ���� ��� ���� � ���� � 3��� � � �� 3����� ��� ���� �������� ���� ��������� 3� ����� ��� � +� � ��������� � �� ��� 3���� ������� ��� � ������ � ������ ���� 2��30� ������� ���� 3� �� �� � ������7�� ��������

E' 4�2� ����� "� ���1 5 ������� ������� �' 6��������� )���1 �+, 7�!!�8 93�,,

Page 7: An exact algorithm for the subset sum problem

�$ � � �� � �� <!D>� 3���� 3�� ��������$ �2����� � ��� ����� ��� ��� �$���� �� 2������ ������ ����� ��������,

��?���������� � !� ?���������� ��

� !� � � � � ' ! � !��!'�

�������� � �

��

(������� ���������� � ( ���������� ������������� !� � � � ��� !�� � � !� !� � � � � �� !� �� �� ��� '� � � � ����

�������������

�!D�870 )!'* ��� � ��� ���� �������� �$ )!(* ���

��� ������ ��� �0�0� �� �� ���� ?���������� � �3�� � �� �$ )!(*� 3���� � �� ��� �� ��� 3����� ���� 3������ 3� �� �� ���� ��� �����$ � � �� ���� ���� � ! �$ )!'*� ���� �� ������ �������!

�! � � � ��� �� ����� � � ���� � 3��� ��� +��� ! ��������� /�0 870 )!D* ��� ������� ����� ��� � ����� ������� � � ������� � )N*0 ��� ��������������� � ������ � �� ��� ���� �0�0� ���������� � ( � � ����� �� � � �� ���� ���� ��� ������� � ��5����� � ! ��� ����� $ ���� � ��� ��� 0

?�� �� � ������ � �� �� ���� ��� ����� ���� � ����� � � � ��� � � $�� ���� � �� �� ������ �! � 5����� � ����� � (�� �� � (� � � � � �0 �������� ����� �������� �$ )!!*� ��� ����� 3���3������ ��� � � � �� '� ��� $�� � �� K ����$ � ��� 2��� 3��� ���� � �� �� � � 3� ��� ��� � �2� 3��� ������� �,

�' �5����������������5���� � ���� � (��� �!N�

3���� !� �� ' ' � !& !��� �� �������������� ������������ � �0

6� �' � � ���� ��� ���� � ���� � 3�� � �� ��� �� ���� �� � � ��� ���� ���� � � 5����!� �'�0 ������ ���$ � ��� /� ������ ������ �� $ �� �� �����$ )C* �� ��� �����$ �� ���0

+�+� "�� ��� �� ����&��� �' �1 �������1�

1� ������� � 3 ��� ��� ��� ���� � ������ ���� �� � ���$ ������� ��� 2� � �� � ��

� ������ ��� ����$��� � ��� ��� ����� �0�0� ����� � �$ ��� ���� ��������� �0

��� �0 O�� �� �� � ��� ��� �.?�&��� �0 � ��� ��� ��������� ���� ������� ����� ��)%* 3��� ��� �����$ ���� �������� � �� ����������� �� )!(* �� )!!*0 � � � � ���� Q���&��� +0 ���� � ��� ���� ��� ��� )������� �)!'**& ��� ������ �������� � ����� )�����2�� �� )!D* �� )!N**& �� ��� � ���� � ��� ���$)������� � )C* �� �����$ �� ���*0O � ��� ����$��� � ��� ��� ���� 3� ����,��� �� �� ��� �� �� ���� ����� �.?� �� ���

������ ���� $ ������ 3��� ��� ���� � ��� ��� �� � �� � ��������0 ��� ��� ��2� �������� �� ���� �0�0� ��� �� ���� � ��� ���� 3����� � ��� �� ������$ ������ �� 3��� �� �� �3����� ���������0 ��� � �$ �� ��� ����� �$����0

��� �0 1��� ! � ' � �� �' ��� ��� ���� ����)?�������* �� �������� �$ ������� � )!(* �� ���������� ' ! � �� �� ��� ����� ���� )���������*� ��2����� � )!!*� �� �������� ��� ��� �3 ��������������� �� ��� +��� �� �� ������� ��7����� ������� �� ���� � 3���� �� ��� ��� � �� ���������� ��7����� �� � ��� ��� � �3 23�$����0 O � ��� ������ � �7��� 3������ � �� ��������� � ��� �3 ������ ��� �����$ ������ �� ��� ������ ��� ����� ���� �� � ��� � �� ���� � � �� ����� � � �' ��� ����� ��0 ��� � ��� ����� � ��2��� �� �� ���� � �� � �$ ��� � � �' ���� �� ���� �$ �$ ���� ��0

��� +0 ��� ���� ���� ��� ���� ������� � )!'*���� ��� ������$� �� �� ���� ����� ��0 ��������� �������� � ������ ������� � )!D*� 3������ ��� �� ��� ��� ���� � ��� ������ ��� 2����� �� ������ �� �� ����� � �' �

'���� ����� �������� � 3������ ��� ��� �� �� � �' �

' )� �' �3�� ����� $ � ��� ��� �� ��� ����� ���� �� �� ����� �' � �� ��� ���� ��*0 � +� �'� ����� �$ ������� �)!N*� �� �� ���$ � ��� ���� ��� ����� � ����� ���� � �� � �$ ����0 O�����$� ��� ��� ���$ � ���� ����� ������� ����� ����� ������� � )C* �� ����� �$ ���� �� ��� �����$ �� ��� �$ ��� �' ����0� ���� ����� �� ���� ���� ��� � �$ ��7�������� ������� � �� � �� � �$ ����� ����� ��� �3 ������ ?��� �� ������ ���� �� �� ' ! � ' ' � �������� �� ������� � )!D* ��� ��� ����� ����� ���������� �� K��� � ������ ���� � � 3��� �������0

4�2� ����� "� ���1 5 ������� ������� �' 6��������� )���1 �+, 7�!!�8 93�,, ED

Page 8: An exact algorithm for the subset sum problem

��� � ��� ����� � ����� �� �� ���� � �� � �$ ����� � �' �

'��� �� ����� �� �� ��������$ � � ��� �� ��� ��� ���� � � � �' �

'� 3� ��� � ���� ����� ��� ������� ��� �� ��5������ � �' �

'���� � �' ���0 ��� ���� ��7���� �� ������$ ����� �$���� ��0

� ������������� �����������

1� � ��� ��� �������� ��� ���� )��((*3��� ����� �� ��� ������ ������ A ����������� )N*0 ��� � ���� �� � ���� �������$���� �� ������ �� 5��? ��� �� � �� �� �������� �� � �� <!!>0 ��� ��� � ����� � �2����� �3 ������� � ��������� ������� ��5������ �� � �� <%>� �� � ��3 ����� � � 3����� � � )���� � ��� O� ������ � �� � � ��������� �� ������� �7���� �*0 ��� ������� � �2�� ��� � �� 3,

"��0��� � ���0 .���� � ������ ������� �� ���3������ �/� ��� ��� �$ ��������� �� !� !(�� �� � � ��!(��N�0 1� � ��� �� � � D �� � � E0

"��0��� ��������0 �/� ����� ��� �$ ��2������� �� !� !(N�� � � '��!(N�"� � ! ) *0

"��0��� �'��� ����0 .���� ����� ������ ����2���� �� ���� +� � ��� )�(� �!* ��� �$ ������2��� �� '� !(�� ���� ���� �� ��(� �!� � !�� � ��( � !���! � !� � !� �� ��� ��!(� � ���!(�0 1� � ��� �� � � D� � � =� � � =(0 ��� � 2�L������ �/� ��� �+�� �$,

�'�! � !

� �� !� �

�(

���(�

�' � !

� �� !� �

�!

���!�

� !� � � � � ��'�

�� ���� �'��� ���� ���� � ���� � ���� � ������ � � �� �� �� �� �� 3��� ;� 3� ���� �(�! ��!�' � ��( � !���! � !� � !� �� ��(� �!� � ! ��� � ������ ������� � ���� �� )�� �! �� �'*� ����� �� ����� ����� O� ������ � �� � � ��� ������ �� 2������� �7���� � 3��� �3 ���������0 6��� ������$��� �� ��� 3��� ;� 3� ���� ��� ��������� � � ����� �� �� ��2Q�� 0

1� � � � ��� �� ��� ���� <!> �� � <!E>� ���� ������� � � �$ ������� ��� ����� ���� �L������ � � ����� � ���� ��� ���$ ����� �2����� ������� ������ �� ��$ ���� ������ � �3 �� �� � ��� ��� �� ��� ������� ��� 0

����� D

� ���� � ������� ���� �� ��� � �

��� ���� � � �D� ��E� ����� �'�D� =� =(�2��3 !(( (0(% A (0EC (0'%

D(( (0%D A E0ED (0%%

!((( !!0%! A CD0(% D0''

D((( %E0N= A C"E0DD %0=C

!(((( !'C0"% �� � D%0!%

D(((( !(D'0=E �� � !!=0=!

����� !(( (0(( (0(( !0DD (0DD

D(( (0(( (0(( !D0"! '0!%

!((( (0(( (0(( !="0(= !(0!(

D((( (0(( (0(( !N'%0C( DD0=%

!(((( (0(( �� � !!C0(D

D(((( (0(( �� � DN%0!%

��(( !(( (0(( (0(( (0=C (0'C

D(( (0(( (0(( =0NE (0%(

!((( (0(( (0(( E%0'N '0C(

D((( (0(( (0(( CN=0N" "0('

!(((( (0(( �� !'(C0D% '%0(%

D(((( (0(( �� � "C0N'

EN 4�2� ����� "� ���1 5 ������� ������� �' 6��������� )���1 �+, 7�!!�8 93�,,

Page 9: An exact algorithm for the subset sum problem

��� ������� ���� � � � ���� � �D�� ��E� �� ����A 3��� ������ �$ �� P���� ��� 3��� ��� ���� �� 3���� � � � ���� �'�D� =� =(� �$ ���� 645 "E(0

O � ���� ����� � � ���� �� � � ���� ����� � � � ��� � !(( ��������� 3�� � ��� ��� )�������� D*0 6� ��� � ���� � ��� �� ��� ��� 3��������� ���� '! � ��� � :�P� ��� ���� ������ � �3��� � � ����� � �� ���� �� �� 3� �$ �� �������;0�3 �������;� �� ����� ���� ��� ��� � �� � � ���������� �$ � D'2���� ������ �� � ��� �� �2����� ���� ��� ��� ���� ���� � ��� ���� ��� �$ ���� 3�� ��������� �� ��� ������0 6� ����� � ����� � � �� ����� �� � ��� � �$������� �� � ��� ������� ��� � ��� ��� �� ���� ����� ��� ����� ��� �������� ! �� '3��� � �� ��� � !D ) ������� �����������$*������ � � �' �0

6� �� 3��� ;� 3� ����� � � ����� ������ � �� ���� �D� �� � �E� ��������� ���� � ����� ����� ������������ ���� � ���� �� �

���! � � ��

����� �� ��� ���� �$ +� ��� ���� � ���� � � ����� � � � ��� �� ��� �������� � � ��� ��2���� ���� � ���� ��0 ��� ���� 2��3 ��� � � �������� ��� �������� ������ � � �� ���� � 5���� � ��

�! � � �� � � !� � � � � ��� � � �� ����� �� ��� �������� ��� ���� )��((* ���� ������� ��� ����� ���� 2��3 � � ����� � ����0

O � ��� ����A �� �'�D� =� =(� ��������� ��� ���� � ���� � � ����� � � � ���� � ��������� � ������ ���� ����� ��������� ����������� 3 ���2���� � � ��� ����� ��� �����0 ��� 2����� 2��3 �� ��(( ���� � ������ ��� ��������� ������ ����$ ������� ����� �� � �����2�� � � 4�����/� �$���� �� ������ ����2��7��0

O� ��� ����� 3� ��� � ���� � ����� �� ���� �������� ���� ��(( ������ � �� ����� �� 2��3� 3���� � ����� � ������ ���3��� ������� 2��30 O � ��� � �$ ��7��������� ������� ����� �$ ��((� 3���� � ����� � ���������3��� 2��3 �� ��((0

�������� �������

��� ���� �� ��;� 3�� �� �� ��� ? � �� P���������� ���� ��� � � 4 � ���� ������ B����2

��$�� �� 6��F?��� �� ���� �������� �� ��� P��������$ � : ������� � � ������ 3��� ���� ����� ��� ���������0

��� +��� ���� � ��;� 3�� ��� O�� ����� ���� �� ���7���� 8��� � ��� ���� )O�2��*� O��� 3��� � 0 %CF(EE''A%� 4�����0 ������ � ���� � ��;� 3�� ��� 5������� ���/P��2�������� � ���� ������� �������+�� � ���� � ����)5P���* �� : ������ ���� ���� ���� ��������):��*� 6���$0

���������

<!> �0 ����� ��� �� D� ��, 90 :�������� Q�� ;�����;

� ����� ������ �� �������� '" )!%"(* !N!(A!N!!0

<'> 80 4����� 80 @���� �� ��� ���� � � ����� ��� A ��

;�����; � ����� ������ �� �������� '" )!%"(* !!D(A

!!=N0

<D> ?080 ���;� �� � Q��� �$ � ��� ��� �$ � ������� � �0 D�

:������� 6�������� �� 1������� �� !%'D0

<N> �0 O�$�� � .0 �������� �� ��� ���� � � ��� � ���� �

� ��� (A! ;�����; � ���� : ����� '" )!%"'*

'E%A'"C0

<=> 50�0 .���$� �0�0 # ��� �� : ����� �� 6������������$,

� .�� � � ��� ��� �$ � ��2: ��������� O������ ���

O������� � !%"%0

<E> 80 ?�3���� O��� �� ����� � ��� ����� � � ;�����;

� ����� 5��������� � ������ �� �������� N )!%C%*

DD%AD=E0

<C> #0Q0 ��� ?���� �050 1��� �� � : ���� �� : ����� �����

:���� �� P��������$ ������ :���� ��� !%%'0

<"> �0 5������ � �0 � ��� � ������ � $���� � ������

�� ������2�� 2� �� � � ��� ������ �� � ����

5�������� ������� D( )!%"N* CE=ACC!0

<%> �0 5������ � �0 � ��� B�����; �� ����, ��� �����

�� : ���� 6�������� ��� 1���$� :����������

!%%(0

<!(> �0 ��������� � ����� ��� ���� � � ��� (A! ;�����;

� ���� ������ �� �������� NE )!%%C* C="ACEC0

<!!> �0 ��������� �0 � ��� B�����; � ����� ��, �0@0 ���

�0 ��� �� � )8 �0*� ��, Q�� � ; � : ����� ����

�������� �� B��3�� ��� ��� ����������� � � ������

!%%%0

<!'> �0 �� ��3��;� ��� ����� ��, :, ����� !AN� O�� ��������

���� ����������� � ����� �� ���������� ���� � 0� � �2

� �21����$� � ;$ � !%%"0

<!D> �0�0 � �� �0 � ��� 8�� ��� ����� ��� ��� $����

� ������ ������ ����� ��������� �� �� �86�� P��2

������$ � 4 � ���� !%%%0

<!N> �0�0 � �� Q0Q0 �������� �0�060 @�� ���� �0#0 Q����$� �

�$� ��� �� ����� � ����� � � ��� ������ ��

� ���� �������� ���� 5��������� =C )!%%=* 'NDA

'=D0

4�2� ����� "� ���1 5 ������� ������� �' 6��������� )���1 �+, 7�!!�8 93�,, E=

Page 10: An exact algorithm for the subset sum problem

<!=> .0 ���� ���� Q0 ������;� ��� � �� � ������ �� � ���

�� �� �� ����$3���� ��� �$ ��� ���� �� ����� 6�� �2��� � �� ������� ?������ 'D )!%"E* !!A!C0

<!E> 50 � � ��� �� D� ��, 90 :�������� Q�� ;�����;

� ����� ������ �� �������� '" )!%"(* !N("A!N(%0

<!C> Q0Q0 �������� �0�0 � �� �� ����� ��� �$� ���

��� ���� � � ��� ����� �� ��� ��� ;�����; � ���� ��,

�� ��� ���� � ��� RR �4��� � �0 !� ����� �� !%"C� 0

C!(AC!%0

EE 4�2� ����� "� ���1 5 ������� ������� �' 6��������� )���1 �+, 7�!!�8 93�,,