Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
CSE 220 (Data Structures and Analysis of Algorithms) Instructor: Saswati Sarkar ([email protected]) T.A. Dimosthenes Anthomelidis ([email protected]) Course Web Page: http://www.seas.upenn.edu/~swati/cse220.html Timings Class MWF: 12-1, 224 Moore Instructor Office Hours: 11-12, Friday, 360 Moore (correction) 1-2 Wednesday 360 Moore T.A. Office Hours: Monday 11-12, Friday 1-2, 329 Pender Recital: Wednesday 5-6 (Moore 216) Text Books Data Structures and Algorithm Analysis in C Mark Allen Weiss Data Structures Using C Yedidyah Langsam Prerequisites Knowledge of C CSE 260? Grading Weekly Homeworks (30%) Posted every Monday Due Next Monday before class (solution posted after class) First Homework will be posted on 29th January No consultation allowed No late submission accepted 1 Midterm: 30% (last class before spring break) Cumulative Final: 40% Course Content Course Motivation Mathematical Foundation: Complexity Analysis: Data Structures: List, Stacks, Queues Algorithm: Searching and Trees Sorting and Heaps Graph Algorithms (Depth first Search, Breadth First Search, Topological sort, Shortest path algorithm, Spanning Tree Algorithm) Computability and Complexity 2 review lectures No class on April 25 No class on either April 23 or April 27 (will confirm later) Course Motivattion Need to run computer programs efficiently! Computer program: Accepts Input (Data) Performs a Sequence of action with the input Generates Output (Data) Efficient Management of Data (Data Structures) Efficient Sequence of Actions Algorithms Algorithms Sequence of actions a ``dumb’’ machine can follow For j=1 to N print j Efficient versus Inefficient algorithm Linear Search Vs Binary Search Design of Algorithms You have a problem to solve Design an efficient algorithm Use good data structures Show that your algorithm works! Prove its correctness Study the efficiency of your algorithm Formal Study of Algorithms Design of Algorithms Proving Correctness of Algorithms Formal study of efficiency of algorithms Run time Storage required Mathematical Foundation Series and summation: 1 + 2 + 3 + ……. N = N(N+1)/2 (arithmetic series) 1 + r2 + r3 +………rN-1 = (1- rN)/(1-r), 1/(1-r) , (geometric series) r < 1, large N Sum of squares: 1 + 22 + 32 +………N2 = N(N + 1)(2N + 1)/6 Properties of a log Function logxa = b if xb = a (we will use base 2 mostly, but may use other bases occasionally) Will encounter log functions again and again! log n bits needed to encode n messages. log (ab ) = log a + log b log (a/b ) = log a - log b log ab = b log a logba = logca/ logcb alog n = nlog a amn = (am )n = (an)m am+n = am an (2n)0.5 (n/e)n n (2n)0.5 (n/e)n + (1/12n) We will deduce the value of the descending geometric series: N + Nr + Nr2 + Nr3 +………1 Example: N + N/2 + N/4 + …… + 1 The summation equals (N-r)/(1-r) For r = 2, this is 2N - 1 Proof By Induction Prove that a property holds for input size 1 Assume that the property holds for input size 1,2,…n. Show that the property holds for input size n+1. Then, the property holds for all input sizes, n. Prove that the sum of 1+2+…..+n = n(n+1)/2 Holds for n = 1 Let it hold for 1,2…..n 1+2+….+n = n(n+1)/2 1+2+….+n+(n+1) = n(n+1)/2 + (n+1) = (n+1)(n+2)/2. Fibonacci Numbers Sequence of numbers, F0 F1 , F2 , F3 ,……. F0 = 1, F1 = 1, F2 = 2, F3 = 3,……. Fi = Fi-1 + Fi-2 , Will prove that FN i=1N-2 Fi < N = FN - 2 Holds for N = 1 Let it hold for 1,2,….N FN+1 = FN < N = + FN-1 + N-1 N-1 (1 + ) = N-1 2 = N+1 = (1+sqrt(5))/2 N > 2 (Correction) Proof By Counter Example Want to prove something is not true! Give an example to show that it does not hold! Is FN N2 ? No, F11 = 144 However, if you were to show that FN N2 then you need to show for all N, and not just one number. Proof By Contradiction Suppose, you want to prove something. Assume that what you want to prove does not hold. Then show that you arrive at an impossiblity. Example: The number of prime numbers is not finite! Suppose there are finite number of primes, k primes. (we do not include 1 in primes here) We know k2. Let the primes be P1, P2 , Z = P1 P2 ……… ……… Pk Pk + 1 Z is not divisible by P1, P2 , Z is greater than P1, P2 , ……… ……… Pk Pk Thus Z is not a prime. We know that a number is either prime or divisible by primes. Hence contradiction. So our assumption that there are finite number of primes is not true.