Improved Performance of the Greedy Algorithm for the Minimum Set Cover and Minimum Partial Cover Problems Petr Slav ?? k ? October 15 , 1995 Abstract We establish significantly improved bounds on the performance of the greedy algorithm for approximating minimum set cover and minimum partial cover . Our improvements result from a new approach to both problems . In particular , -LRB- a -RRB- we improve the known bound on the performance ratio of the greedy algorithm for general covers without cost , showing that it differs from the classical harmonic bound by a function which approaches infinity -LRB- as the size of the base set increases -RRB- ; -LRB- b -RRB- we show that , for covers without cost , the performance guarantee for the greedy algorithm is significantly better than the performance guarantee for the randomized rounding algorithm ; -LRB- c -RRB- we prove that the classical bounds on the performance of the greedy algorithm for complete covers with costs are valid for partial covers as well , thus lowering , by more than a factor of two , the previously known estimate . ? Department of Mathematics , State University of New York at Buffalo , Buffalo , NY 14214 , USA . E-mail : slavik@math.buffalo.edu 1 Introduction In the minimum set cover problem , the goal is to find a smallest subcover of a cover of a finite \ base set '' . This can be generalized for covers with costs , where the goal is to find a subcover with minimum cost . These problems are NP-hard -LRB- see -LSB- 6 -RSB- or -LSB- 3 -RSB- -RRB- , hence efficient approximation algorithms are of great interest . One of the best known algorithms for approximating the minimum set cover is the so called greedy algorithm . The classical bound on its performance ratio -LRB- see e.g. -LSB- 1 -RSB- , -LSB- 5 -RSB- , or -LSB- 8 -RSB- -RRB- is cgreedy cmin < = H -LRB- d -RRB- ; -LRB- 1 -RRB- where cgreedy and cmin are the costs of a minimum subcover and the subcover output by the greedy algorithm , respectively , d bounds the size of the sets in the cover , and H -LRB- d -RRB- = 1 + ? ? ? + 1 =d . For general covers -LRB- a priori unknown bound on the size of the covering sets -RRB- , this reduces to cgreedy cmin < = H -LRB- m -RRB- ; -LRB- 2 -RRB- where m is the size of the base set . Recently , other algorithms for approximating the minimum set cover were introduced , among them the randomized rounding technique of Raghavan and Thompson -LRB- -LSB- 11 -RSB- -RRB- . In the case of covers with constant costs , Srinivasan in -LSB- 12 -RSB- showed that the approximation guarantee for the randomized rounding algorithm is crra < = c?min ln -LRB- m c?min -RRB- + O -LRB- ln ln -LRB- m c?min -RRB- -RRB- + O -LRB- 1 -RRB- ! ; -LRB- 3 -RRB- making it appear at that point that the performance ratio for the randomized rounding technique was better than the performance ratio for the greedy algorithm . -LRB- Here c?min < = cmin is the optimum cost of the LP relaxation of the minimum cover problem . -RRB- The minimum partial cover problem further generalizes the minimum set cover problem . The goal here is to find a subcollection of sets covering at least a p-fraction , < p < = 1 , of the base set with minimum cost . This problem is also NP-hard , since it contains the minimum set cover as a special case -LRB- p = 1 , c1 = c2 = ? ? ? = cn = 1 -RRB- , and the solution can again be approximated by a greedy algorithm -LRB- -LSB- 7 -RSB- -RRB- . Even though this algorithm -LRB- see Preliminaries -RRB- is a straightforward modification of the greedy algorithm for complete covers , its output is less predictable , hence the approach used by Chv?atal , Johnson , or Lovasz for proving -LRB- 1 -RRB- and -LRB- 2 -RRB- can not be generalized . In -LSB- 7 , p. 69 -RSB- , Kearns proves that for < p < = 1 cgreedy cmin < = 2H -LRB- m -RRB- + 3 : This is much worse than the bounds for minimum set cover and only shows how complicated the behavior of the \ greedy '' partial cover can be . Our Results In Section 2 , we discuss the minimum partial cover problem for covers with costs . We introduce a new simple but powerful technique based on the fact that the worst possible \ greedy '' partial cover can be made of one-element sets . This enables us to prove that -LRB- 1 -RRB- is indeed true for minimum partial cover as well -LRB- given that the size of sets in the cover is bounded by d -RRB- , and that cgreedy cmin < = H -LRB- dpme -RRB- -LRB- 4 -RRB- for general covers . Hence we establish a classical bound for a non-classical problem . These results clearly contain , as a special case , the bounds proved by Chv?atal and Johnson , and significantly improve Kearns 's estimate . Section 3 is devoted to general covers with equal costs , i.e. c1 = c2 = ? ? ? = cn . Lund and Yannakakis in -LSB- 9 -RSB- proved that even in this special case , assuming DTIME -LSB- nlnO -LRB- 1 -RRB- n -RSB- < > NTIME -LSB- nlnO -LRB- 1 -RRB- n -RSB- , no polynomial time algorithm can approximate minimum set cover to a performance ratio of better than c log2 m , for any c < 1 = 4 . This hardness result has renewed interest in improving the performance ratio . Recently , Halld?orsson -LRB- -LSB- 4 -RSB- -RRB- improved the performance guarantees -LRB- 1 -RRB- and -LRB- 2 -RRB- by 11/42 using local improvement modification of the greedy algorithm , but the bound of H -LRB- m -RRB- for the classical greedy algorithm has remained the best that was known -LRB- for general covers -RRB- despite a fair amount of work by many people . In this paper , we are able to show that the greedy algorithm performs better than was previously thought ; in particular we prove that the performance ratio of the greedy algorithm differs from the harmonic bound by a function that goes to infinity as the size of the base set approaches infinity . We will prove this in the setting of partial covers , and show , among other things , that , for any < p < = 1 , cgreedy cmin < = ln u ? f -LRB- u -RRB- ; -LRB- 5 -RRB- where u = dpme and f -LRB- u -RRB- = ? -LRB- ln ln u -RRB- -LRB- hence lim f -LRB- u -RRB- = 1 -RRB- . This improves not only our inequality -LRB- 4 -RRB- for the minimum partial cover problem but also the classical bound -LRB- 2 -RRB- for the minimum -LRB- complete -RRB- cover problem -LRB- -LSB- 1 -RSB- , -LSB- 5 -RSB- , -LSB- 8 -RSB- -RRB- . In proving the results , we introduce two new methods which should be generally useful for attacking other similar problems . For example , our approach to analyzing the greedy algorithm for covers with equal costs yields the bound cgreedy < = ? c?min ? 1 2 ? ln -LRB- m c?min -RRB- + c?min ; -LRB- 6 -RRB- which is clearly stronger than -LRB- 3 -RRB- . Hence the performance guarantee for the greedy algorithm is significantly better than that for the randomized rounding technique . Preliminaries Definition 1 Let U be a finite set , S = fS1 ; S2 ; : : : ; Sng be a cover of U -LRB- i.e. U = SSj -RRB- , and c = fc1 ; c2 ; : : : ; cng be positive real costs of each set in the cover . We identify the cover S with the set of indices J = f1 ; 2 ; : : : ; ng and any subset S ? of S with the corresponding set J ? ae J. Define m = jU j. Let < p < = 1 . We say that J ? -LRB- or alternatively S ? -RRB- is a p-partial cover of U -LRB- or simply a p-cover of U -RRB- if j -LSB- j2J ? Sj j = j -LSB- Sj2S ? Sj j > = pm : We call c -LRB- J ? -RRB- = c -LRB- S ? -RRB- = X j2J ? cj the cost of the p-cover J ? -LRB- S ? -RRB- . This definition leads immediately to the following optimization problem : Minimum Partial Cover Instance : Finite set U -LRB- jU j = m -RRB- , finite cover S , positive costs c , < p < = 1 . Question : What is the minimum cost of a p-cover J ? of U ? Greedy Algorithm We will use a minor modification of the greedy algorithm for minimum partial cover given by Kearns in -LSB- 7 -RSB- . Step 1 . Set J ? = ; . Step 2 . Set r = pm ? j S j2J ? Sj j , i.e. r is the number of elements of U yet to be covered in order to obtain a p-cover . Step 3 . If r < = 0 , then STOP and output J ? . Intuitively , the more elements a set has and the cheaper it is the more likely it is in a minimum p-cover . On the other hand , a set having more than r elements is no better than a set with exactly r elements . That motivates the following step . Step 4 . Find i 2 J n J ? that minimizes the quotient cj min -LRB- r ; jSjj -RRB- , for j 2 J n J ? and Sj < > ; . In case of a tie , take the smallest such i. Step 5 . Add i to J ? . For each j 2 J n J ? set Sj = Sj n Si . Set U = U n Si : Return to Step 2 . 2 Covers with General Costs Denote by k the number of sets in a p-cover obtained by the greedy algorithm . We can assume without loss of generality that the sets in the cover S are ordered in such a way that the greedy algorithm chooses the index i in its i-th iteration , i.e. after every iteration i of the greedy algorithm , J ? = f1 ; 2 ; : : : ; ig . Let fj1 ; j2 ; : : : ; jlg be a minimum p-cover of U with the cost cmin . To simplify the notation , denote the sets of this p-cover by A1 ; A2 ; : : : ; Al and their costs by fff1 ; ff2 ; : : : ; fflg , i.e. fA1 ; A2 ; : : : ; Alg = fSj1 ; Sj2 ; : : : ; Sjlg and cmin = ff1 + ff2 + ? ? ? + ffl : Also denote by A -LRB- i -RRB- s , S -LRB- i -RRB- j , and U -LRB- i -RRB- the sets As , Sj , and U after the i-th iteration of the greedy method . Finally , denote by di the number of elements of U after the i-th iteration yet to be covered to obtain a p-cover and define u -LRB- i -RRB- j to be min -LRB- di ; jS -LRB- i -RRB- j j -RRB- . Lemma 1 Let S = fS1 ; : : : ; Sng be a cover of U , A ae S a p-cover with minimum cost , and S ? a p-cover output by the greedy algorithm . Then there is a cover T oe S -LRB- enrichment of the original cover -RRB- such that -LRB- i -RRB- the cost of a minimum p-cover B ae T is at most the cost of A , i.e. c -LRB- B -RRB- < = c -LRB- A -RRB- , and -LRB- ii -RRB- the greedy algorithm applied on T outputs a p-cover T ? consisting of one-element sets that is at least as expensive as the p-cover S ? , i.e. c -LRB- T ? -RRB- > = c -LRB- S ? -RRB- . This Lemma -LRB- proved in the Appendix -RRB- shows that the greedy p-cover can be made -LRB- possibly -RRB- more expensive by replacing each set in the greedy p-cover by an appropriate number of singletons with appropriate costs while -LRB- possibly -RRB- lowering the cost of a minimum p-cover . Hence the worst possible case for the quotient cgreedy = cmin can be obtained by considering only those greedy p-covers of U consisting of singletons with appropriate costs . Note : The Lemma does not claim that the worst case greedy p-covering can not be achieved by bigger sets . It simply says that a greedy p-covering by bigger sets can not be worse than a greedy p-covering by singletons with appropriate costs . In our quest for the worst possible p-cover output by the greedy algorithm , Lemma 1 enables us to restrict ourselves to single-element-set greedy p-covers . Let J ? = f1 ; : : : : kg be such a p-cover . Then clearly k = dpme and the greedy condition implies that ci +1 < = ffs min -LRB- jA -LRB- i -RRB- s j ; di -RRB- for all s = 1 ; : : : ; l for which A -LRB- i -RRB- s < > ; . Without loss of generality , we can assume that the sets As in the minimum p-cover are disjoint and that lX s = 1 jAsj = dpme : -LRB- 7 -RRB- This can be accomplished by possibly deleting some elements of the sets As , hence -LRB- possibly -RRB- increasing the worst case cost of the greedy p-cover . Consider all fractions of the form ffs ks ; s = 1 ; : : : ; l , ks = 1 ; : : : ; jAsj : Note that we have k = dpme-many fractions . Let us rearrange these fractions into a nondecreasing sequence e1 < = e2 < = ? ? ? < = ek : Then the following inequality -LRB- proved in the Appendix -RRB- holds . Lemma 2 For each i = 1 ; : : : ; k we must have ci < = ei : As a straightforward consequence of Lemma 2 , we easily obtain : Lemma 3 c1 + ? ? ? + ck < = e1 + ? ? ? + ek = ff1H -LRB- jA1j -RRB- + ? ? ? + fflH -LRB- jAlj -RRB- : Now we can state -LRB- and prove -RRB- the generalization of -LRB- 1 -RRB- . Theorem 1 Let U be a finite set of size m , S = fS1 ; : : : ; Sng be a cover of U , c = fc1 ; : : : ; cng be the costs of the sets in the cover , and < p < = 1 . Let d 2 N be such that jSj j < = d for all j = 1 ; : : : ; n : Then cgreedy < = cminH -LRB- d -RRB- : -LRB- 8 -RRB- Proof : The theorem is a straightforward consequence of Lemmas 1 , 2 , and 3 and the fact that H -LRB- jAsj -RRB- < = H -LRB- d -RRB- for all s = 1 ; : : : ; l. 2 The equality -LRB- 7 -RRB- implies that jAsj < = dpme for all s = 1 ; : : : ; l . This and Lemma 3 prove the following theorem . Theorem 2 Let U , S , c , and p be as above . Then cgreedy < = cminH -LRB- dpme -RRB- : -LRB- 9 -RRB- Theorem 2 might seem to be a weaker version of Theorem 1 . Of course , this is the case when p = 1 , since d < = m. On the other hand , for p < 1 , it might be that d > dpme , and in this case , Theorem 2 is stronger than Theorem 1 . 3 Covers without Cost Let us now consider the case , where all the sets in the cover S = fS1 ; S2 ; : : : ; Sng have the same cost , i.e. c1 = c2 = ? ? ? = cn . It is easy to show that even in this special case , the bound on the greedy algorithm performance -LRB- 8 -RRB- can not generally be improved . On the other hand , we can obtain some improvements of -LRB- 9 -RRB- . We consider general covers , that is , covers where we do not know beforehand a bound on the size of the sets in the cover . For simplicity , set u = dpme . Since we are estimating the quotient cgreedy = cmin , we can assume without loss of generality that c1 = c2 = ? ? ? = cn = 1 : -LRB- 10 -RRB- Then , if the number of sets in a minimum cover is l and the number of sets in the cover output by the greedy algorithm is k , we have cgreedy = k and cmin = l . The case cmin = 1 , that is the case where U can be p-covered by one set , is not interesting , since the greedy algorithm will also output a single set , hence cgreedy = cmin . Therefore in what follows , we will consider only covers for which cmin = l > = 2 . At each step , i , of the greedy method , we delete qi elements . We have k steps , hence kX i = 1 qi = u : -LRB- 11 -RRB- We know that U can be p-covered by l sets . By the pigeon hole principle , at least one of the sets in the minimum p-cover contains at least dul e elements . Hence q1 > = du l e : Similarly , q2 > = du ? q1 l e and , in general , qi > = du ? -LRB- q1 + ? ? ? + qi ? 1 -RRB- l e -LRB- 12 -RRB- for i = 2 ; : : : ; k. Using -LRB- 11 -RRB- , we can rewrite -LRB- 12 -RRB- in the form qi > = dqi + ? ? ? + qk l e : -LRB- 13 -RRB- Solving for qi gives qi > = dqi +1 + ? ? ? + qk l ? 1 e for i = 1 ; : : : ; k : -LRB- 14 -RRB- For given l > = 2 , set a1 = 1 and ai = da1 + ? ? ? + ai?i l ? 1 e -LRB- 15 -RRB- for i = 2 ; 3 ; : : : . Then , clearly , a1 < = qk , a2 < = qk ? 1 , : : : , ak < = q1 , hence kX i = 1 ai < = kX i = 1 qi : -LRB- 16 -RRB- Define N -LRB- k ; l -RRB- = kX i = 1 ai for k = 1,2 , : : : : -LRB- 17 -RRB- From the discussion above , it is fairly immediate that for k > = l , N -LRB- k ; l -RRB- represents the smallest u for which there is a cover S of some set U with u = dpme such that cmin = l and cgreedy = k. Indeed , for u < N -LRB- k ; l -RRB- and cmin = l , inequality -LRB- 16 -RRB- implies that cgreedy < k , whereas if u > = N -LRB- k ; l -RRB- one can easily construct a cover S such that cmin = l and cgreedy = k . As far as this later point is concerned , see the following example . ' & $ % ' & $ % ' & $ % ' & $ % ' & $ % ' & $ % S1 S2 S3 S4 S5 S6 S7 S8 S9 S10 S11 S12 S13 S14 S15 S16 S17 & % ' $ & % ' $ & % ' $ & % ' $ & % ' $ & % ' $ & % ' $ & % ' $ & % ' $ & % ' $ & % ' $ & % ' $ S18 S19 S20 S21 S22 S23 S24 S25 S26 S27 S28 S29 w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w Figure 1 : Example of a cover for which cgreedy = k , cmin = l , and u = N -LRB- k ; l -RRB- . Example 1 Let k > = l , < p < = 1 , and u > = N -LRB- k ; l -RRB- be given . Set m = bu = pc -LRB- hence u = dpme -RRB- and define U = f1 ; 2 ; : : : ; mg . Since u > = N -LRB- k ; l -RRB- there are positive integers q1 ; : : : ; qk satisfying -LRB- 14 -RRB- and -LRB- 11 -RRB- . Define a cover S of U in the following way . -LRB- i -RRB- For i = 1 ; : : : ; k set Si = fq1 + ? ? ? + qi ? 1 + 1 ; q1 + ? ? ? + qi ? 1 + 2 ; : : : ; q1 + ? ? ? + qig ; i.e. each Si contains exactly qi elements , the sets are disjoint , and Ski = 1 Si = f1 ; : : : ; ug . -LRB- ii -RRB- Set d = du = le . Then one can write u = l1d + l2 -LRB- d ? 1 -RRB- for some l1 ; l2 such that l1 + l2 = l. Define Sk + i = fi ; i + l ; : : : ; i + l -LRB- d ? 1 -RRB- g for i = 1 ; : : : ; l1 and Sk + i = fi ; i + l ; : : : ; i + l -LRB- d ? 2 -RRB- g for i = l1 + 1 ; : : : ; l. Then , clearly , the first l1 sets contain d elements each , the next l2 sets contain d ? 1 elements each , the sets are disjoint , and Sli = 1 Sk + i = f1 ; : : : ; ug . -LRB- iii -RRB- Finally , define Sk + l + i = fu + ig for i = 1 ; : : : ; m ? u : Figure 1 shows this construction for m = 30 , u = dpme = 18 , d = 3 , l = 6 , k = 11 . We claim that the greedy algorithm outputs a p-cover J ? = f1 ; : : : ; kg . Indeed , q1 > = d , hence in the first iteration S1 is chosen . Assume that after the i-th step , J ? = f1 ; : : : ; ig , leaving qi +1 + ? ? ? + qk elements to cover . Set r = maxfjS -LRB- i -RRB- k + j j : j = 1 ; : : : ; lg . Because of the construction of the sets in the cover , we have r ? 1 < = jS -LRB- i -RRB- k + j j < = r for all j = 1 ; : : : ; l. Hence qi +1 + ? ? ? + qk = P j jS -LRB- i -RRB- k + j j > -LRB- r ? 1 -RRB- l and thus qi +1 > = r by inequality -LRB- 13 -RRB- . As a result , the greedy algorithm will choose the set Si +1 in its -LRB- i + 1 -RRB- - st step . 2 It is now clear that , for fixed cmin = l , u < N -LRB- k ; l -RRB- implies cgreedy < k. On the other hand , if u > = N -LRB- k ; l -RRB- , there are covers for which cmin = l and cgreedy = k . This proves the following Lemma : Lemma 4 For any set U and any < p < = 1 such that u = dpme > = 2 , and for any cover S of U , cgreedy cmin < = maxfk l j N -LRB- k ; l -RRB- < = ug : -LRB- 18 -RRB- Moreover , for any u > = 2 , there are covers for which the equality is attained . Lemma 4 establishes a tight bound on the quotient cgreedy = cmin . Unfortunately , it is of little practical use since we know almost nothing about the numbers N -LRB- k ; l -RRB- . The only immediate facts we have -LRB- as a consequence of -LRB- 17 -RRB- and -LRB- 15 -RRB- -RRB- are that , for any 2 < = l < = k , N -LRB- l ; l -RRB- = l and N -LRB- k + 1 ; l -RRB- = N -LRB- k ; l -RRB- + dN -LRB- k ; l -RRB- l ? 1 e = d l l ? 1N -LRB- k ; l -RRB- e : -LRB- 19 -RRB- Hence we can generate N -LRB- k ; l -RRB- for any k > = l > = 2 . This allows us to evaluate the bound for the quotient cgreedy = cmin for small u , but it does not say much about asymptotic behavior . Let us now establish some asymptotic properties of N -LRB- k ; l -RRB- . Using -LRB- 19 -RRB- , one can show that N -LRB- k ; l -RRB- > = ? l l ? 1 ? k?l N -LRB- l ; l -RRB- > = e k?ll l -LRB- 20 -RRB- which easily gives ln N -LRB- k ; l -RRB- > = k = l + ln l ? 1 : -LRB- 21 -RRB- The following lemma improves the above inequality . The proof uses more involved estimates and is in the Appendix . Lemma 5 For any k > = l > = 2 ln N -LRB- k ; l -RRB- > = ln l + -LRB- k ? l -RRB- 2 2l ? 1 : -LRB- 22 -RRB- Rearranging -LRB- 22 -RRB- gives immediately k l < = 2l ? 1 2l -LRB- ln N -LRB- k ; l -RRB- ? ln l -RRB- + 1 -LRB- 23 -RRB- for any k > = l > = 2 . This and Lemma 4 prove the following . Proposition 1 For any set U such that u = dpme > = 1 and any cover S of U , the p-cover output by the greedy algorithm satisfies cgreedy cmin < = 2cmin ? 1 2cmin -LRB- ln u ? ln cmin -RRB- + 1 : The bound of Proposition 1 is not very useful - we need a bound without specific dependence on cmin . Tedious analysis -LRB- details can be found in the Appendix -RRB- proves Theorem 3 Define M -LRB- u -RRB- to be maxfk = l j N -LRB- k ; l -RRB- < = ug = \ the worst case for cgreedy = cmin '' . Then there is a function f -LRB- u -RRB- = ? -LRB- ln ln u -RRB- such that M -LRB- u -RRB- < = ln u ? f -LRB- u -RRB- : Thus cgreedy cmin < = ln u ? ? -LRB- ln ln u -RRB- : Note : One can show analytically that f -LRB- u -RRB- > = ln ln u ? a for u > = uo where a > ln 2 and uo depends on a. Actual evaluation of M -LRB- u -RRB- for u < = uo shows that ln u ? M -LRB- u -RRB- > = ln ln u ? a for any a > = ao = 3 + ln ln 32 ? ln 32 ss :78 and 2 < = u < = uo . Therefore cgreedy cmin < = M -LRB- u -RRB- < = ln u ? ln ln u + ao for all u > = 2 . 4 Further Improvements The bounds in the previous section are incomparable with those of -LSB- 12 -RSB- . In this section we further improve our estimates for covers with equal costs and show that the performance guarantee of the greedy algorithm is better than that of the algorithms based on randomized rounding technique . Generalizing -LSB- 8 -RSB- we define a fractional p-cover T of U to be a system of weights T = ft1 ; : : : ; tng such that for at least u = dpme points x 2 U we have X fj j x2Sjg tj > = 1 : Denote by c ? -LRB- T -RRB- the cost of the fractional p-cover T , i.e. c ? -LRB- T -RRB- = nX j = 1 tj cj = nX j = 1 tj and let c?min = min T c ? -LRB- T -RRB- : This formulation is equivalent to the LP relaxation of the set cover problem considered by Srinivasan in -LSB- 12 -RSB- . Obviously , c?min < = cmin . Let us follow the steps in Section 3 . Set l ? = c?min . A simple argument shows that c?min = 1 implies cmin = 1 , hence by considering only those covers for which cmin = l > = 2 , we actually consider covers for which c?min = l ? > 1 : Now , q1l ? = q1 nX j = 1 tj > = nX j = 1 jSjjtj = nX j = 1 -LRB- X x2Sj tj -RRB- = X x2U -LRB- X fj j x2Sjg tj -RRB- > = u ; hence q1 > = d ul ? e. Similarly , qi > = du ? -LRB- q1 + ??? + qi ? 1 -RRB- l ? e. Next , we can define a ? 1 = 1 and a?i = da ? 1 + ? ? ? + a?i?i l ? ? 1 e ; and obtain as before Pki = 1 a?i < = Pki = 1 qi : Let us define N ? -LRB- k ; l ? -RRB- = kX i = 1 a?i for k = 1,2 , : : : : -LRB- 24 -RRB- From the discussion above , it is clear that u < N ? -LRB- k ; c?min -RRB- implies cgreedy < k hence the following counterpart of Lemma 4 holds . Lemma 6 For any set U and any < p < = 1 such that u = dpme > = 2 , and for any cover S of U , cgreedy < = maxfk j N -LRB- k ; c?min -RRB- < = ug : We have again that N ? -LRB- k + 1 ; l ? -RRB- = N ? -LRB- k ; l ? -RRB- + dN ? -LRB- k ; l ? -RRB- l ? ? 1 e = d l ? l ? ? 1N ? -LRB- k ; l ? -RRB- e ; -LRB- 25 -RRB- and , with a small adjustment , N ? -LRB- bl?c ; l ? -RRB- = bl?c for any l ? > 1 . Careful analysis shows that N ? -LRB- k ; l ? -RRB- > = ? l ? l ? ? 1 ? k?bl?c N ? -LRB- bl?c ; l ? -RRB- > = e k?l ? l ? l ? -LRB- 26 -RRB- for k > = l ? , hence ln N ? -LRB- k ; l ? -RRB- > = k = l ? + ln l ? ? 1 : -LRB- 27 -RRB- Thus we have shown the following . Proposition 2 For any set U such that u = dpme > = 1 and any cover S , the p-cover output by the greedy algorithm satisfies cgreedy < = c?min -LRB- ln u ? ln c?min + 1 -RRB- : -LRB- 28 -RRB- Proceeding as in Section 3 , we can further improve -LRB- 28 -RRB- and obtain the following analogy of Proposition 1 . The proof is in the Appendix . Theorem 4 For any set U such that u = dpme > = 1 and any cover S , the p-cover output by the greedy algorithm satisfies cgreedy < = ? c?min ? 1 2 ? -LRB- ln u ? ln c?min -RRB- + c?min : -LRB- 29 -RRB- Theorem 4 shows that the performance guarantee for the greedy algorithm is substantially better than the performance guarantee -LRB- 3 -RRB- for the randomized rounding algorithm . Moreover , the above inequality is of the same form as the bound in Proposition 1 , only cmin is replaced by c?min . Thus a simple repetition of the steps in the proof of Theorem 3 proves that cgreedy c?min < = ln u ? ? -LRB- ln ln u -RRB- : Acknowledgements I would like to thank Eugene Kleinberg , my advisor , for many useful discussions . I am also very grateful to Jon Kleinberg for his comments , references , and suggestions . In particular , he pointed me towards establishing the result in Theorem 3 . References -LSB- 1 -RSB- V. Chv?atal . A Greedy Heuristic for the Set-covering Problem . Mathematics of Operations Research 4 -LRB- 1979 -RRB- , pp. 233-235 . -LSB- 2 -RSB- P. Crescenzi and V. Kann . A Compendium of NP Optimization Problems . Technical Report SI/RR -95 / 02 , Department of Computer Science , University of Rome `` La Sapienza '' , 1995 . -LSB- 3 -RSB- M.R. Garey and D.S. Johnson . Computers and Intractability : A Guide to the Theory of NP - Completeness W.H. Freeman , New York , NY -LRB- 1979 -RRB- . -LSB- 4 -RSB- M.M. Halld?orsson . Approximating Discrete Collections via Local Improvements . Proc . 6th Annual ACM-SIAM Symposium on Discrete Algorithms -LRB- 1995 -RRB- . -LSB- 5 -RSB- D.S. Johnson . Approximation Algorithms for Combinatorial Problems . Journal of Computer and System Sciences 9 -LRB- 1974 -RRB- , pp. 256-278 . -LSB- 6 -RSB- R.M. Karp . Reducibility among Combinatorial Problems . In R.E. Miller and J.W. Thatcher , editors , Complexity of Computer Computations , 85-103 , Plenum Press , New York , NY -LRB- 1972 -RRB- . -LSB- 7 -RSB- M.J. Kearns . The Computational Complexity of Machine Learning . MIT Press , Cambridge , MA -LRB- 1990 -RRB- . -LSB- 8 -RSB- L. Lovasz . On the Ratio of Optimal Integral and Fractional Covers . Discrete Mathematics 13 -LRB- 1975 -RRB- , pp. 383-390 . -LSB- 9 -RSB- C. Lund and M. Yannakakis . On the Hardness of Approximating Minimization Problems . Journal of the ACM 41 -LRB- 1994 -RRB- , pp. 960-982 . -LSB- 10 -RSB- P. Raghavan . Probabilistic Construction of Deterministic Algorithms : Approximating Packing Integer Programs . Journal of Computer and System Sciences 37 -LRB- 1988 -RRB- , pp. 130-143 . -LSB- 11 -RSB- P. Raghavan and C.D. Thompson . Randomized Rounding : a Technique for Provably Good Algorithms and Algorithmic Proofs . Combinatorica 7 -LRB- 1987 -RRB- , pp. 365-374 . -LSB- 12 -RSB- A. Srinivasan . Improved Approximation of Packing and Covering Problems . In Proc . ACM Symposium on Theory of Computing -LRB- 1995 -RRB- , pp . 268-276 . Appendix Proof -LSB- Lemma 1 -RSB- : In every iteration -LRB- i + 1 -RRB- of the greedy method , we choose a subscript j for which cj = u -LRB- i -RRB- j is minimum . Assume , as before , that the greedy algorithm chooses index i in its i-th iteration . Define f -LRB- U -LRB- i -RRB- -RRB- = min 8 < : cj u -LRB- i -RRB- j j j = i + 1 ; : : : ; n 9 = ; = ci +1 u -LRB- i -RRB- i +1 for all i = ; : : : ; k ? 1 . Clearly , f -LRB- U -LRB- i -RRB- -RRB- < = f -LRB- U -LRB- i +1 -RRB- -RRB- for any i = ; : : : ; k ? 2 . Assume that k < dpme . Then there is at least one i such that u -LRB- i -RRB- i +1 > 1 -LRB- i.e. at the -LRB- i + 1 -RRB- st iteration , we delete at least two elements -RRB- . For some x 2 S -LRB- i -RRB- i +1 , define Sn +1 = fxg ; Sn +2 = S -LRB- i -RRB- i +1 n fxg ; cn +1 = f -LRB- U -LRB- i -RRB- -RRB- ; and cn +2 = f -LRB- U -LRB- i -RRB- n fxg -RRB- -LRB- u -LRB- i -RRB- i +1 ? 1 -RRB- : Consider the cover R = fR1 ; : : : ; Rn +2 g = fS1 ; : : : ; Si ; Sn +1 ; Sn +2 ; Si +2 ; : : : ; Sn ; Si +1 g consisting of the sets of the original cover S and the two new sets Sn +1 and Sn +2 . Clearly , enriching the cover S by the two sets in no way increases the minimum cost of a p-cover - it might only decrease it . On the other hand , because of the choice of the costs cn +1 and cn +2 and the fact that in the case of two sets having the same cost per element , the one with smaller subscript is chosen , the greedy algorithm applied on R will output a p-cover R ? = fR1 ; : : : ; Rk +1 g = fS1 ; : : : ; Si ; Sn +1 ; Sn +2 ; Si +2 ; : : : ; Skg : Since cn +1 + cn +2 = f -LRB- U -LRB- i -RRB- -RRB- + f -LRB- U -LRB- i -RRB- n fxg -RRB- -LRB- u -LRB- i -RRB- i +1 ? 1 -RRB- > = f -LRB- U -LRB- i -RRB- -RRB- + f -LRB- U -LRB- i -RRB- -RRB- -LRB- u -LRB- i -RRB- i +1 ? 1 -RRB- = f -LRB- U -LRB- i -RRB- -RRB- u -LRB- i -RRB- i +1 = ci +1 we have c -LRB- R ? -RRB- > = c -LRB- S ? -RRB- : Hence after adding sets Sn +1 and Sn +2 -LRB- with appropriate costs -RRB- to the original cover , and appropriate rearranging , the greedy algorithm outputs a p-cover of k +1 sets that is at least as expensive as the p-cover output originally . For simplicity , set u = dpme and N = n + 2 -LRB- dpme ? k -RRB- . Applying the above method repeatedly -LRB- u ? k -RRB- times , we obtain a cover R = fR1 ; : : : ; RNg such that the minimum cost of a p-cover for R does not exceed c -LRB- A -RRB- and the greedy algorithm applied on R outputs a p-cover R ? = fR1 ; : : : ; Rug such that c -LRB- R ? -RRB- > = c -LRB- S ? -RRB- . Also u -LRB- i -RRB- i +1 = 1 for all i = ; : : : ; u ? 1 , i.e. only one element of each set Ri contributes to our greedy p-cover . Defining RN + i = Ri n i ? 1 -LSB- j = 1 Rj = R -LRB- i ? 1 -RRB- i ; for i = 1 ; : : : ; u ? 1 and RN + u = fxg for some x 2 R -LRB- u ? 1 -RRB- u ; gives us jRN +1 j = ? ? ? = jRN + uj = 1 : Set cN + i = ci for all i = 1 ; : : : ; u . Then the cover T = fT1 ; : : : ; TN + ug = fRN +1 ; : : : ; RN + u ; Ru +1 ; : : : ; RN ; R1 ; : : : ; Ru ? 1 ; Rug : proves the Lemma . 2 Proof -LSB- Lemma 2 -RSB- : After i-th iteration of the greedy algorithm , i = ; : : : ; k ? 1 , there are exactly di = k ? i elements to be covered , i.e. there are at least k ? i elements in SAs not deleted in the previous steps . Hence , if we define b -LRB- i -RRB- s = min -LRB- jA -LRB- i -RRB- s j ; di -RRB- , we have Pls = 1 b -LRB- i -RRB- s > = di = k ? i : The greedy condition implies that ci +1 < = ffs b -LRB- i -RRB- s for all s = 1 ; : : : ; l for which b -LRB- i -RRB- s > 0 . Therefore ci +1 < = ffs ks ; for all s = 1 ; : : : ; l and all ks = 1 ; : : : ; b -LRB- i -RRB- s , i.e. ci +1 < = ej for at least k ? i indices j . But e1 < = ? ? ? < = ek , hence ci +1 < = ek ? -LRB- k?i -RRB- +1 = ei +1 for any i = ; : : : ; k ? 1 . 2 Proof -LSB- Lemma 5 -RSB- : Since the function y = 1 = x is convex -LRB- concave up -RRB- , we have ln -LRB- a + b -RRB- ? ln a > b a + b2 = 2b 2a + b for any a ; b > 0 . Also , for any < = a < b < c , bc > = b?a c?a , hence ln N -LRB- k + 1 ; l -RRB- ? ln N -LRB- k ; l -RRB- > 2d 1l ? 1N -LRB- k ; l -RRB- e 2N -LRB- k ; l -RRB- + d 1l ? 1N -LRB- k ; l -RRB- e > = 2 1l ? 1N -LRB- k ; l -RRB- 2N -LRB- k ; l -RRB- + 1l ? 1N -LRB- k ; l -RRB- = 2 2l ? 1 : Applying the above inequality repeatedly yields ln N -LRB- k ; l -RRB- > = ln N -LRB- l ; l -RRB- + -LRB- k ? l -RRB- 2 2l ? 1 = ln l + -LRB- k ? l -RRB- 2 2l ? 1 : 2 Proof -LSB- Theorem 3 -RSB- : Set k = cgreedy , l = cmin , g -LRB- l ; u -RRB- = ln u ? ln l 2l + ln l ? 1 and f -LRB- u -RRB- = min2 < = l < = u g -LRB- l ; u -RRB- . By Proposition 1 , we have ln u ? M -LRB- u -RRB- > = g -LRB- l ; u -RRB- > = f -LRB- u -RRB- : The partial derivative of g -LRB- l ; u -RRB- with respect to l is @g -LRB- l ; u -RRB- @l = 1 2l2 -LRB- 2l + ln l ? ln u ? 1 -RRB- ; hence , for fixed 1 < = u < = 2e3 , g -LRB- l ; u -RRB- is an increasing function of l , and for fixed u > 2e3 , g -LRB- l ; u -RRB- is a unimodal function with both relative and absolute minimum at l = ^ l , where ^ l satisfies ln u = h -LRB- ^ l -RRB- with ln u = h -LRB- ^ l -RRB- = ln ^ l + 2 ^ l ? 1 : -LRB- 30 -RRB- Therefore f -LRB- u -RRB- = -LRB- g -LRB- 2 ; u -RRB- = ln u4 + 3 ln 2 4 ? 1 for 1 < = u < = 2e3 ; g -LRB- ^ l ; u -RRB- = ln ^ l ? 12 ^ l = ln h ? 1 -LRB- ln u -RRB- ? 1 2h ? 1 -LRB- lnu -RRB- for u > 2e3 . Here h ? 1 is the inverse of h . Since h is increasing , so is h ? 1 , hence f is also increasing . Clearly , limu ! 1 f -LRB- u -RRB- = 1 : Finally , ln u = ? -LRB- ^ l -RRB- hence ^ l = ? -LRB- ln u -RRB- , therefore f -LRB- u -RRB- = ? -LRB- ln ^ l -RRB- = ? -LRB- ln ln u -RRB- . Hence M -LRB- u -RRB- < = ln u ? ? -LRB- ln ln u -RRB- . -LRB- Detailed analysis shows that :4 ln ln u < = f -LRB- u -RRB- < = ln ln u for u > = e2e . -RRB- 2 Proof -LSB- Theorem 4 -RSB- : In order to simplify the notation , let us omit the \ ? '' when referring to N ? and l ? . Hence l > 1 is now a rational number . As before ln N -LRB- k + 1 ; l -RRB- ? ln N -LRB- k ; l -RRB- > 2 2l ? 1 ; hence ln N -LRB- k ; l -RRB- > = lnblc + 2 -LRB- k ? blc -RRB- 2l ? 1 = ln l + 2 -LRB- k ? l -RRB- 2l ? 1 + ! ; where ! = 2 -LRB- l ? blc -RRB- 2l ? 1 + lnblc ? ln l : Set ff = l ? blc . Then ! = 2ff 2l ? 1 + ln -LRB- l ? ff -RRB- ? logl > = 2ff 2l ? 1 ? ff l ? ff = ff -LRB- 1 ? 2ff -RRB- -LRB- 2l ? 1 -RRB- -LRB- l ? ff -RRB- : Thus for < = ff < = 1 = 2 and any k > = l > 1 , we have ! > = 0 , hence ln N -LRB- k ; l -RRB- > = ln l + 2 -LRB- k ? l -RRB- 2l ? 1 : -LRB- 31 -RRB- If ff > = 1 = 2 , then l > = 3 = 2 , hence N -LRB- dle ; l -RRB- = blc + 2 . Therefore ln N -LRB- k ; l -RRB- > = ln -LRB- blc + 2 -RRB- + 2 -LRB- k ? blc ? 1 -RRB- 2l ? 1 = ln l + 2 -LRB- k ? l -RRB- 2l ? 1 + ffl ; where ffl = 2 -LRB- l ? blc ? 1 -RRB- 2l ? 1 + ln -LRB- blc + 2 -RRB- ? ln l : Similarly as above , ffl > = 2ff ? 2 2l ? 1 + 2 ? ff l + 1 = 2l + 3ff ? 4 -LRB- 2l ? 1 -RRB- -LRB- l + 1 -RRB- > = ; hence -LRB- 31 -RRB- is valid for ff > = 1 = 2 as well . Rearranging -LRB- 31 -RRB- completes the proof . 2

O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O

approximation algorithms
greedy algorithm