Lecture Notes on What is Algorithm | CS 3343, Papers of Algorithms and Programming

Material Type: Paper; Class: Analysis Of Algorithms; Subject: Computer Science; University: University of Texas - San Antonio; Term: Unknown 1989;

Typology: Papers

Pre 2010

Uploaded on 07/31/2009

koofers-user-5io
koofers-user-5io 🇺🇸

4

(1)

10 documents

1 / 4

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
Chapter 1: Introduction
Progress is possible only if we
train ourselves to think about
programs without thinking of
them as pieces of executable
code. (Edsger Dijkstra)
What is an Algorithm? 2
Definition of an Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Example: Euclid’s Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Pseudocode for Euclid’s Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Sieve of Eratosthenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Fundamentals of Algorithmic Problem Solving 6
Design and Analysis Steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Algorithm Design Techniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Important Problem Types 8
Important Problem Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Fundamental Data Structures 9
Abstract Data Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Linear Data Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Graphs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Trees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Binary Search Trees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
First Child-Next Sibling Representation . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Sets and Dictionaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1
What is an Algorithm? 2
Definition of an Algorithm
An algorithm is a sequence of unambiguous instructions for solving a problem in a
finite amount of time. An input to an algorithm is an instance of the problem.
CS 3343 Analysis of Algorithms Chapter 1: Slide 2
Example: Euclid’s Algorithm
Euclid’s algorithm solves the problem of finding the greatest common divisor of
two positive integers.
The allowed inputs and desired output of the problem must be specified.
Each step in the algorithm must be unambiguous.
The order of steps must be unambiguous.
We will use pseudocode in the b ook’s style.
CS 3343 Analysis of Algorithms Chapter 1: Slide 3
2
pf3
pf4

Partial preview of the text

Download Lecture Notes on What is Algorithm | CS 3343 and more Papers Algorithms and Programming in PDF only on Docsity!

Chapter 1: Introduction^ Progress is possible only if wetrain ourselves to think aboutprograms

without

thinking

of

them

as

pieces

of

executable

code. (Edsger Dijkstra)

What is an Algorithm?

Definition of an Algorithm..................................... 2Example: Euclid’s Algorithm................................... 3Pseudocode for Euclid’s Algorithm............................... 4Sieve of Eratosthenes........................................ 5 Fundamentals of Algorithmic Problem Solving

Design and Analysis Steps..................................... 6Algorithm Design Techniques................................... 7 Important Problem Types

Important Problem Types..................................... 8 Fundamental Data Structures

Abstract Data Types......................................... 9Linear Data Structures...................................... 10Graphs................................................. 11Trees.................................................. 12Binary Search Trees........................................ 13First Child-Next Sibling Representation........................... 14Sets and Dictionaries....................................... 15

What is an Algorithm?

2

Definition of an Algorithm An^

algorithm

is a sequence of unambiguous instructions for solving a problem in a

finite amount of time. An input to an algorithm is an

instance

of the problem.

CS 3343 Analysis of Algorithms

Chapter 1: Slide – 2

Example: Euclid’s Algorithm Euclid’s algorithm

solves the problem of finding the greatest common divisor of

two positive integers. ^

The allowed inputs and desired output of the problem must be specified. ^

Each step in the algorithm must be unambiguous. ^

The order of steps must be unambiguous. We will use

pseudocode

in the book’s style.

CS 3343 Analysis of Algorithms

Chapter 1: Slide – 3

Pseudocode for Euclid’s Algorithm algorithm

Euclid

(m, n

// Computes gcd(

m,^

n) by Euclid’s algorithm

// Input: Two integers

m >

0 and

n^ ≥

// Output: Greatest common divisor of

m^

and

n

if^ n

then return

m

else return

Euclid

(n, m

mod

n)

CS 3343 Analysis of Algorithms

Chapter 1: Slide – 4

Sieve of Eratosthenes algorithm

Sieve

(n)

// Implements the sieve of Eratosthenes// Input: An integer

n >

// Output: A list

L^

of all primes

≤^

n

for p^ ←

2 to

n^ do

A[

p]^ ←

true

for p^ ←

2 to

n⌋^

do

if^ A

[p]^

then

p^ is prime

add

p^ to the list

L

j^ ←

p^ ∗

p while

j^ ≤

n^ do

// eliminate multiples of

p

A[j

]^ ←

false j^ ←

j^ +

p

return

L

CS 3343 Analysis of Algorithms

Chapter 1: Slide – 5

Fundamentals of Algorithmic Problem Solving

6

Design and Analysis Steps CS 3343 Analysis of Algorithms

Chapter 1: Slide – 6

Algorithm Design Techniques ^

Brute Force. Straightforward, naive approach. ^

Divide-and-Conquer. Divide into smaller insts. ^

Decrease-and-Conquer. Decrease instance size. ^

Transform-and-Conquer. Modify instance first. ^

Space and Time Tradeoffs. Use more space now to save time later. ^

Dynamic Programming. Record results of smaller, reoccuring instances. ^

Greedy Technique. Make locally optimal decisions. ^

Iterative Improvement. Improve one change at a time. CS 3343 Analysis of Algorithms

Chapter 1: Slide – 7

Trees CS 3343 Analysis of Algorithms

Chapter 1: Slide – 12

Binary Search Trees CS 3343 Analysis of Algorithms

Chapter 1: Slide – 13

First Child-Next Sibling Representation CS 3343 Analysis of Algorithms

Chapter 1: Slide – 14

Sets and Dictionaries A^ set

is an unordered collection of distinct items. A^ bit vector

can be used to represent a subset of a small set. E.g., 0011010100

might represent the subset

{^2

,^3 ,^

5 ,^7

}^ of

{^0

,^1 ,^

2 ,^3

,^4 ,^

5 ,^6

,^7 ,^

8 ,^9

A^ multiset

or^

bag

is an unordered collection of items, not necessarily distinct.

A^ list

is an ordered collection of items. Dictionary ADT: add/search for/delete item. CS 3343 Analysis of Algorithms

Chapter 1: Slide – 15