the design and analysis of algorithms

Post on 06-Jan-2016

35 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

The Design and Analysis of Algorithms. by Anany Levitin Lecture notes prepared by Lydia Sinapova, Simpson College. CHAPTER 1: INTRODUCTION. What is an Algorithm Steps in Designing and Implementing an Algorithm Important Problem Types Fundamental Data Structures. ALGORITHM. - PowerPoint PPT Presentation

TRANSCRIPT

The Design and Analysis of Algorithms

by Anany Levitin

Lecture notes prepared by Lydia Sinapova, Simpson College

2

CHAPTER 1: INTRODUCTIONCHAPTER 1: INTRODUCTION

What is an Algorithm

Steps in Designing and Implementing an Algorithm

Important Problem Types

Fundamental Data Structures

3

ALGORITHM

A sequence of unambiguous

instructions for solving a

problem, i.e. for obtaining the

required output for any

legitimate input in

a finite amount of time

4

Important points

Non-ambiguityNon-ambiguity

Range of inputsRange of inputs

The same algorithm can be The same algorithm can be represented in different waysrepresented in different ways

Several algorithms for solving Several algorithms for solving the same problemthe same problem

5

gcd(m,n)

while n ≠0 dor ← m mod

n m ← n

n ← rreturn m

1. t ← min (m ,n)

2. if m % t = 0 goto 3,

else goto 4

3. if n % t = 0 return t,

else goto 4

4. t ← t - 15. goto 2

6

Understand the problem

Decide on computational meansExact vs approximate solution

Data structuresAlgorithm design technique

Design an algorithm

Prove correctness

Analyze the algorithm

Code the algorithm

7

What does it mean to understand the problem? What are the problem objects? What are the operations applied to the objects?

Deciding on computational means How the objects would be represented? How the operations would be implemented?

8

Design an algorithm

• Build a computational model of the solving process

Prove correctness

• Correct output for every legitimate input in finite time

• Based on correct math formula

• By induction

9

Analyze the algorithm

Efficiency: time and space

Simplicity

Generality: range of inputs, special cases

Optimality:no other algorithm can do

betterCodingHow the objects and operations in the algorithm are represented in the chosen programming language?

10

Important problem types

Sorting Searching String processing Graph problems Combinatorial problems Geometric problems Numerical problems

11

Fundamental data structures

Linear data structures Array Linked list Stack Queue

Operations: search, delete, insert

Implementation: static, dynamic

12

Non-linear data structures Graphs Trees : connected graph without

cyclesRooted trees

Ordered treesBinary trees

Graph representation: adjacency lists, adjacency matrix Tree representation: as graphs; binary nodes

Fundamental data structures

13

Fundamental data structures

Sets, Bags, Dictionaries Set: unordered collection of distinct

elements

Operations: membership, union, intersection

Representation: bit string; linear structure

Bag: unordered collection, elements may be repeated

Dictionary: a bag with operations search, add, delete

14

Conclusion

Algorithm classificationBy types of problemsBy design technique

Design techniquesa general approach to solving problems

top related