ppt - New Mexico Computer Science for All

advertisement
New Mexico Computer Science
For All
Introduction to Algorithms
Maureen Psaila-Dombrowski
What do these things have in
common?
• Doing the laundry
• Going to the grocery store
• Making chocolate chip cookies
Each is an repeated action
Each follows the same steps each time you do it
Each can be thought of as an algorithm
Algorithm
• A set of instructions that can be used
repeatedly to solve a problem or
complete a task.
Why Use Algorithms?
• Don’t have think about the details of the
problem – we already know how to solve it.
▫ Once you know how to go to the grocery store, you
do not need to look at a map to decide where to
make the next turn.
• All the information is in the algorithm – just
have to follow it.
• Same algorithm can be used
▫ to sort a list whether it has 5 elements or 5000
• Anyone can follow it
Computers and Algorithms
• Computers
▫ Speed
▫ Accuracy
▫ Well-suited for solving tedious problems
 large telephone directory
 adding a long column of numbers
• Computers solving problems
▫
▫
▫
▫
A technique for solving the problem.
Algorithms
No algorithm  no solution
A general case solution (in some cases)
Characteristics of an Algorithm
• Receives input or initial conditions
• Produces a result (output)
• Contains steps
▫ Well-ordered
▫ Clearly defined
▫ Do-able
• Clear stopping point or conditions
• General
Already Use Algorithms
• Wiggle
Types of Algorithms
• Similar types can be grouped together
▫ Highlight how a problem can be attacked or
solution used
▫ Different ways to group
 Implementation: Iteration, deterministic, etc…
 Methodology: Brute Force, Divide and Conquer,…
 Application: Sorting, Searching,…
Example: Types of Algorithms
• Counting – counting large groups of items
• Sorting
- puts items in a certain order in a list
• Searching
- finding an item in a list
• Mapping/Graphing
- solving problems related to graph
theory (shortest distance, cheapest distance,…)
• Encryption – Encodes or decodes information
• Packing – how to fit the most items in a given space
• Maze – Creating or solving mazes
Developing an Algorithm
• What’s the problem?
• Start with input and output
• Abstraction and Decomposition
▫ Break the problem into parts
▫ Detail the steps required for each step
• Write the pseudo-code
• Refine the solution, if necessary
• Write the code
• Debug, test the code with different cases
• Your done!
Example Algorithm: Take the Average
• Input and output
▫ Input – list of numbers ( 5, 10, 12, 14, 16)
▫ Output – average of the list
• Abstraction and decomposition – what are the
steps
▫ Add up the numbers in the list (total)
▫ Count the numbers in the list (count)
▫ Average = total/count
Example Algorithm: Take the Average
• Write the Pseudo-Code
Initialize total and count to 0
For each number in the list
add that number to the total
add 1 to count
Divide total by count
• Refine if necessary – might find improvements
• Write the code – in the language you are using
• Debug – always!
Analyzing Algorithms
• There are many ways to solve the same problem
• Analyze algorithms
▫ Evaluate its suitability (speed, memory needed)
▫ Compare it with other possible algorithms
▫ Find improvements
• Algorithms tend to become better during
analysis
▫ shorter
▫ simpler
▫ more elegant
Big O
• Used in computer science
▫ When analyzing algorithms
 Measure of how an algorithm runs as you increase the
input size dramatically.
▫ Processing time
▫ Memory used
▫ Another way to classify algorithms
• Common Big O values
▫ O(n)
▫ O(n log(n))
▫ O(n2)
Summary
• Algorithm - A set of instructions to solve a problem
• Use algorithms because
 Don’t have think about the details of the problem
 All the information is in the algorithm
 Anyone can follow it
• Characteristics
 Receives input and Produces a result (output)
 Contains steps
▫ Well-ordered
▫ Clearly defined
▫ Doable
 Stops by itself
 General
• Algorithm Analysis is important
 Choose the best one
 One analysis used is Big O notation
Download