+ All Categories
Home > Documents > CSC 282 – Algorithms Daniel Stefankovic – CSB 620 [email protected] TA: Girts Folkmanis...

CSC 282 – Algorithms Daniel Stefankovic – CSB 620 [email protected] TA: Girts Folkmanis...

Date post: 16-Dec-2015
Category:
Upload: gerard-lawson
View: 215 times
Download: 1 times
Share this document with a friend
41
SC 282 – Algorithms Daniel Stefankovic – CSB 620 [email protected] TA: Girts Folkmanis – CSB 614 [email protected] www.cs.rochester.edu/~stefanko/Teaching/06CS282
Transcript

CSC 282 – Algorithms

Daniel Stefankovic – CSB 620 [email protected]

TA: Girts Folkmanis – CSB 614 [email protected]

www.cs.rochester.edu/~stefanko/Teaching/06CS282

Grading formula

25% - homework30% - quizzes25% - 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)

CORRECTNESSEFFICIENCY

Problem: is n a prime?

PRIMALITY:INSTANCE: a natural number nQUESTION: 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 primeswith 1024-4096 bits.

Running time of our algorithms: Algorithm 1: 21024 – 24096

Algorithm 2:

Problem: is n a prime?

RSA cryptosystem needs primeswith 1024-4096 bits.

Running time of our algorithms: Algorithm 1: 21024 – 24096

Algorithm 2: 2512 – 22048

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 sizeHow many bits needed to represent n?

Input sizeHow 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 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>16 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 therunning 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 planeSOLUTION: a tour connecting the pointsMEASURE: the length of the tour

An applied problem

INSTANCE: n points in the planeSOLUTION: a tour connecting the pointsMEASURE: the length of the tour

An applied problem

INSTANCE: n points in the planeSOLUTION: a tour connecting the pointsMEASURE: the length of the tour

An efficient algorithm?

A correct algorithm

best (1 2 3 … n)for each permutation if cost()<cost(best) then best

EFFICIENCY?

SortingSORTING:INSTANCE: a sequence of n numbers a1,a2, … , an

SOLUTION: reordering bi of the input such that b1 b2 … bn

Insertion sorti 1while 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 1while 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?

Insertion sort – running time?

The worst-case running time ofinsertion sort is (n2).

Merge 2 sorted listsMERGE

INSTANCE: 2 lists xi, yi such that x1 x2 … xn

y1 y2 … ym SOLUTION: ordered merge

1 i 1, j 12 while i n and j n do 3 if xi yj then 4 output xi, i i + 15 else 6 output yj, j j + 17 output remaining elements

Merge 2 sorted lists

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?

Mergesort

[ … n/2 … ] [ … n/2 … ]

[ ... n … ]

[ … n/4 … ] [ … n/4 … ] [ … n/4 … ] [ … n/4 … ]

Depth ?

Running time?

Mergesort

[ … n/2 … ] [ … n/2 … ]

[ ... n … ]

[ … n/4 … ] [ … n/4 … ] [ … n/4 … ] [ … n/4 … ]

Depth = log n

Time spent on merge?

Mergesort

[ … n/2 … ] [ … n/2 … ]

[ ... n … ]

[ … n/4 … ] [ … n/4 … ] [ … n/4 … ] [ … n/4 … ]

Depth = log n

Time spent on merge?

Mergesort

[ … n/2 … ] [ … n/2 … ]

[ ... n … ]

[ … n/4 … ] [ … n/4 … ] [ … n/4 … ] [ … n/4 … ]

Depth = log n

O(n)

O(n)

O(n)

O(n.logn)

recurrence

T(n)= T(n/2) + (n) if n>1 T(1)= (1)

Mergesort

RAM model

Program

r0

r1

r2

r3

r4

r5

memory

.

.

.• Each register holds an integer• Operations: simple arithmetic if-then, goto, etc.


Recommended