--Your friends at LectureNotes

Note for Design And Analysis Of Algorithm - DAA By JNTU Heroes

  • Design And Analysis Of Algorithm - DAA
  • Note
  • Jawaharlal Nehru Technological University Anantapur (JNTU) College of Engineering (CEP), Pulivendula, Pulivendula, Andhra Pradesh, India - JNTUACEP
  • Computer Science Engineering
  • 9 Topics
  • 614 Offline Downloads
  • Uploaded 1 year ago
Jntu Heroes
Jntu Heroes
0 User(s)
Download PDFOrder Printed Copy

Share it with your friends

Leave your Comments

Text from page-2

CONTENTS CHAPTER 1 BASIC CONCEPTS Algorithm Performance of Programs Algorithm Design Goals Classification of Algorithms Complexity of Algorithms Rate of Growth Analyzing Algorithms The Rule of Sums The Rule of products The Running time of Programs Measuring the running time of programs Asymptotic Analyzing of Algorithms Calculating the running time of programs General rules for the analysis of programs CHAPTER 2 Advanced Data Structures and Recurrence Relations Priority Queue, Heap and Heap sort Heap Sort 2.3 Priority Queue implementation using heap tree Binary Search trees Balanced Trees Dictionary Disjoint Set Operations Recurrence Relations – Iterative Substitution Method Recursion Tree The Guess-and test The Master Theorem Method Cold Form expression Solving Recurrence relations CHAPTER 3 Divide And Conquer General Method Control Abstraction of Divide and Conquer Binary Search External and Internal path length Merge Sort Strassen’s Matrix Multiplication Quick Sort Straight Insertion Sort CHAPTER 4 Greedy Method 4.1 General Method Control Abstraction Knapsack Problem Optimal Storage on Tapes Job Sequencing with deadlines Optimal Merge Patterns Huffman Codes I

Text from page-3

Graph Algorithms CHAPTER 5 Dynamic programming Multi Storage graphs All Pairs Shortest paths Traveling Sales Person problem Optimal Binary Search Tree 0/1 Knapsack Reliability design CHAPTER 6 Basic Traversal and Search Techniques Techniques for traversal of Binary tree Techniques for graphs Representation of Graph and Digraphs Depth First and Breadth First Spanning trees Articulation Points and bi-connected components Articulation points by Depth First Search Game planning Alpha-Beta pruning AND/OR Graphs CHAPTER 7 Backtracking General method Terminology N-Queens problem Sum of Subsets Graph Coloring( for planar graphs) Hamiltonian Cycles 0/1 Knapsack Traveling Sales Person using Backtracking CHAPTER 8 Branch and Bound General method Least Cost (LC) Search Control Abstraction for LC-Search Bounding The 15-Puzzle problem LC Search for 15-Puzzle Problem Job Sequencing with deadlines Traveling Sales Person problem 0/1 Knapsack II

Text from page-4

Chapter 1 Basic Concepts Algorithm An Algorithm is a finite sequence of instructions, each of which has a clear meaning and can be performed with a finite amount of effort in a finite length of time. No matter what the input values may be, an algorithm terminates after executing a finite number of instructions. In addition every algorithm must satisfy the following criteria: Input: there are zero or more quantities, which are externally supplied; Output: at least one quantity is produced; Definiteness: each instruction must be clear and unambiguous; Finiteness: if we trace out the instructions of an algorithm, then for all cases the algorithm will terminate after a finite number of steps; Effectiveness: every instruction must be sufficiently basic that it can in principle be carried out by a person using only pencil and paper. It is not enough that each operation be definite, but it must also be feasible. In formal computer science, one distinguishes between an algorithm, and a program. A program does not necessarily satisfy the fourth condition. One important example of such a program for a computer is its operating system, which never terminates (except for system crashes) but continues in a wait loop until more jobs are entered. We represent algorithm using a pseudo language that is a combination of the constructs of a programming language together with informal English statements. Performance of a program: The performance of a program is the amount of computer memory and time needed to run a program. We use two approaches to determine the performance of a program. One is analytical, and the other experimental. In performance analysis we use analytical methods, while in performance measurement we conduct experiments. Time Complexity: The time needed by an algorithm expressed as a function of the size of a problem is called the time complexity of the algorithm. The time complexity of a program is the amount of computer time it needs to run to completion. The limiting behavior of the complexity as size increases is called the asymptotic time complexity. It is the asymptotic complexity of an algorithm, which ultimately determines the size of problems that can be solved by the algorithm. 1

Text from page-5

Space Complexity: The space complexity of a program is the amount of memory it needs to run to completion. The space need by a program has the following components: Instruction space: Instruction space is the space needed to store the compiled version of the program instructions. Data space: Data space is the space needed to store all constant and variable values. Data space has two components:   Space needed by constants and simple variables in program. Space needed by dynamically allocated objects such as arrays and class instances. Environment stack space: The environment stack is used to save information needed to resume execution of partially completed functions. Instruction Space: The amount of instructions space that is needed depends on factors such as:  The compiler used to complete the program into machine code.  The compiler options in effect at the time of compilation  The target computer. Algorithm Design Goals The three basic design goals that one should strive for in a program are: 1. 2. 3. Try to save Time Try to save Space Try to save Face A program that runs faster is a better program, so saving time is an obvious goal. Like wise, a program that saves space over a competing program is considered desirable. We want to “save face” by preventing the program from locking up or generating reams of garbled data. Classification of Algorithms If ‘n’ is the number of data items to be processed or degree of polynomial or the size of the file to be sorted or searched or the number of nodes in a graph etc. 1 Next instructions of most programs are executed once or at most only a few times. If all the instructions of a program have this property, we say that its running time is a constant. Log n When the running time of a program is logarithmic, the program gets slightly slower as n grows. This running time commonly occurs in programs that solve a big problem by transforming it into a smaller problem, cutting the size by some constant fraction., When n is a million, log n is a doubled. Whenever n doubles, log n increases by a constant, but log n does not double until n increases to n2. 2

Lecture Notes