0% found this document useful (0 votes)
282 views6 pages

MIT6 006F11 Lec01 PDF

This lecture introduces the peak finding problem in one and two dimensions. In 1D, a divide and conquer approach is used to find a peak in O(log n) time by comparing the middle element to its neighbors. In 2D, two attempts at extending the 1D approach are made. The second approach succeeds by recursively finding the global maximum on half the columns to narrow the search space. This takes O(n log n) time if there are n rows and n columns.

Uploaded by

Anjali Ghosh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
282 views6 pages

MIT6 006F11 Lec01 PDF

This lecture introduces the peak finding problem in one and two dimensions. In 1D, a divide and conquer approach is used to find a peak in O(log n) time by comparing the middle element to its neighbors. In 2D, two attempts at extending the 1D approach are made. The second approach succeeds by recursively finding the global maximum on half the columns to narrow the search space. This takes O(n log n) time if there are n rows and n columns.

Uploaded by

Anjali Ghosh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

Lecture 1

Introduction and Peak Finding 6.006 Fall 2011

Lecture 1: Introduction and Peak Finding

Lecture Overview
Administrivia

Course Overview

Peak nding problem 1D and 2D versions

Course Overview
This course covers:

Ecient procedures for solving problems on large inputs (Ex: U.S. Highway Map,
Human Genome)

Scalability

Classic data structures and elementary algorithms (CLRS text)

Real implementations in Python

Fun problem sets!

The course is divided into 8 modules each of which has a motivating problem and problem
set(s) (except for the last module). Tentative module topics and motivating problems are
as described below:

1. Algorithmic Thinking: Peak Finding

2. Sorting & Trees: Event Simulation

3. Hashing: Genome Comparison

4. Numerics: RSA Encryption

5. Graphs: Rubiks Cube

6. Shortest Paths: Caltech MIT

7. Dynamic Programming: Image Compression

8. Advanced Topics

1
Lecture 1 Introduction and Peak Finding 6.006 Fall 2011

Peak Finder
One-dimensional Version
Position 2 is a peak if and only if b a and b c. Position 9 is a peak if i h.

1 2 3 4 5 6 7 8 9
a b c d e f g h i

Figure 1: a-i are numbers

Problem: Find a peak if it exists (Does it always exist?)

Straightforward Algorithm

6 7 4 3 2 1 4 5

Start from left


1 2 . . . n/2 . . . n-1 n

might be peak

(n) complexity worst case

Figure 2: Look at n/2 elements on average, could look at n elements in the worst case

What if we start in the middle? For the conguration below, we would look at n/2 elements.
Would we have to ever look at more than n/2 elements if we start in the middle, and choose
a direction based on which neighboring element is larger that the middle element?

n/2

2
Lecture 1 Introduction and Peak Finding 6.006 Fall 2011

Can we do better?

1 2 . . . n/2 -1 n/2 n/2 +1 . . . n-1 n

look at n/2 position

Figure 3: Divide & Conquer

If a[n/2] < a[n/2 1] then only look at left half 1 . . . n/2 1 to look for peak

Else if a[n/2] < a[n/2 + 1] then only look at right half n/2 + 1 . . . n to look for peak

Else n/2 position is a peak: WHY?

a[n/2] a[n/2 1]
a[n/2] a[n/2 + 1]

What is the complexity?

T (n) = T (n/2) + (1) = (1) + . . . + (1) (log2 (n) times) = (log2 (n))
' -v "
to compare a[n/2] to neighbors

In order to sum up the (i)s as we do here, we need to nd a constant that works for all.
If n = 1000000, (n) algo needs 13 sec in python. If algo is (log n) we only need 0.001 sec.
Argue that the algorithm is correct.

Two-dimensional Version

b a d
n rows
e

m columns

Figure 4: Greedy Ascent Algorithm: (nm) complexity, (n2 ) algorithm if m = n

a is a 2D-peak i a b, a d, a c, a e

3
Lecture 1 Introduction and Peak Finding 6.006 Fall 2011

14 13 12
15 9 11 17

16 17 19 20

Figure 5: Circled value is peak.

Attempt # 1: Extend 1D Divide and Conquer to 2D

j = m/2

Pick middle column j = m/2.

Find a 1D-peak at i, j.

Use (i, j) as a start point on row i to nd 1D-peak on row i.

Attempt #1 fails

Problem: 2D-peak may not exist on row i

10

14 13 12
15 9 11

16 17 19 20

End up with 14 which is not a 2D-peak.

4
Lecture 1 Introduction and Peak Finding 6.006 Fall 2011

Attempt # 2

Pick middle column j = m/2

Find global maximum on column j at (i, j)

Compare (i, j 1), (i, j), (i, j + 1)

Pick left columns of (i, j 1) > (i, j)

Similarly for right

(i, j) is a 2D-peak if neither condition holds WHY?

Solve the new problem with half the number of columns.

When you have a single column, nd global maximum and youre done.

Example of Attempt #2

go with

10 8 10 10 10 10 10

14 13 12 11 12 11 11

15 9 11 21 11 21 21 find 21

16 17 19 20 19 20 20

pick this column pick this column


17 global max 19 global max
for this column for this column

Complexity of Attempt #2

If T (n, m) denotes work required to solve problem with n rows and m columns

T (n, m) = T (n, m/2) + (n) (to nd global maximum on a column (n rows))


T (n, m) = (n) + . . . + (n)
' -v "
log m
= (n log m) = (n log n) if m = n

Question: What if we replaced global maximum with 1D-peak in Attempt #2? Would that
work?

5
MIT OpenCourseWare
http://ocw.mit.edu

6.006 Introduction to Algorithms


Fall 2011

For information about citing these materials or our Terms of Use, visit: http://ocw.mit.edu/terms.

You might also like