610 likes | 763 Views
Introduction to Algorithms . Rabie A. Ramadan rabie@rabieramadan.org http://www. rabieramadan.org. Some of the sides are exported from different sources to clarify the topic . About my self . Rabie A. Ramadan My website and publications http://www.rabieramadan.org. Class Rules.
E N D
Introduction to Algorithms Rabie A. Ramadan rabie@rabieramadan.org http://www. rabieramadan.org Some of the sides are exported from different sources to clarify the topic
About my self Rabie A. Ramadan My website and publications http://www.rabieramadan.org
ClassRules Attendance is a vey important Assignments must be delivered on time All assignments are individual assignments unless it is clearly stated that you can work on groups. Assignments or part of them that are copied (including the programming assignments) will be punished by -2 assignments.
ClassRules You can bring anything to drink but NO FOOD PLEASE When you come in , DO NOT knock on the door as well as when you leave I do not take attendance every class but if you miss one , it might greatly affect your grade
ClassRules Projects There will be a term project (An Efficient Website for Vehicle and Driver Scheduling Based Public Transportation Using Java ) The details of the project will be announced on the class website http://rabieramadan.org/classes/2013/algorithms/ Only 4 or less students per group Please no exception at all.
Text Book Introduction to the Design and Analysis of Algorithms, 2nd edition, 2007 by A. Levitin. Other sources Books Research papers …
What is an algorithm? An algorithm is a sequence of unambiguous instructions for solving a problem, i.e., for obtaining a required output for any legitimate input in a finite amount of time. problem algorithm “computer” input output
What is an algorithm? Procedure for getting answers to a specific problem Problem solving strategy even if computers are not involved Scope is limited I can not have a procedure for you to have very happy life or becoming rich and famous
Notion/Concept of algorithm and problem Nonambiguity for each step Range of inputs is specified carefully The same algorithm can be represented in several ways Several algorithms for the same problem may exist Several algorithms with different ideas can solve the same problem with different speed. problem algorithm “computer” input output
Example of computational problem: sorting • Statement of problem: • Input: A sequence of n numbers <a1, a2, …, an> • Output: A reordering of the input sequence <a´1, a´2, …, a´n> so that a´i≤a´j whenever i < j • Instance: The sequence <5, 3, 2, 8, 3> • Algorithms: • Selection sort • Insertion sort • Merge sort • (many others)
Sorting Searching Shortest paths in a graph Minimum spanning tree Primality testing Traveling salesman problem Knapsack problem Chess Towers of Hanoi Some Well-known Computational Problems Some of problems don’t have efficient algorithms, or algorithms at all!
How to design algorithms How to express algorithms Proving correctness Efficiency (or complexity) analysis Theoretical analysis Empirical/ experimental analysis Optimality Basic Issues Related to Algorithms
Brute force Try all possible combinations Divide and conquer breaking down a problem into two or more sub-problems of the same (or related) type, until these become simple enough to be solved directly. Decrease and conquer Change an instance into one smaller instance of the problem. Solve the smaller instance. Convert the solution of the smaller instance into a solution for the larger instance. Algorithm design strategies • Transform and conquer • a simpler instance of the same problem, or • a different representation of the same problem, or • an instance of a different problem • Greedy approach • The problem could be solved in iterations • Dynamic programming • An instance is solved using the solutions for smaller instances. • The solution for a smaller instance might be needed multiple times. • The solutions to smaller instances are stored in a table, so that each smaller instance is solved only once. • Additional space is used to save time. • Backtracking and branch-and-bound
How good is the algorithm? Correctness Time efficiency Space efficiency Does there exist a better algorithm? Lower bounds Optimality Analysis of Algorithms
Recipe, process, method, technique, procedure, routine,… with the following requirements: Finiteness terminates after a finite number of steps Definiteness rigorously and unambiguously specified Clearlyspecifiedinput valid inputs are clearly specified Clearlyspecified/expectedoutput can be proved to produce the correct output given a valid input Effectiveness steps are sufficiently simple and basic What is an algorithm?
Write A pseudo Code for it ? Solution
What is the Worst Case Analysis ? Solution
Suppose now that we do not wish to interview all the candidates in order to find the best one. We also do not wish to hire and fire as we find better and better applicants. Instead, we are willing to settle for a candidate who is close to the best, in exchange for hiring exactly once. Think of a solution ? The on-line hiring problem
We can model this problem in the following way. After meeting an applicant, we are able to give each one a score; let score(i) denote the score we give to the ith applicant, and assume that no two applicants receive the same score. After we have seen j applicants, we know which of the j has the highest score, but we do not know whether any of the remaining nj applicants will receive a higher score. We decide to adopt the strategy of selecting a positive integer k < n, interviewing and then rejecting the first k applicants, and hiring the first applicant thereafter who has a higher score than all preceding applicants. Write a Pseudo Code for it ? Solution
This problem examines algorithms for searching for a value x in an unsorted array A consisting of n elements. Write a Pseudo Code for it? Searching an unsorted array
Write a pseudo Code for it? Which one to pick ? Another Solution
Problem: Find gcd(m,n), the greatest common divisor of two nonnegative, not both zero integers m and n Examples: gcd(60,24) = 12, gcd(60,0) = 60, gcd(0,0) = ? Euclid’s 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 Euclid’s Algorithm
Descriptions of Euclid’s algorithm Step 1 If n = 0, return m and stop; otherwise go to Step 2 Step 2 Divide m by n and assign the value of the remainder to r Step 3 Assign the value of n to m and 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 for 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 and return it as gcd(m,n) E.g. find gcd(60, 24) Step 1: 60 = 2 . 2 . 3 . 5 Step 2: 24 = 2 . 2 . 2 . 3 Step 3: 2 . 2 . 3 Step 4: 2 . 2 . 3 = 12 Is this an algorithm? not qualified how do you get the prime factorization? How do you get common elements in two stored lists?
Sieve of Eratosthenes To find all the prime numbers less than or equal to a given integer n by Eratosthenes' method: Create a list of consecutive integers from two to n: (2, 3, 4, ..., n). Initially, let p equal 2, the first prime number. Strike from the list all multiples of p less than or equal to n. (2p, 3p, 4p, etc.) Find the first number remaining on the list greater than p (this number is the next prime); replace p with this number. Repeat steps 3 and 4 until p2 is greater than n. All the remaining numbers on the list are prime.
Input: Integer n ≥ 2 Output: List of primes less than or equal to n for p ← 2 to n do A[p] ← p for p ← 2 to n do if A[p] 0 //p hasn’t been previously eliminated from the listj ← 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 Sieve of Eratosthenes
Steps of Designing and Analyzing an Algorithm Understand the Problem Decide on the machine to be used (sequential vs. parallel) Design an algorithm: select a specific techniques such as divide and conquer . Also, decide on how do you represent the algorithm for instance pseudocode , flowchart , etc.. Prove correctness may be by example or mathematically Analyze the algorithm for instance in space and time efficiency
Sorting Searching String processing Graph problems Combinatorial problems Geometric problems Numerical problems Important Problem Types
Rearrange the items of a given list in ascending order. Input: A sequence of n numbers <a1, a2, …, an> Output: A reordering <a´1, a´2, …, a´n> of the input sequence such that a´1≤ a´2 ≤ … ≤a´n. Why sorting? Help searching Algorithms often use sorting as a key subroutine. Sorting key A specially chosen piece of information used to guide sorting. E.g., sort student records by names. Sorting (I)
Examples of sorting algorithms Selection sort Bubble sort Insertion sort Merge sort ….. Evaluate sorting algorithm complexity: the number of key comparisons. Two properties Stability: A sorting algorithm is called stable if it preserves the relative order of any two equal elements in its input. In place: A sorting algorithm is in place if it does not require extra memory, except, possibly for a few memory units. Sorting (II)
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 for i 0 to n – 2 do min i for j i + 1 to n – 1 do if A[j] < A[min] min j swap A[i] and A[min] Selection Sort
Find a given value, called a search key, in a given set. Examples of searching algorithms Sequential search Binary search … Searching Input: sorted array a_i < … < a_j and key x; m (i+j)/2; while i < j and 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)
A string is a sequence of characters from an alphabet. Text strings: letters, numbers, and special characters. String matching: searching for a given word/pattern in a text. StringProcessing • Examples: • searching for a word or phrase on WWW or in a Word document • searching for a short read in the reference genomic sequence
Given a text stringT of length n and a pattern stringP of length m, the exact string matching problem is to find all occurrences of P in T. Example: T=“AGCTTGA” P=“GCT” Applications: Searchingkeywords in a file Searching engines (like Google and Openfind) Database searching (GenBank) More string matching algorithms (with source codes): http://www-igm.univ-mlv.fr/~lecroq/string/ StringMatching
Brute Force algorithm The brute force algorithm consists in checking, at all positions in the text between 0 and n-m, whether an occurrence of the pattern starts there or not. Then, after each attempt, it shifts the pattern by exactly one position to the right. StringMatching Time: O(mn) where m=|P| and n=|T|.
No preprocessing phase; Constant extra space needed; Always shifts the window by exactly 1 position to the right; Comparisons can be done in any order; Searching phase in O(mn) time complexity; Main Features
Report three different methods for string matching and write a program to test them? Your assignment
Informal 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 …….. GraphProblems
list array linked list string stack queue priorityqueue Fundamental data structures • graph • tree and binary tree
Arrays A sequence of n items of the same data type that are stored contiguously in computer memory and made accessible by specifying a value of the array’s index. LinkedList A sequence of zero or more nodes each containing two kinds of information: some data and one or more links called pointers to other nodes of the linked list. Singly linked list (next pointer) Doubly linked list (next + previous pointers) … . a1 a2 an LinearDataStructures • Arrays • fixed length (need preliminary reservation of memory) • contiguous memory locations • direct access • Insert/delete • LinkedLists • dynamic length • arbitrary memory locations • access by following links • Insert/delete
Stacks A stack of plates insertion/deletion can be done only at the top. LIFO Two operations (push and pop) Queues A queue of customers waiting for services Insertion/enqueue from the rear and deletion/dequeue from the front. FIFO Twooperations (enqueue and dequeue) StacksandQueues
PriorityQueueandHeap • Priorityqueues (implemented using heaps) • A data structure for maintaining a set of elements, each associated with a key/priority, with the following operations: • Finding the element with the highest priority • Deleting the element with the highest priority • Inserting a new element • Scheduling jobs on a shared computer