FUNDAMENTALS OF ALGORITHMS MCS 2 LECTURE 1 PREREQUISITES

  • Slides: 21
Download presentation
FUNDAMENTALS OF ALGORITHMS MCS - 2 LECTURE # 1

FUNDAMENTALS OF ALGORITHMS MCS - 2 LECTURE # 1

PREREQUISITES • Data Structures • Discrete Mathematics

PREREQUISITES • Data Structures • Discrete Mathematics

COURSE RESOURCES Compulsory Reading Material • Introduction to Algorithms by Thomas H. Cormen, Charles

COURSE RESOURCES Compulsory Reading Material • Introduction to Algorithms by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest & Clifford Stein (3 rd 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

THE ROLE OF ALGORITHMS IN COMPUTING

PROBLEM SOLVING • Programming is a process of problem solving • Problem solving techniques

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

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

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

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 •

APPLICATION OF ALGORITHM IN COMP. SCIENCE AREAS • Compiler construction • Operating system • Databases • AI • Graphics • Networking

ALGORITHM & PROGRAMMING • The idea behind the computer program • It is a

ALGORITHM & PROGRAMMING • 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

WHAT IS AN ALGORITHM? (CONT’D) • Before a computer can perform a task, it

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

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

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 2 nd right after you exit at King Street”

IT HAS LEVELS OF ABSTRACTION. • Example: Add all the scores then divide the

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.

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”

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

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.

 • Correct IMPORTANT PROPERTIES OF ALGORITHMS / (CRITERION FOR ANALYZING ALGORITHMS) • always

• Correct IMPORTANT PROPERTIES OF ALGORITHMS / (CRITERION FOR ANALYZING ALGORITHMS) • 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

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

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 ! ☻

GOOD LUCK ! ☻