24
Télécom 2A – Algo Complexity (1) Time Complexity and the divide and conquer strategy Or : how to measure algorithm run-time And : design efficient algorithms Oct. 2005

Time Complexity and the divide and conquer strategydevernay.free.fr/cours/algo/docs/10 - Time Complexity.pdf · Télécom 2A – Algo Complexity (1) Time Complexity and the divide

  • Upload
    vutu

  • View
    224

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Time Complexity and the divide and conquer strategydevernay.free.fr/cours/algo/docs/10 - Time Complexity.pdf · Télécom 2A – Algo Complexity (1) Time Complexity and the divide

Télécom 2A – Algo Complexity(1)

Time Complexityand the divide and conquer strategy

Or : how to measure algorithm run-timeAnd : design efficient algorithms

Oct. 2005

Page 2: Time Complexity and the divide and conquer strategydevernay.free.fr/cours/algo/docs/10 - Time Complexity.pdf · Télécom 2A – Algo Complexity (1) Time Complexity and the divide

Télécom 2A – Algo Complexity(2)

Contents

1. Initial considerationsa) Complexity of an algorithmb) About complexity and order of magnitude

2. The “divide and conquer” strategy and itscomplexity

3. A word about “greedy algorithms”

Page 3: Time Complexity and the divide and conquer strategydevernay.free.fr/cours/algo/docs/10 - Time Complexity.pdf · Télécom 2A – Algo Complexity (1) Time Complexity and the divide

Télécom 2A – Algo Complexity(3)

Basic preliminary considerations

• We are interested by the asymptotic timecomplexity T(n) with n being the size of theinput

• order of magnitude : O(f(n))∃ A, ∃ α ∀n>A g(n)< α f(n) => g is said to be

O(f(n))Examples :

n2 is O(n3) (why?), 1000n + 1010 is O(n)

Page 4: Time Complexity and the divide and conquer strategydevernay.free.fr/cours/algo/docs/10 - Time Complexity.pdf · Télécom 2A – Algo Complexity (1) Time Complexity and the divide

Télécom 2A – Algo Complexity(4)

Understanding order of magnitude

2615102n

4423910n3

930024431n²5,6 . 1054893140n logn8,6 . 10760 0001000n

∞∞21000 log2 n

1 day1 min1 secTimecomplexity

If 1000 steps/sec, how large can a problem be inorder to be solved in :

Page 5: Time Complexity and the divide and conquer strategydevernay.free.fr/cours/algo/docs/10 - Time Complexity.pdf · Télécom 2A – Algo Complexity (1) Time Complexity and the divide

Télécom 2A – Algo Complexity(5)

Is it worth to improve the code?

• If moving from n² to n.logn, definitively• If your step is running 10 times faster,

For the same problem, 10 time faster!For the same time how larger might the data

be: Linear : 10 time larger n.logn : almost 10 time larger n² : 3 time larger 2n : initial size + 3.3 ◄Forget about

Page 6: Time Complexity and the divide and conquer strategydevernay.free.fr/cours/algo/docs/10 - Time Complexity.pdf · Télécom 2A – Algo Complexity (1) Time Complexity and the divide

Télécom 2A – Algo Complexity(6)

Complexity of an algorithm

• Depends on the data :If an array is already sorted, some sorting

algorithms have a behavior in O(n),• Default definition : complexity is the

complexity in the worst case• Alternative :

Complexity in the best case (no interest)Complexity on the average :

Requires to define the distribution of the data.

Page 7: Time Complexity and the divide and conquer strategydevernay.free.fr/cours/algo/docs/10 - Time Complexity.pdf · Télécom 2A – Algo Complexity (1) Time Complexity and the divide

Télécom 2A – Algo Complexity(7)

Complexity of a problem• The complexity of the best algorithm for

providing the solutionOften the complexity is linear: you need to input the

data;Not always the case : the dichotomy search is in O(n

logn) if the data are already in memory• Make sense only if the problem can be solved :

Unsolvable problem : for instance: deciding if aprogram will stop (linked to what is mathematicallyundecidable)

Solvable problem: for instance: deciding if themaximum of a list of number is positive; complexityO(n)

Page 8: Time Complexity and the divide and conquer strategydevernay.free.fr/cours/algo/docs/10 - Time Complexity.pdf · Télécom 2A – Algo Complexity (1) Time Complexity and the divide

Télécom 2A – Algo Complexity(8)

Complexity of sorting

• Finding the space of solutions : one of thepermutations that will provide the resultsorted : size of the space : n!

• How to limit the search solutionEach answer to a test on the data specifies a

subset of possible solutionsIn the best case, the set of possible solution in

cut into 2 half

Page 9: Time Complexity and the divide and conquer strategydevernay.free.fr/cours/algo/docs/10 - Time Complexity.pdf · Télécom 2A – Algo Complexity (1) Time Complexity and the divide

