410 likes | 535 Views
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)
E N D
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? PRIMALITY: INSTANCE: a natural number n QUESTION: is n a prime? Is 12345678987654321 a 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” Is 12345678987654321 a 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? Algorithm 2: 1 for k from 2 to √n do 2 if k divides n then RETURN “composite” 3 RETURN “prime” CORRECT?
Problem: is n a prime? RSA cryptosystem needs primes with 1024-4096 bits. Running time of our algorithms: Algorithm 1: 21024 – 24096 Algorithm 2:
Problem: is n a prime? RSA cryptosystem needs primes with 1024-4096 bits. Running time of our algorithms: Algorithm 1: 21024 – 24096 Algorithm 2: 2512 – 22048 NOT EFFICIENT
What means efficient? “efficient program using other efficient as subroutines is efficient” running time is bounded by a polynomial in the input size
Input size How many bits needed to represent n?
Input size How many bits needed to represent n? log n Algorithm 2: 1 for k from 2 to √n do 2 if k divides n then RETURN “composite” 3 RETURN “prime” √n polynomial(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 n2 + n3 = O(n4) 2 n2 / log(n) = O(n . log n) 3 5n + log(n) = O(n) 4 nlog n = O(n100) 5 3n = O(2n . n100)
Asymptotic notation 1 n2 + n3 = O(n4) 2 n2 / log(n) O(n . log n) 3 5n + log(n) = O(n) 4 nlog n O(n100) 5 3n O(2n . n100)
Asymptotic notation 1 n! = O(3n) 2 n +1 = O(n) 3 2n+1 = O(2n) 4 (n+1)! = O(n!) 5 1+c+c2+…+cn = O(cn) 6 1+c+c2+…+cn = O(1) n!= n.(n-1).(n-2) … 3.2.1
Asymptotic notation 1 n! O(3n) 2 n+1 = O(n) 3 2n+1 = O(2n) 4 (n+1)! O(n!) 5 1+c+c2+…+cn = O(cn) for c>1 6 1+c+c2+…+cn = 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(nk) 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
A correct algorithm • best (1 2 3 … n) • for each permutation • if cost()<cost(best) then • best EFFICIENCY?
Sorting SORTING: INSTANCE: a sequence of n numbers a1,a2, … , an SOLUTION: reordering bi of the input such that b1 b2 … bn
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 (n2).
Merge 2 sorted lists MERGE INSTANCE: 2 lists xi, yi such that x1 x2 … xn y1 y2 … ym SOLUTION: ordered merge
Merge 2 sorted lists 1 i 1, j 1 2 while i n and j n do 3 if xi yj then 4 output xi, i i + 15 else 6 output yj, j j + 1 7 output remaining elements
Mergesort MERGE-SORT(a,l,r) if l < r then m (l+r)/2 MERGE-SORT(a,I,m) MERGE-SORT(a,m+1,r) MERGE(a,l,m,r)
Mergesort Running time?
Mergesort Running time? [ ... n … ] [ … n/2 … ] [ … n/2 … ] [ … n/4 … ] [ … n/4 … ] [ … n/4 … ] [ … n/4 … ] Depth ?
Mergesort Running time? [ ... n … ] [ … n/2 … ] [ … n/2 … ] [ … n/4 … ] [ … n/4 … ] [ … n/4 … ] [ … n/4 … ] Depth = log n
Mergesort Time spent on merge? [ ... n … ] [ … n/2 … ] [ … n/2 … ] [ … n/4 … ] [ … n/4 … ] [ … n/4 … ] [ … n/4 … ] Depth = log n
Mergesort [ ... n … ] [ … n/2 … ] [ … n/2 … ] [ … n/4 … ] [ … n/4 … ] [ … n/4 … ] [ … n/4 … ] Time spent on merge? O(n) O(n) O(n) Depth = log n O(n.logn)
Mergesort recurrence T(n)= T(n/2) + (n) if n>1 T(1)= (1)
RAM model r0 r1 Program r2 r3 r4 r5 . • Each register holds an integer • Operations: • simple arithmetic • if-then, goto, etc. . . memory