240 likes | 255 Views
Introduction To Algorithm and Data Structures Course Teacher: Moona Kanwal. -Algorithm Design -Algorithm Analysis -Data structures -Abstract Data Type. Program Design. WHAT the program must do and not HOW to do Abstraction:
E N D
Introduction To Algorithm and Data Structures Course Teacher: Moona Kanwal -Algorithm Design -Algorithm Analysis -Data structures -Abstract Data Type
Program Design • WHAT the program must do and not HOW to do • Abstraction: • A model of a complex system that includes only the details essential to the perspective of the viewer of the system • Information Hiding • The practice of hiding the details of a function or data structure with the goal of controlling access to the details of module or structure
Program Design • Functional Decomposition • Method for designing software • Top-down design • Divide the problem in to modules .. • Divide –and-conquer till we reach a level that can easily be translated into algorithm • The hierarchy of task is controlled by main function or program
Introduction • An algorithm is a set of rules for carrying out calculation either by hand or on a machine • An algorithm is a finite step-by-step procedure to achieve a required result • An algorithm is a sequence of computational steps that transform the input into the output. • An algorithm is a sequence of operations performed on data that have to be organized in data structures. • An algorithm is an abstraction of a program to be executed on a physical machine (model of Computation).
The Classic Multiplication Algorithm • Multiplication, the American way • Multiply the multiplicand one after another by each digit of the multiplier taken from right to left.
Multiplication Problem • Multiplication, the English way: • Multiply the multiplicand one after another by each digit of the multiplier taken from left to right.
Algorithm Design • Algorithmic is a branch of computer science that consists of designing and analyzing computer algorithms • The “design” pertain to • The description of algorithm at an abstract level by means of a pseudo language, and • Proof of correctness that is, the algorithm solves the given problem in all cases. • The “analysis” deals with performance evaluation (complexity analysis).
Algorithm Performance Analysis • Does the program efficiently use primary and secondary storage? • Is the program running time acceptable for the task? • Space Complexity • The space complexity of a program is the measure of the amount of memory that it needs to run to completion • Time complexity • The Time complexity of a program is the measure of the amount of computer time it needs to run to completion
Performance Estimation • How to determine which algorithm is better? • We need some mechanism to predict the performance with out actually executing the program • Mechanism should be independent of the compiler and underlying hardware
Algorithm Analysis • The complexity of an algorithm is a function g(n) that gives bound of the number of operation (or running time) performed by an algorithm when the input size is n • There are two interpretations of bound. • Worst-case Complexity • The running time for any given size input will be lower than the upper bound except possibly for some values of the input where the maximum is reached. Big O is used to calculate the worst case complexity for an algorithm • Average-case Complexity • The running time for any given size input will be the average number of operations over all problem instances for a given size • Best-case complexity • The best case of the algorithm is the function is defined by the minimum number of steps taken on any instance of size n.
Big-Oh(O) • Determining the exact step count of the program can be very difficult task • Because of the in exactness of the definition of the step, exact step count is not very useful for comparative purposes • E.g. which one is better • 45n+3 or 100n+10 • We use some asymptotic notation for measure of growth
Some useful Big-O estimates • O(1): constant • O(log(n)): Logarithm • O(n): Linear • O(nlog(n)): Log Linear • O(n2): Quadratic • O(n3):cubic • O(2n):exponential
Example: find max element of an array AlgorithmarrayMax(A, n) Inputarray A of n integers Outputmaximum element of A currentMax:=A[0] fori:=1ton 1do ifA[i] currentMaxthen currentMax:=A[i] End if End for returncurrentMax Pseudocode • High-level description of an algorithm • More structured than English prose • Less detailed than a program • Preferred notation for describing algorithms • Hides program design issues
Control flow if…then… [else…] while…do… repeat…until… for…do… Indentation replaces braces Method declaration Algorithm method (arg [, arg…]) Input… Output… Method call var.method (arg [, arg…]) Return value returnexpression Expressions Assignment(like in Java) Equality testing(like in Java) n2 Superscripts and other mathematical formatting allowed Pseudocode Details
Psuedocode-Another Example CheckInBook(library, book, fineSlip) Function: Checks in a book Input: A Record of library, A book as String, Output: fineSlip as String, updated record of library precondition: book was checked out of this library, book is presented atthe check-in- desk postcondition: fineSlip is issued if the book is overdue, contents of the library are the original contents +book
Algorithm: 1. Examine due date to see whether the book is late 2. if the book is late a. calculate fine b. Issue fineSlip 3. Update library records to show that the book has been returned 4. check reserve list to see if someone is waiting for the book 5. If book is on reserve list a. put the book on the reserve shelf 6. Else a. Replace the book on the proper shelf, according to the library shelf arrangement scheme
Abstraction vs Implemention • x (01000001)2 • If X is Character then x ‘A’ • If X is integer then x 65
Abstraction vs. Implementation 1 6 5 3 4 2 7 8 7 5 10 9 3 5 8 1 User’s view (abstraction) 1 5 3 6 7 8 5 7 9 10 3 5 1 2 4 8 System’s view (Implementation)
Data structures • The primary objective of programming is to efficiently process the input to generate the desired output • We can achieve this objective in an efficient and neat style if the input data is organized in a way to help us meet our goal • Data structures is nothing but ways and means of organizing data so that it can be processed easily and efficiently • Data structure dictate the manner in which the data can be processed. In other words the choice of an algorithm depends upon the underlying data organization
Data Structures Data/Info Operations (Manipulated By) (Implemented By) (Implemented By) Memory Variables Functions Are of Basic Data Types Composite Data Types Abstract Data Types Built In Functions User Defined Functions
BASIC DATA TYPES • Characters & character strings, integers, real nos, logical (bool). • Basic DT's usually implemented in h/w • These are native to the machines hardware, in most computers
COMPOSITE DATA TYPES • Structures that are made up of simpler data structures that exist in the language are 'composite' or 'structured' data types. For e.g. arrays, structures and unions.
Data Abstraction and Abstract Data Types (ADT) • A data type is a template for objects and a set of operations that define the behavior of the objects ( or Instances) of that type. • An abstract Data Type (ADT) is a data type in which the implementation details are hidden and the user is concerned with the properties ( or behavior) of that type. • An ADT has two components: - Interface (the behavior) - Implementation • Example: - int, float
Abstract Data Type • The data structures used to implement the data type can only be accessed through the interface. • Any change in the implementation does not change the user programs as long as the interface remains the same • This is also known as the data encapsulation or data abstraction. Implementation Interface 2 Interface 1 Implementation Interface 3 Interface 4