1 Algorithms Analysis and Design Lecture 1 Prepared by ZARA
2 Major objective of this course is: ● Design and analysis of modern algorithms ● Different variants ● Accuracy ● Efficiency ● Comparing efficiencies ● Motivation thinking new algorithms ● Advanced designing techniques ● Real world problems will be taken as examples ● To create feelings about usefulness of this course Objective of This Course
3 On successful completion, students will be able to ● Argue and prove correctness of algorithms ● Derive and solve mathematical models of problems ● Reasoning when an algorithm calls certain approach ● Analyze average and worst-case running times ● Integrating approaches in dynamic and greedy algos. ● Use of graph theory in problems solving ● Advanced topics such as • Computational geometry, number theory etc. ● Several other algorithms such as • String matching, NP completeness, approximate algorithms etc. Expected Results
4 Lecture No 1 Introduction (What, Why and Where Algorithms . . .)
5 In this lecture we will cover the following ● What is Algorithm? ● Designing Techniques ● Model of Computation ● Algorithms as a technology ● Algorithms and other technologies ● Importance of algorithms ● Difference in Users and Developers ● Kinds of problems solved by algorithms ● Conclusion Today Covered
6 ● A computer algorithm is a detailed step-by-step method for solving a problem by using a computer. ● An algorithm is a sequence of unambiguous instructions for solving a problem in a finite amount of time. ● An Algorithm is well defined computational procedure that takes some value, or set of values, as input and produces some value, or set of values as output. ● More generally, an Algorithm is any well defined computational procedure that takes collection of elements as input and produces a collection of elements as output. Algorithm Input output What is Algorithm?
7 ● Most basic and popular algorithms are ■ Sorting algorithms ■ Searching algorithms Which algorithm is best? ● Mainly, it depends upon various factors, for example in case of sorting ■ The number of items to be sorted ■ The extent to which the items are already sorted ■ Possible restrictions on the item values ■ The kind of storage device to be used etc. Popular Algorithms, Factors of Dependence
8 Problem ● The statement of the problem specifies, in general terms, the desired input/output relationship. Algorithm ● The algorithm describes a specific computational procedure for achieving input/output relationship. Example ● One might need to sort a sequence of numbers into non- decreasing order. Algorithms ● Various algorithms e.g. merge sort, quick sort, heap sorts etc. One Problem, Many Algorithms
9 ● Brute Force ■ Straightforward, naive approach ■ Mostly expensive ● Divide-and-Conquer ■ Divide into smaller sub-problems ● Iterative Improvement ■ Improve one change at a time ● Decrease-and-Conquer ■ Decrease instance size ● Transform-and-Conquer ■ Modify problem first and then solve it ● Space and Time Tradeoffs ■ Use more space now to save time later Important Designing Techniques
10 ● Greedy Approach ■ Locally optimal decisions, can not change once made. ■ Efficient ■ Easy to implement ■ The solution is expected to be optimal ■ Every problem may not have greedy solution ● Dynamic programming ■ Decompose into sub-problems like divide and conquer ■ Sub-problems are dependant ■ Record results of smaller sub-problems ■ Re-use it for further occurrence ■ Mostly reduces complexity exponential to polynomial Some of the Important Designing Techniques
11 ● Analysis ■ How does system work? ■ Breaking a system down to known components ■ How components (processes) relate to each other ■ Breaking a process down to known functions ● Synthesis ■ Building tools ■ Building functions with supporting tools ■ Composing functions to form a process ■ How components should be put together? ■ Final solution Problem Solving Phases
12 ● Problem ● Strategy ● Algorithm ■ Input ■ Output ■ Steps ● Analysis ■ Correctness ■ Time & Space ■ Optimality ● Implementation ● Verification Problem Solving Process
13 ● Design assumption ■ Level of abstraction which meets our requirements ■ Neither more nor less e.g. [0, 1] infinite continuous interval ● Analysis independent of the variations in ■ Machine ■ Operating system ■ Programming languages ■ Compiler etc. ● Low-level details will not be considered ● Our model will be an abstraction of a standard generic single-processor machine, called a random access machine or RAM. Model of Computation (Assumptions)
14 ● A RAM is assumed to be an idealized machine ■ Infinitely large random-access memory ■ Instructions execute sequentially ● Every instruction is in fact a basic operation on two values in the machines memory which takes unit time. ● These might be characters or integers. ● Example of basic operations include ■ Assigning a value to a variable ■ Arithmetic operation (+, - , × , /) on integers ■ Performing any comparison e.g. a < b ■ Boolean operations ■ Accessing an element of an array. Model of Computation (Assumptions)
15 ● In theoretical analysis, computational complexity ■ Estimated in asymptotic sense, i.e. ■ Estimating for large inputs ● Big O, Omega, Theta etc. notations are used to compute the complexity ● Asymptotic notations are used because different implementations of algorithm may differ in efficiency ● Efficiencies of two given algorithm are related ■ By a constant multiplicative factor ■ Called hidden constant. Model of Computation (Assumptions)
16 First poor assumption ● We assumed that each basic operation takes constant time, i.e. model allows ■ Adding ■ Multiplying ■ Comparing etc. two numbers of any length in constant time ● Addition of two numbers takes a unit time! ■ Not good because numbers may be arbitrarily ● Addition and multiplication both take unit time! ■ Again very bad assumption Drawbacks in Model of Computation
17 Finally what about Our Model? ● But with all these weaknesses, our model is not so bad because we have to give the ■ Comparison not the absolute analysis of any algorithm. ■ We have to deal with large inputs not with the small size ● Model seems to work well describing computational power of modern nonparallel machines Can we do Exact Measure of Efficiency ? ● Exact, not asymptotic, measure of efficiency can be sometimes computed but it usually requires certain assumptions concerning implementation Model of Computation not so Bad
18 ● Analysis will be performed with respect to this computational model for comparison of algorithms ● We will give asymptotic analysis not detailed comparison i.e. for large inputs ● We will use generic uniprocessor random-access machine (RAM) in analysis ■ All memory equally expensive to access ■ No concurrent operations ■ All reasonable instructions take unit time, except, of course, function calls Summary : Computational Model
19 Algorithm As a Technology ● Efficiency: ● – Different algorithms solve the same problem often differ noticeably in their efficiency ● – These differences can be much more significant than difference due to hardware and software ● For example, insertion sort takes time roughly equal to c1n 2 (c1 is constant) to sort n items. But, merge sort takes time roughly equal to c2nlg n (c2 is constant)
20 Algorithm As a Technology ● Algorithms as a technology • For example, assume a faster computer A (1010 instructions/sec) running insertion sort against a slower computer B (107 instructions/sec) running merge sort. • Suppose that c1=2, c2=50 and n = 107 . • the execution time of computer A is 2(107 ) 2 / 1010 instructions/sec = 20,000 seconds • the execution time of computer B is 50 · 107 lg 107 / 107 instructions/sec = 1,163 seconds
21 ● What, Why and Where Algorithms? ● Designing Techniques ● Problem solving Phases and Procedure ● Model of computations ■ Major assumptions at design and analysis level ■ Merits and demerits, justification of assumptions taken ● We proved that algorithm is a technology ● Compared algorithmic technology with others ● Discussed importance of algorithms ■ In almost all areas of computer science and engineering ■ Algorithms make difference in users and developers Conclusion

