fundamentals of algorithms mcs - 2 lecture # 1. prerequisites data structures discrete mathematics

21
FUNDAMENTALS OF ALGORITHMS MCS - 2 LECTURE # 1

Upload: millicent-caldwell

Post on 31-Dec-2015

229 views

Category:

Documents


0 download

TRANSCRIPT

FUNDAMENTALS OF ALGORITHMS

MCS - 2

LECTURE # 1

PREREQUISITES

• Data Structures

• Discrete Mathematics

COURSE RESOURCESCompulsory Reading Material

• Introduction to Algorithms by

Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest & Clifford Stein

(3rd Edition)

Recommended Reading

• Fundamentals of Computer Algorithms by

Eillies Horowitz & Sahni Sartaj (1990)

• Fundamentals of Algorithms by

Gilles Brassard & Paul Bratley (1995)

• Algorithms; Fourth Edition by

Robert Sedgewick & Kevin Wayne.

THE ROLE OF ALGORITHMS IN

COMPUTING

PROBLEM SOLVING

• Programming is a process of problem solving

• Problem solving techniques

• Analyze the problem

• Outline the problem requirements

• Design steps (algorithm) to solve the problem

• Algorithm:

• Step-by-step problem-solving process

• Solution achieved in finite amount of time

PROBLEM SOLVING PROCESS

• Step 1 - Analyze the problem

• Outline the problem and its requirements

• Design steps (algorithm) to solve the problem

• Step 2 - Implement the algorithm

• Implement the algorithm in code

• Verify that the algorithm works

• Step 3 - Maintenance

• Use and modify the program if the problem domain changes

ANALYZE THE PROBLEM

• Thoroughly understand the problem

• Understand problem requirements

• Does program require user interaction?

• Does program manipulate data?

• What is the output?

• If the problem is complex, divide it into subproblems

• Analyze each subproblem as above

DEFINITION

• In simple terms, an algorithm is a series of instructions to solve a problem (complete a task)

• Problems can be in any form• Business• Allocate manpower to maximize profit

• Real Life• If I go 10 steps forward, I will reach my mailbox.• I am hungry. How do I order pizza?• Explain how to tie shoelaces to a five year old child

APPLICATION OF ALGORITHM IN COMP. SCIENCE AREAS

• Compiler construction

• Operating system

• Databases

• AI

• Graphics

• Networking

• The idea behind the computer program

• It is a mathematical entity of a program.

• Stays the same independent of• Which kind of hardware it is running on

• Which programming language it is written in

• Solves a well-specified problem in a general way

• Is specified by• Describing the set of instances (input) it must work on

• Describing the desired properties of the output

ALGORITHM & PROGRAMMING

WHAT IS AN ALGORITHM? (CONT’D)

• Before a computer can perform a task, it must have an algorithm that tells it what to do.

• Informally: “An algorithm is a set of steps that define how a task is performed.”

• Formally: “An algorithm is an ordered set of unambiguous executable steps, defining a terminating process.”• Ordered set of steps: structure!

• Executable steps: doable!

• Unambiguous steps: follow the directions!

• Terminating: must have an end!

GOOD VS. BAD ALGORITHMS

• All algorithms will have input, perform a process, and produce output.

• A good algorithm should be:• Simple - relative

• Complete – account for all inputs & cases

• Correct (Right)

• should have appropriate levels of Abstraction. – grouping steps into a single module

• Precise

• Mnemonic - SCRAP

SIMPLICITY

• Simple can be defined as having no unnecessary steps and no unnecessary complexity. (You may lose points if your algorithm contains unnecessary steps)

• Each step of a well developed algorithm should carry out one logical step of the process.• Avoid something like: “Take 2nd right after you exit at King Street”

IT HAS LEVELS OF ABSTRACTION.

• Example: Add all the scores then divide the sum by the number of students to get the average.

PRECISION

• Precision means that there is only one way to interpret the instruction. Unambiguous

• Words like “maybe”, “sometimes” and “occasionally” have no business in a well developed algorithm.

• Instead of “maybe”, we can specify the exact circumstances in which an action will be carried out.

ALGORITHM AS TOOL• It can be viewed as tool for solving “Computational Problem”

• The algorithm describes a specific Computational Procedure for achieving that relationship between Input and Output.

• Input<32,22,45,66,12,44> sorting algorithm returns output<12,22,32,44,45,66>

• Input instance (Satisfying constraints , compute solution)

• Correct Algorithm provides correct Output

OTHER ALGORITHM ATTRIBUTES

• A good algorithm should be correct.

• A good algorithm should be complete.

• “To be correct, an algorithm must produce results that are correct and complete given any and all sets of appropriate data.”

• And to be correct, an algorithm must proceed through to a conclusion.

IMPORTANT PROPERTIES OF ALGORITHMS / (CRITERION FOR ANALYZING ALGORITHMS)

• Correct• always returns the desired output for all legal instances

of the problem.• Unambiguous• Precise• Efficient• Can be measured in terms of• Running Time• Memory Space

• Sometimes tends to be more important

PROBLEM SOLVED BY ALGORITHMS• The Human Genes Project(HGP); sorting info in database,

developing tools for analyzing data).enabling Scientists to accomplish tasks efficiently.

• Manipulating and managing large volume of data on internet sites with Clever algorithms.

• Numerical algorithms and number theory is helping E-Commerce to ensure the privacy of personal info.

• Manufacturing and commercial enterprises use algorithms. For example politician, oil company, airline.

• Model of Road map(shortest path)

• Mechanical designs

ASSIGNMENT # 1

• Write an algorithm to call your friend.

• Give a real world example that requires Sorting for its solution?

• Write an algorithm for searching ‘Algorithm’s text book’ from Library?

• How does one get to see the film “THREE IDIOTS” in cinema?

GOOD LUCK ! ☻