Sie sind auf Seite 1von 32

Chapter 1

Sections 1.1 1.4


pages 1-40

Homework
Read Section 1.4 (recap of data
structures)
pages 26-37
Answer the following questions:

page 38, questions 1a, 1b, 2a, 2b, & 10


Also, what exactly is a dictionary (not
Webster's)
Due Wed 1/28 (in class)

Agenda
WTF?
Euclids algorithm
What is an algorithm
What is algorithm analysis all about
Problem types

Algorithm design & analysis process


Understand the Problem
Pick an algorithm design technique
Pick data structures, etc.
Design an algorithm
Prove correctness
Analyze the algorithm

WTF?

Code the algorithm

Euclids Algorithm
while n != 0 do
r m mod n
mn
nr
return m
Isnt it a cool algorithm?
Its very efficient, no?
How many divisions must it do, as a
function of m or n?

Euclids Algorithm
Best case: m mod n equal zero
Worst case?

Prime numbers maybe?


How do you get it to do a lot of
divisions?

Try This
Two prime numbers 29 and 7
Then try 13 and 8.
How can you cause the worst case?

Euclids Algorithm
Answer: Two consecutive Fibonacci
numbers.
In the worst case it will require about
L divisions

where L is the total number of digits in


both n and m.

Proving this is not fun.


Lets not do it, OK?

Euclids Algorithm
If I have two 10 digit numbers,
Euclids algorithm will take (at most)
about 20 divisions.
Whereas, consecutive integer
checking could take 9,999,999,999 X
2 divisions.
How does Euclids algorithm gain
such an advantage?

Euclids Algorithm
r m mod n
If r is not equal to zero then all the
numbers between m and r are NOT
gcds of m and n.
Its all about understanding the
properties of the problem.

What is the definition of a gcd?


What is the definition of mod?
The two are related.

An Algorithm
A sequence of unambiguous
instructions for solving a problem,
i.e., for obtaining a required output
for any legitimate input
in a finite amount of time.

History Lesson

Muhammad ibn Musa al-Khwarizmi


Famous mathematician from Bagdad
800 A.D

He wrote Al-jabr wa'l muqabala


(from which our modern word
"algebra" comes)
The English word "algorithm" derives
from the Latin form of al-Khwarizmi's
name

Stupid, irrelevant, personal


anecdote
As an undergraduate, I had Indian
Professor who was an expert on
algorithms and pronounced the word
A grow rid ems
Lets practice saying the word so we
dont sound like idiots.

Notion of algorithm
problem

algorithm

input

computer

output

Example of computational problem:


sorting

Statement of problem:

Input: A sequence of n numbers <a1, a2, , an>


Output: A reordering of the input sequence <a1, a2, ,
an> so that ai aj whenever i < j

Instance: The sequence <5, 3, 2, 8, 3>

Algorithms:

Selection sort
Insertion sort
Merge sort
(many others)

Example

Input: array a[1],,a[n]


Output: array a sorted in non-decreasing
order

Algorithm:
for i=1 to n
swap a[i] with smallest of a[i],a[n]

Algorithm design strategies

Brute force

Divide and conquer

Decrease and
conquer

Transform and
conquer

Greedy approach
Dynamic
programming
Backtracking and
Branch and bound
Space and time
tradeoffs

Analysis of Algorithms

How good is the algorithm?


Correctness
Time efficiency
Space efficiency

Does there exist a better algorithm?


Lower bounds
Optimality

Some Well-known Computational


Problems

Sorting
Searching
Shortest paths in a graph
Minimum spanning tree
Primality testing
Traveling salesman problem
Knapsack problem
Chess
Towers of Hanoi
Program termination

Why do we care?

Variations of the solutions to


these problems are used to
Schedule flights
Sorting
Route Internet traffic
Searching
Make Google work
Shortest paths in a
Prevent the stock-market from
graph
crashing
Minimum spanning tree
Assemble the human genome
Primality testing
Encrypt data
Traveling salesman
Save UPS millions of dollars
problem
Track terrorist cell
Knapsack problem
communication on the Internet
Chess
Make spell checkers work
Towers of Hanoi
help keep you from going
Program termination
through the walls in games like
Halo and CounterStrike

Basic Issues Related to Algorithms


How to design algorithms
How to express algorithms
Proving correctness
Efficiency

Theoretical analysis
Empirical analysis (experiments)

Optimality

What is an algorithm?

1.

Recipe, process, method, technique, procedure,


routine, with following requirements:
Finiteness

2.

Definiteness

3.

valid inputs are clearly specified

Output

5.

rigorously and unambiguously specified

Input

4.

terminates after a finite number of steps

can be proved to produce the correct output given a valid


input

Effectiveness

steps are sufficiently simple and basic

Why study algorithms?

Theoretical importance
the core of computer science

Practical importance
A practitioners toolkit of known algorithms

Framework for designing and analyzing


algorithms for new problems

Important Types of Problems


Sorting & Searching
String matching & pattern matching
Graph Problems
Combinatorial Problems
Geometric Problems
Numerical Problems

Sorting & Searching

Intrinsically related
Sorting can make searching easier

sort key an important attribute


used to sort data
stable sort preserves the relative
order of any two equal elements
in place sorting doesnt require
extra memory
search key not necessarily unique

String matching & pattern matching

Amazingly well-studied
Surprisingly difficult problem for certain
variations
Tons of applications:
Approximate matching used in spell checkers
Pattern matching used to find genes in DNA
Or, used to find patterns in the stock market

Graph Problems

Graphs can be used to model all sorts of


real-world environments, scenarios, and
systems.
Relationship modeling using graphs is very
powerful

Representing the real-world as a graph


can allow computers to solve all sorts of
problems.
Graph related algorithms are being used
to detect terrorist cell communication via
the Internet.
Hell, the Internet itself is a massive graph.

Combinatorial Problems

Certain problems, like optimal scheduling


or routing, can be reduced to finding the
optimal parameters among the set of all
possible parameters
But, the number of different parameter
combinations can become very large, too
large.
Reducing the combinatorial space of
problems is a very important strategy in
algorithms

Geometric Problems
These problems can be as simple as
finding the intersection point of two
lines to
Finding the Delaunay Triangulation of
the smallest convex polygon
containing a given set of points.
These types of problems arise from
modeling all sorts of real-world
entities.

Numerical Problems
Problems involving mathematical
objects
solving equations
computing integrals
efficiently evaluating functions
i.e., really boring stuff

Data Structures

The assigned reading is all about common


data structures used in algorithms
Data structures are just one of many tools
that can be used to improve algorithms
Perhaps they are the most important tool
Do the reading and homework
This material should not be new.

Homework
Read Section 1.4 (recap of data
structures)
pages 26-37
Answer the following questions:

page 38, questions 1a, 1b, 2a, 2b, & 10


Also, what exactly is a dictionary (not
Webster's)
Due Wed 1/28 (in class)

Das könnte Ihnen auch gefallen