Lecture01 algorithm analysis

  • 1.
    1 Algorithms Analysis andDesign Lecture 1 Prepared by ZARA
  • 2.
    2 Major objective ofthis course is: ● Design and analysis of modern algorithms ● Different variants ● Accuracy ● Efficiency ● Comparing efficiencies ● Motivation thinking new algorithms ● Advanced designing techniques ● Real world problems will be taken as examples ● To create feelings about usefulness of this course Objective of This Course
  • 3.
    3 On successful completion,students will be able to ● Argue and prove correctness of algorithms ● Derive and solve mathematical models of problems ● Reasoning when an algorithm calls certain approach ● Analyze average and worst-case running times ● Integrating approaches in dynamic and greedy algos. ● Use of graph theory in problems solving ● Advanced topics such as • Computational geometry, number theory etc. ● Several other algorithms such as • String matching, NP completeness, approximate algorithms etc. Expected Results
  • 4.
    4 Lecture No 1 Introduction (What,Why and Where Algorithms . . .)
  • 5.
    5 In this lecturewe will cover the following ● What is Algorithm? ● Designing Techniques ● Model of Computation ● Algorithms as a technology ● Algorithms and other technologies ● Importance of algorithms ● Difference in Users and Developers ● Kinds of problems solved by algorithms ● Conclusion Today Covered
  • 6.
    6 ● A computeralgorithm is a detailed step-by-step method for solving a problem by using a computer. ● An algorithm is a sequence of unambiguous instructions for solving a problem in a finite amount of time. ● An Algorithm is well defined computational procedure that takes some value, or set of values, as input and produces some value, or set of values as output. ● More generally, an Algorithm is any well defined computational procedure that takes collection of elements as input and produces a collection of elements as output. Algorithm Input output What is Algorithm?
  • 7.
    7 ● Most basicand popular algorithms are ■ Sorting algorithms ■ Searching algorithms Which algorithm is best? ● Mainly, it depends upon various factors, for example in case of sorting ■ The number of items to be sorted ■ The extent to which the items are already sorted ■ Possible restrictions on the item values ■ The kind of storage device to be used etc. Popular Algorithms, Factors of Dependence
  • 8.
    8 Problem ● The statementof the problem specifies, in general terms, the desired input/output relationship. Algorithm ● The algorithm describes a specific computational procedure for achieving input/output relationship. Example ● One might need to sort a sequence of numbers into non- decreasing order. Algorithms ● Various algorithms e.g. merge sort, quick sort, heap sorts etc. One Problem, Many Algorithms
  • 9.
    9 ● Brute Force ■Straightforward, naive approach ■ Mostly expensive ● Divide-and-Conquer ■ Divide into smaller sub-problems ● Iterative Improvement ■ Improve one change at a time ● Decrease-and-Conquer ■ Decrease instance size ● Transform-and-Conquer ■ Modify problem first and then solve it ● Space and Time Tradeoffs ■ Use more space now to save time later Important Designing Techniques
  • 10.
    10 ● Greedy Approach ■Locally optimal decisions, can not change once made. ■ Efficient ■ Easy to implement ■ The solution is expected to be optimal ■ Every problem may not have greedy solution ● Dynamic programming ■ Decompose into sub-problems like divide and conquer ■ Sub-problems are dependant ■ Record results of smaller sub-problems ■ Re-use it for further occurrence ■ Mostly reduces complexity exponential to polynomial Some of the Important Designing Techniques
  • 11.
    11 ● Analysis ■ Howdoes system work? ■ Breaking a system down to known components ■ How components (processes) relate to each other ■ Breaking a process down to known functions ● Synthesis ■ Building tools ■ Building functions with supporting tools ■ Composing functions to form a process ■ How components should be put together? ■ Final solution Problem Solving Phases
  • 12.
    12 ● Problem ● Strategy ●Algorithm ■ Input ■ Output ■ Steps ● Analysis ■ Correctness ■ Time & Space ■ Optimality ● Implementation ● Verification Problem Solving Process
  • 13.
    13 ● Design assumption ■Level of abstraction which meets our requirements ■ Neither more nor less e.g. [0, 1] infinite continuous interval ● Analysis independent of the variations in ■ Machine ■ Operating system ■ Programming languages ■ Compiler etc. ● Low-level details will not be considered ● Our model will be an abstraction of a standard generic single-processor machine, called a random access machine or RAM. Model of Computation (Assumptions)
  • 14.
    14 ● A RAMis assumed to be an idealized machine ■ Infinitely large random-access memory ■ Instructions execute sequentially ● Every instruction is in fact a basic operation on two values in the machines memory which takes unit time. ● These might be characters or integers. ● Example of basic operations include ■ Assigning a value to a variable ■ Arithmetic operation (+, - , × , /) on integers ■ Performing any comparison e.g. a < b ■ Boolean operations ■ Accessing an element of an array. Model of Computation (Assumptions)
  • 15.
    15 ● In theoreticalanalysis, computational complexity ■ Estimated in asymptotic sense, i.e. ■ Estimating for large inputs ● Big O, Omega, Theta etc. notations are used to compute the complexity ● Asymptotic notations are used because different implementations of algorithm may differ in efficiency ● Efficiencies of two given algorithm are related ■ By a constant multiplicative factor ■ Called hidden constant. Model of Computation (Assumptions)
  • 16.
    16 First poor assumption ●We assumed that each basic operation takes constant time, i.e. model allows ■ Adding ■ Multiplying ■ Comparing etc. two numbers of any length in constant time ● Addition of two numbers takes a unit time! ■ Not good because numbers may be arbitrarily ● Addition and multiplication both take unit time! ■ Again very bad assumption Drawbacks in Model of Computation
  • 17.
    17 Finally what aboutOur Model? ● But with all these weaknesses, our model is not so bad because we have to give the ■ Comparison not the absolute analysis of any algorithm. ■ We have to deal with large inputs not with the small size ● Model seems to work well describing computational power of modern nonparallel machines Can we do Exact Measure of Efficiency ? ● Exact, not asymptotic, measure of efficiency can be sometimes computed but it usually requires certain assumptions concerning implementation Model of Computation not so Bad
  • 18.
    18 ● Analysis willbe performed with respect to this computational model for comparison of algorithms ● We will give asymptotic analysis not detailed comparison i.e. for large inputs ● We will use generic uniprocessor random-access machine (RAM) in analysis ■ All memory equally expensive to access ■ No concurrent operations ■ All reasonable instructions take unit time, except, of course, function calls Summary : Computational Model
  • 19.
    19 Algorithm As aTechnology ● Efficiency: ● – Different algorithms solve the same problem often differ noticeably in their efficiency ● – These differences can be much more significant than difference due to hardware and software ● For example, insertion sort takes time roughly equal to c1n 2 (c1 is constant) to sort n items. But, merge sort takes time roughly equal to c2nlg n (c2 is constant)
  • 20.
    20 Algorithm As aTechnology ● Algorithms as a technology • For example, assume a faster computer A (1010 instructions/sec) running insertion sort against a slower computer B (107 instructions/sec) running merge sort. • Suppose that c1=2, c2=50 and n = 107 . • the execution time of computer A is 2(107 ) 2 / 1010 instructions/sec = 20,000 seconds • the execution time of computer B is 50 · 107 lg 107 / 107 instructions/sec = 1,163 seconds
  • 21.
    21 ● What, Whyand Where Algorithms? ● Designing Techniques ● Problem solving Phases and Procedure ● Model of computations ■ Major assumptions at design and analysis level ■ Merits and demerits, justification of assumptions taken ● We proved that algorithm is a technology ● Compared algorithmic technology with others ● Discussed importance of algorithms ■ In almost all areas of computer science and engineering ■ Algorithms make difference in users and developers Conclusion