Contents

## Copyright © 2007 Pearson Addison-Wesley. All rights reserved. Chapter 1 Introduc

Spann, James, Meteorologist has reference to this Academic Journal, PHwiki organized this Journal Copyright © 2007 Pearson Addison-Wesley. All rights reserved. Chapter 1 Introduction What is an algorithm An algorithm is a sequence of unambiguous instructions as long as solving a problem, i.e., as long as obtaining a required output as long as any legitimate input in a finite amount of time. computer problem algorithm input output Algorithm An algorithm is a sequence of unambiguous instructions as long as solving a problem, i.e., as long as obtaining a required output as long as any legitimate input in a finite amount of time. Can be represented various as long as ms Unambiguity/clearness Effectiveness Finiteness/termination Correctness

This Particular University is Related to this Particular Journal

Historical Perspective Euclids algorithm as long as finding the greatest common divisor Muhammad ibn Musa al-Khwarizmi 9th century mathematician www.lib.virginia.edu/science/parshall/khwariz.html Notion of algorithm in addition to problem computer algorithmic solution (different from a conventional solution) problem algorithm input (or instance) output Example of computational problem: sorting Statement of problem: Input: A sequence of n numbers

Selection Sort Input: array a[1], ,a[n] Output: array a sorted in non-decreasing order Algorithm: as long as i=1 to n swap a[i] with smallest of a[i], ,a[n] Is this unambiguous Effective See also pseudocode, section 3.1 Some Well-known Computational Problems Sorting Searching Shortest paths in a graph Minimum spanning tree Primality testing Traveling salesman problem Knapsack problem Chess Towers of Hanoi Program termination Some of these problems dont have efficient algorithms, or algorithms at all! Basic Issues Related to Algorithms How to design algorithms How to express algorithms Proving correctness Efficiency (or complexity) analysis Theoretical analysis Empirical analysis Optimality

Algorithm design strategies Brute as long as ce Divide in addition to conquer Decrease in addition to conquer Trans as long as m in addition to conquer Greedy approach Dynamic programming Backtracking in addition to branch- in addition to -bound Space in addition to time tradeoffs Analysis of Algorithms How good is the algorithm Correctness Time efficiency Space efficiency Does there exist a better algorithm Lower bounds Optimality What is an algorithm Recipe, process, method, technique, procedure, routine, with the following requirements: Finiteness terminates after a finite number of steps Definiteness rigorously in addition to unambiguously specified Clearly specified input valid inputs are clearly specified Clearly specified/expected output can be proved to produce the correct output given a valid input Effectiveness steps are sufficiently simple in addition to basic

Why study algorithms Theoretical importance the core of computer science Practical importance A practitioners toolkit of known algorithms Framework as long as designing in addition to analyzing algorithms as long as new problems Example: Googles PageRank Technology Euclids Algorithm Problem: Find gcd(m,n), the greatest common divisor of two nonnegative, not both zero integers m in addition to n Examples: gcd(60,24) = 12, gcd(60,0) = 60, gcd(0,0) = Euclids algorithm is based on repeated application of equality gcd(m,n) = gcd(n, m mod n) until the second number becomes 0, which makes the problem trivial. Example: gcd(60,24) = gcd(24,12) = gcd(12,0) = 12 Two descriptions of Euclids algorithm Step 1 If n = 0, return m in addition to stop; otherwise go to Step 2 Step 2 Divide m by n in addition to assign the value of the remainder to r Step 3 Assign the value of n to m in addition to the value of r to n. Go to Step 1. while n 0 do r m mod n m n n r return m

