# CSC 282 – Algorithms Daniel Stefankovic – CSB 620 TA: Girts Folkmanis – CSB 614

## Presentation on theme: "CSC 282 – Algorithms Daniel Stefankovic – CSB 620 TA: Girts Folkmanis – CSB 614"— Presentation transcript:

CSC 282 – Algorithms Daniel Stefankovic – CSB 620 stefanko@cs.rochester.edu TA: Girts Folkmanis – CSB 614 gfolkman@cs.rochester.edu www.cs.rochester.edu/~stefanko/Teaching/06CS282

Grading formula 25% - homework 30% - quizzes 25% - midterm (Tu, Oct. 24) 30% - final (Th, Dec. 21)

25% - homework turn in before class on the due date no late homework accepted two lowest homework scores dropped 30% - quizzes 1 each week 10 min closed book no make-up quizzes two lowest quiz grades dropped

What is an algorithm? algorithm = problem-solving procedure Algoritmi de numero Indorum (Al-Khwarizmi Concerning the Hindu Art of Reckoning) CORRECTNESS EFFICIENCY

Problem: is n a prime? P RIMALITY : INSTANCE: a natural number n QUESTION: is n a prime? Is 12345678987654321 a prime?

Problem: is n a prime? Is 12345678987654321 a prime? Algorithm 1: 1 for k from 2 to n-1 do 2 if k divides n then RETURN “composite” 3 RETURN “prime”

Problem: is n a prime? Algorithm 1: 1 for k from 2 to n-1 do 2 if k divides n then RETURN “composite” 3 RETURN “prime” Algorithm 2: 1 for k from 2 to √ n do 2 if k divides n then RETURN “composite” 3 RETURN “prime”

Problem: is n a prime? CORRECT? Algorithm 2: 1 for k from 2 to √ n do 2 if k divides n then RETURN “composite” 3 RETURN “prime”

Problem: is n a prime? RSA cryptosystem needs primes with 1024-4096 bits. Running time of our algorithms: Algorithm 1: 2 1024 – 2 4096 Algorithm 2:

Problem: is n a prime? RSA cryptosystem needs primes with 1024-4096 bits. Running time of our algorithms: Algorithm 1: 2 1024 – 2 4096 Algorithm 2: 2 512 – 2 2048 NOT EFFICIENT

What means efficient? running time is bounded by a polynomial in the input size “efficient program using other efficient as subroutines is efficient”

Input size How many bits needed to represent n?

Input size How many bits needed to represent n? √n  polynomial(log n) ??? Algorithm 2: 1 for k from 2 to √ n do 2 if k divides n then RETURN “composite” 3 RETURN “prime” log n

What means efficient? running time is bounded by a polynomial in the input size More refined classification asymptotic notation

Asymptotic notation DEF: Let f,g: N  R +. We say f(n) = O(g(n)) if (  C) (  n) f(n)  C. g(n)

Asymptotic notation DEF: Let f,g: N  R +. We say f(n) = O(g(n)) if (  C) (  n) f(n)  C. g(n) 1 n 2 + n 3 = O(n 4 ) 2 n 2 / log(n) = O(n. log n) 3 5n + log(n) = O(n) 4 n log n = O(n 100 ) 5 3 n = O(2 n. n 100 )

Asymptotic notation 1 n 2 + n 3 = O(n 4 ) 2 n 2 / log(n)  O(n. log n) 3 5n + log(n) = O(n) 4 n log n  O(n 100 ) 5 3 n  O(2 n. n 100 )

Asymptotic notation 1 n! = O(3 n ) 2 n +1 = O(n) 3 2 n+1 = O(2 n ) 4 (n+1)! = O(n!) 5 1+c+c 2 +…+c n = O(c n ) 6 1+c+c 2 +…+c n = O(1) n!= n.(n-1).(n-2) … 3.2.1

Asymptotic notation 1 n!  O(3 n ) 2 n+1 = O(n) 3 2 n+1 = O(2 n ) 4 (n+1)!  O(n!) 5 1+c+c 2 +…+c n = O(c n ) for c>1 6 1+c+c 2 +…+c n = O(1) for c<1

Asymptotic notation DEF: Let f,g: N  R +. We say f(n) =  (g(n)) if f(n)=O(g(n)) and g(n)=O(f(n))

What means efficient? polynomial-time = running time is bounded by a polynomial in the input size, i.e., (  k) T(n) = O(n k ) More refined analysis = asymptotics for the running time (as a function of input-size) ideally we would like f(n) such that T(n) =  (f(n))

An applied problem INSTANCE: n points in the plane SOLUTION: a tour connecting the points MEASURE: the length of the tour

An applied problem INSTANCE: n points in the plane SOLUTION: a tour connecting the points MEASURE: the length of the tour

An applied problem INSTANCE: n points in the plane SOLUTION: a tour connecting the points MEASURE: the length of the tour

An efficient algorithm?

A correct algorithm best  (1 2 3 … n) for each permutation   if cost(  ) { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.com/14/4317252/slides/slide_26.jpg", "name": "A correct algorithm best  (1 2 3 … n) for each permutation   if cost(  )

Sorting S ORTING : INSTANCE: a sequence of n numbers a 1,a 2, …, a n SOLUTION: reordering b i of the input such that b 1  b 2  …  b n

Insertion sort i  1 while i  n do j  i while j  2 and a[ j-1] > a[ j ] do swap a[ j ],a[ j-1] j  j - 1 i  i + 1

Insertion sort – correctness? i  1 while i  n do j  i while j  2 and a[ j-1] > a[ j ] do swap a[ j ],a[ j-1] j  j - 1 i  i + 1

Insertion sort – running time?

The worst-case running time of insertion sort is  (n 2 ).

Merge 2 sorted lists M ERGE INSTANCE: 2 lists x i, y i such that x 1  x 2  …  x n y 1  y 2  …  y m SOLUTION: ordered merge

1 i  1, j  1 2 while i  n and j  n do 3 if x i  y j then 4 output x i, i  i + 1 5 else 6 output y j, j  j + 1 7 output remaining elements Merge 2 sorted lists

M ERGE -S ORT (a,l,r) if l < r then m   (l+r)/2  M ERGE -S ORT (a,I,m) M ERGE -S ORT (a,m+1,r) M ERGE (a,l,m,r) Mergesort

Running time? Mergesort

Running time? Mergesort [ … n/2 … ] [... n … ] [ … n/4 … ] Depth ?

Running time? Mergesort [ … n/2 … ] [... n … ] [ … n/4 … ] Depth = log n

Time spent on merge? Mergesort [ … n/2 … ] [... n … ] [ … n/4 … ] Depth = log n

Time spent on merge? Mergesort [ … n/2 … ] [... n … ] [ … n/4 … ] Depth = log n O(n) O(n.logn)

recurrence T(n)= T(n/2) +  (n) if n>1 T(1)=  (1) Mergesort

RAM model Program r0r0 r1r1 r2r2 r3r3 r4r4 r5r5 memory... Each register holds an integer Operations: simple arithmetic if-then, goto, etc.

Download ppt "CSC 282 – Algorithms Daniel Stefankovic – CSB 620 TA: Girts Folkmanis – CSB 614"

Similar presentations