Télécom 2A – Algo Complexity(9)

Sorting (cont.)

If we are smart enough for having thiskind of tests : we need a sequence of ktests to reach a subset with a singlesolution.

Therefore : 2k ~ n!So

Therefore sorting is at best in O(n.logn)And we know an algorithm in O(nlogn)

T1

T2.1 T2.2

T3.1 T3.2

ennnne

nnnk

n

n

2222222 loglogloglog!log !+""" ##

Page 10: Time Complexity and the divide and conquer strategydevernay.free.fr/cours/algo/docs/10 - Time Complexity.pdf · Télécom 2A – Algo Complexity (1) Time Complexity and the divide

Télécom 2A – Algo Complexity(10)

Examples of complexity

• Polyomial sum : O(n)• Product of polynoms : O(n²) ? O(nlogn)• Graph coloring : probably O(2n)

• Are 3 colors for aplanar graph sufficient?• Can a set of numbersbe splitted in 2 subsetsof equal sum?

Page 11: Time Complexity and the divide and conquer strategydevernay.free.fr/cours/algo/docs/10 - Time Complexity.pdf · Télécom 2A – Algo Complexity (1) Time Complexity and the divide

Télécom 2A – Algo Complexity(11)

Space complexity

• Complexity in space : how much space isrequired?don’t forget the stack when recursive calls

occurUsually much easier than time complexity

Page 12: Time Complexity and the divide and conquer strategydevernay.free.fr/cours/algo/docs/10 - Time Complexity.pdf · Télécom 2A – Algo Complexity (1) Time Complexity and the divide

Télécom 2A – Algo Complexity(12)

The divide and conquerstrategy

• A first example : sorting a set S of valuessort (S) =

if |S| ≤ 1 then return Selse divide (S, S1, S2)

fusion (sort (S1), sort (S2))end if

fusion is linear is the size of its parameter;divide is either in O(1) or O(n)

The result is in O(nlogn)

Page 13: Time Complexity and the divide and conquer strategydevernay.free.fr/cours/algo/docs/10 - Time Complexity.pdf · Télécom 2A – Algo Complexity (1) Time Complexity and the divide

Télécom 2A – Algo Complexity(13)

The divide and conquer principle

• General principle :Take a problem of size nDivide it into a sub problems of size n/b this process adds some linear complexity cn

• What is the resulting complexity?

• Example . Sorting with fusion ; a=2, b=2

11 =

+=

)(

)()(

T

cnb

naTnT

Page 14: Time Complexity and the divide and conquer strategydevernay.free.fr/cours/algo/docs/10 - Time Complexity.pdf · Télécom 2A – Algo Complexity (1) Time Complexity and the divide

Télécom 2A – Algo Complexity(14)

Fundamental complexity result forthe divide and conquer strategy• If

• Then If a=b : T(n) = O(n.logn) If a<b and c>0 : T(n) = O(n) If a<b and c=0 : T(n) = O(logn) If a>b :

Proof : see lecture notes section 12.1.2

11 =

+=

)(

)()(

T

cnb

naTnT

)()( log abnOnT =

◄ Most frequent case

Page 15: Time Complexity and the divide and conquer strategydevernay.free.fr/cours/algo/docs/10 - Time Complexity.pdf · Télécom 2A – Algo Complexity (1) Time Complexity and the divide

Télécom 2A – Algo Complexity(15)

Proof steps

• Consider n = bk (k = logbn)•

• Summing terms together :

)(log)(log )(

)()(

)()(

)()(

nn

ii

ii

ii

bb aTab

cna

b

nTa

b

nTa

b

cna

b

nTa

b

naT

cnb

naTnT

=

+=

+=

+=

+

!

1

1

1

2

2

KK

kk

i

i ab

acnnT += !

"

=

1

1

)()(

Page 16: Time Complexity and the divide and conquer strategydevernay.free.fr/cours/algo/docs/10 - Time Complexity.pdf · Télécom 2A – Algo Complexity (1) Time Complexity and the divide

Télécom 2A – Algo Complexity(16)

Proof steps (cont.)

• a<b the sum is bounded by a constant andak < n , so T(n) = O(n)

• a=b, c>0 ak = n , so T(n) = O(n.logn)• a>b : the (geometric) sum is of order ak/n

Both terms in ak

Therefore

kk

i

i ab

acnnT += !

"

=

1

1

)()(

)()( log abnOnT =

Page 17: Time Complexity and the divide and conquer strategydevernay.free.fr/cours/algo/docs/10 - Time Complexity.pdf · Télécom 2A – Algo Complexity (1) Time Complexity and the divide

Télécom 2A – Algo Complexity(17)

Application: matrix multiplication• Standard algorithm

For all (i,j)

• Divide and conquer:Direct way :

Counting : b=2, a=8 therefore O(n3) !!!

• Smart implementation: Strassen, able to bring it down to 7Therefore

! ==

n

k jkkiji bac1 ,,, O(n3)

!!"

#$$%

&'!!"

#$$%

&=!!

"

#$$%

&

2221

1211

2221

11

2212

12112

BB

BB

AA

AA

CC

CC

)()( ,log 81272 nOnO =

Only for large value of n (>700)

Page 18: Time Complexity and the divide and conquer strategydevernay.free.fr/cours/algo/docs/10 - Time Complexity.pdf · Télécom 2A – Algo Complexity (1) Time Complexity and the divide

Télécom 2A – Algo Complexity(18)

Greedy algorithms : why looking for• A standard optimal search algorithm:Computes the best solution extending a partial solution S’ only if its value

exceeds the initial value of Optimal_Value;The result in such a case is Optimal_S; these global variables might bemodified otherwise

Search (S: partial_solution) :if Final(S) then if value(S)> Optimal_Value then

Optimal_Value := value(S); Optimal_S := S; end if;

else for each S’ extending S loopSearch (S’);

end if

Complexity : if k steps in the loop, if the search depth is n :O(kn)

Page 19: Time Complexity and the divide and conquer strategydevernay.free.fr/cours/algo/docs/10 - Time Complexity.pdf · Télécom 2A – Algo Complexity (1) Time Complexity and the divide

Télécom 2A – Algo Complexity(19)

Instantiation for the search of thelongest path in a graph

Longest (p: path)-- compute the longest path without circuits in a graph-- only if the length extends the value of The_Longest set-- before the call; in this case Long_Path is the value of this path, …..if Cannot_Extend(p) and then length(p)> The_Longest

then The_Longest := length(p); Long_Path := p; else let x be the end node of p;

for each edge (x,y) such that y ∉ p loopLongest (p ⊕ y);

end if;-- initial call : The_Longest := -1;

Longest (path (departure_node));

Page 20: Time Complexity and the divide and conquer strategydevernay.free.fr/cours/algo/docs/10 - Time Complexity.pdf · Télécom 2A – Algo Complexity (1) Time Complexity and the divide

Télécom 2A – Algo Complexity(20)

Alternative

• Instead of the best solution, a not too badsolution?

Greedy_search(S: partial_solution) :if final (S) then sub_opt_solution := S

else select the best S’ expending Sgreedy_search (S’)

end if;

Complexity : O(n)

Page 21: Time Complexity and the divide and conquer strategydevernay.free.fr/cours/algo/docs/10 - Time Complexity.pdf · Télécom 2A – Algo Complexity (1) Time Complexity and the divide

Télécom 2A – Algo Complexity(21)

Greedy search for the longest path

Greedy_Longest (p: path) :if Cannot_Extend(p) then Sub_Opt_Path := p

else let x be the end node of p;select the longest edge (x,y) such that y ∉ p

expGreedy_Longest (p ⊕ y);

end if;

Obviously don’t lead to the optimal solution in thegeneral case

Exercise : build an example where it leads to the worstsolution.

Page 22: Time Complexity and the divide and conquer strategydevernay.free.fr/cours/algo/docs/10 - Time Complexity.pdf · Télécom 2A – Algo Complexity (1) Time Complexity and the divide

Télécom 2A – Algo Complexity(22)

How good (bad?) is such a search?

• Depends on the problemCan lead to the worst solution in some casesSometimes can guarantee the best solution

Example : the minimum spanning tree (find asubset of edges of total minimum costconnecting a graph)Edge_set := ∅for i in 1..n-1 loop

Select the edge e with lowest cost not connecting alreadyconnected nodesAdd e to Edge_set

End loop;

Page 23: Time Complexity and the divide and conquer strategydevernay.free.fr/cours/algo/docs/10 - Time Complexity.pdf · Télécom 2A – Algo Complexity (1) Time Complexity and the divide

Télécom 2A – Algo Complexity(23)

• Notice that this algorithm might not be inO(n) as we need to find a minimum costedge, and make sure that it don’t connectalready connected nodesThis can be achieved in logn steps, but is out

of scope of this lecture : see the “union-find”data structure in Aho-Hopcroft-Ulman

Page 24: Time Complexity and the divide and conquer strategydevernay.free.fr/cours/algo/docs/10 - Time Complexity.pdf · Télécom 2A – Algo Complexity (1) Time Complexity and the divide

Télécom 2A – Algo Complexity(24)

Conclusion:What to remember

• Complexity on average might differ from worstcase complexity : smart analysis required

• For unknown problems, explore first the size ofsolution space

• Divide and conquer is an efficient strategy(exercises will follow); knowing the complexitytheorem is required

• Smart algorithm design is essential: a computer100 times faster will never defeat an exponentialcomplexity