Other methods as long as computing gcd(m,n) Consecutive integer checking algorithm Step 1 Assign the value of min{m,n} to t Step 2 Divide m by t. If the remainder is 0, go to Step 3; otherwise, go to Step 4 Step 3 Divide n by t. If the remainder is 0, return t in addition to stop; otherwise, go to Step 4 Step 4 Decrease t by 1 in addition to go to Step 2 Is this slower than Euclids algorithm How much slower O(n), if n <= m , vs O(log n) Other methods as long as gcd(m,n) [cont.] Middle-school procedure Step 1 Find the prime factorization of m Step 2 Find the prime factorization of n Step 3 Find all the common prime factors Step 4 Compute the product of all the common prime factors in addition to return it as gcd(m,n) Is this an algorithm How efficient is it Time complexity: O(sqrt(n)) Sieve of Eratosthenes Input: Integer n 2 Output: List of primes less than or equal to n as long as p 2 to n do A[p] p as long as p 2 to n do if A[p] 0 //p hasnt been previously eliminated from the list j p p while j n do A[j] 0 //mark element as eliminated j j + p Example: 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Time complexity: O(n)
Two main issues related to algorithms How to design algorithms How to analyze algorithm efficiency Algorithm design techniques/strategies Brute as long as ce Divide in addition to conquer Decrease in addition to conquer Trans as long as m in addition to conquer Space in addition to time tradeoffs Greedy approach Dynamic programming Iterative improvement Backtracking Branch in addition to bound Analysis of algorithms How good is the algorithm time efficiency space efficiency correctness ignored in this course Does there exist a better algorithm lower bounds optimality
Important problem types sorting searching string processing graph problems combinatorial problems geometric problems numerical problems Sorting (I) Rearrange the items of a given list in ascending order. Input: A sequence of n numbers

Selection Sort Algorithm SelectionSort(A[0 n-1]) //The algorithm sorts a given array by selection sort //Input: An array A[0 n-1] of orderable elements //Output: Array A[0 n-1] sorted in ascending order as long as i 0 to n 2 do min i as long as j i + 1 to n 1 do if A[j] < A[min] min j swap A[i] in addition to A[min] Searching Find a given value, called a search key, in a given set. Examples of searching algorithms Sequential search Binary search Input: sorted array a-i < < a-j in addition to key x; m (i+j)/2; while i < j in addition to x != a-m do if x < a-m then j m-1 else i m+1; if x = a-m then output a-m; Time: O(log n) String Processing A string is a sequence of characters from an alphabet. Text strings: letters, numbers, in addition to special characters. String matching: searching as long as a given word/pattern in a text. Examples: searching as long as a word or phrase on WWW or in a Word document searching as long as a short read in the reference genomic sequence Graph Problems In as long as mal definition A graph is a collection of points called vertices, some of which are connected by line segments called edges. Modeling real-life problems Modeling WWW Communication networks Project scheduling Examples of graph algorithms Graph traversal algorithms Shortest-path algorithms Topological sorting Fundamental data structures list array linked list string stack queue priority queue/heap graph tree in addition to binary tree set in addition to dictionary Linear Data Structures Arrays A sequence of n items of the same data type that are stored contiguously in computer memory in addition to made accessible by specifying a value of the arrays index. Linked List A sequence of zero or more nodes each containing two kinds of in as long as mation: some data in addition to one or more links called pointers to other nodes of the linked list. Singly linked list (next pointer) Doubly linked list (next + previous pointers) Arrays fixed length (need preliminary reservation of memory) contiguous memory locations direct access Insert/delete Linked Lists dynamic length arbitrary memory locations access by following links Insert/delete Rooted Trees (II) Depth of a vertex The length of the simple path from the root to the vertex. Height of a tree The length of the longest simple path from the root to a leaf. Ordered Trees Ordered trees An ordered tree is a rooted tree in which all the children of each vertex are ordered. Binary trees A binary tree is an ordered tree in which every vertex has no more than two children in addition to each children is designated s either a left child or a right child of its parent. Binary search trees Each vertex is assigned a number. A number assigned to each parental vertex is larger than all the numbers in its left subtree in addition to smaller than all the numbers in its right subtree. log2n h n 1, where h is the height of a binary tree in addition to n the size.

## Spann, James Meteorologist

Spann, James is from United States and they belong to WCFT-TV and they are from Birmingham, United States got related to this Particular Journal. and Spann, James deal with the subjects like Meteorology

## Journal Ratings by Institut des Sciences de la Matire et du Rayonnement

This Particular Journal got reviewed and rated by Institut des Sciences de la Matire et du Rayonnement and short form of this particular Institution is FR and gave this Journal an Excellent Rating.