Analysis of Computer Algorithms. Algorithm. Algorithm, Data Structure, Program



Similar documents
Efficiency of algorithms. Algorithms. Efficiency of algorithms. Binary search and linear search. Best, worst and average case.

Why? A central concept in Computer Science. Algorithms are ubiquitous.

Running Time ( 3.1) Analysis of Algorithms. Experimental Studies ( 3.1.1) Limitations of Experiments. Pseudocode ( 3.1.2) Theoretical Analysis

In mathematics, it is often important to get a handle on the error term of an approximation. For instance, people will write

Data Structures. Algorithm Performance and Big O Analysis

SIMS 255 Foundations of Software Design. Complexity and NP-completeness

CSE373: Data Structures and Algorithms Lecture 3: Math Review; Algorithm Analysis. Linda Shapiro Winter 2015

Computer Algorithms. NP-Complete Problems. CISC 4080 Yanjun Li

MapReduce and Distributed Data Analysis. Sergei Vassilvitskii Google Research

CSC148 Lecture 8. Algorithm Analysis Binary Search Sorting

Sorting revisited. Build the binary search tree: O(n^2) Traverse the binary tree: O(n) Total: O(n^2) + O(n) = O(n^2)

Complexity Theory. IE 661: Scheduling Theory Fall 2003 Satyaki Ghosh Dastidar

CSE 326, Data Structures. Sample Final Exam. Problem Max Points Score 1 14 (2x7) 2 18 (3x6) Total 92.

Class Overview. CSE 326: Data Structures. Goals. Goals. Data Structures. Goals. Introduction

CPSC 211 Data Structures & Implementations (c) Texas A&M University [ 313]

AP Computer Science AB Syllabus 1

Zabin Visram Room CS115 CS126 Searching. Binary Search

Approximation Algorithms

Theoretical Computer Science (Bridging Course) Complexity

A Performance Study of Load Balancing Strategies for Approximate String Matching on an MPI Heterogeneous System Environment

The Union-Find Problem Kruskal s algorithm for finding an MST presented us with a problem in data-structure design. As we looked at each edge,

CS/COE

Near Optimal Solutions

CSC 180 H1F Algorithm Runtime Analysis Lecture Notes Fall 2015

Cost Model: Work, Span and Parallelism. 1 The RAM model for sequential computation:

Discuss the size of the instance for the minimum spanning tree problem.

The Running Time of Programs

Algorithms. Margaret M. Fleck. 18 October 2010

Analysis of Binary Search algorithm and Selection Sort algorithm

Classification - Examples

The Classes P and NP. mohamed@elwakil.net

IMPROVING PERFORMANCE OF RANDOMIZED SIGNATURE SORT USING HASHING AND BITWISE OPERATORS

Integer Factorization using the Quadratic Sieve

CAD Algorithms. P and NP

Molecular Computing Athabasca Hall Sept. 30, 2013

External Sorting. Why Sort? 2-Way Sort: Requires 3 Buffers. Chapter 13

EFFICIENT EXTERNAL SORTING ON FLASH MEMORY EMBEDDED DEVICES

Union-Find Algorithms. network connectivity quick find quick union improvements applications

CSC2420 Fall 2012: Algorithm Design, Analysis and Theory

Applied Algorithm Design Lecture 5

4.2 Sorting and Searching

Data Structures and Algorithms Written Examination

1. Nondeterministically guess a solution (called a certificate) 2. Check whether the solution solves the problem (called verification)

Boolean Network Models

Big Data Systems CS 5965/6965 FALL 2015

Computer Graphics Hardware An Overview

Using Data-Oblivious Algorithms for Private Cloud Storage Access. Michael T. Goodrich Dept. of Computer Science

CS 575 Parallel Processing

NP-completeness and the real world. NP completeness. NP-completeness and the real world (2) NP-completeness and the real world

Topics. Introduction. Java History CS 146. Introduction to Programming and Algorithms Module 1. Module Objectives

Faster deterministic integer factorisation

Randomized algorithms

Distributed Computing over Communication Networks: Maximal Independent Set

Chapter 6: Episode discovery process

Performance Metrics and Scalability Analysis. Performance Metrics and Scalability Analysis

Complexity Classes P and NP

Distance Degree Sequences for Network Analysis

Diagonalization. Ahto Buldas. Lecture 3 of Complexity Theory October 8, Slides based on S.Aurora, B.Barak. Complexity Theory: A Modern Approach.

Page 1. CSCE 310J Data Structures & Algorithms. CSCE 310J Data Structures & Algorithms. P, NP, and NP-Complete. Polynomial-Time Algorithms

Algorithms, Flowcharts & Program Design. ComPro

A Note on Maximum Independent Sets in Rectangle Intersection Graphs

Exponential time algorithms for graph coloring

! Solve problem to optimality. ! Solve problem in poly-time. ! Solve arbitrary instances of the problem. #-approximation algorithm.

A Comparison of General Approaches to Multiprocessor Scheduling

5.1 Bipartite Matching

Scheduling Shop Scheduling. Tim Nieberg

Chapter 20: Data Analysis

SIGMOD RWE Review Towards Proximity Pattern Mining in Large Graphs

Binary Heaps * * * * * * * / / \ / \ / \ / \ / \ * * * * * * * * * * * / / \ / \ / / \ / \ * * * * * * * * * *

How To Find An Optimal Search Protocol For An Oblivious Cell

Computer System: User s View. Computer System Components: High Level View. Input. Output. Computer. Computer System: Motherboard Level

Interconnection Networks. Interconnection Networks. Interconnection networks are used everywhere!

Chapter Objectives. Chapter 9. Sequential Search. Search Algorithms. Search Algorithms. Binary Search

Rethinking SIMD Vectorization for In-Memory Databases

Lecture 2 Parallel Programming Platforms

OHJ-2306 Introduction to Theoretical Computer Science, Fall

Parallel Computing. Benson Muite. benson.

THE SCHEDULING OF MAINTENANCE SERVICE

System Interconnect Architectures. Goals and Analysis. Network Properties and Routing. Terminology - 2. Terminology - 1

Eastern Washington University Department of Computer Science. Questionnaire for Prospective Masters in Computer Science Students

Introduction to Algorithms. Part 3: P, NP Hard Problems

Measuring the Performance of an Agent

Many algorithms, particularly divide and conquer algorithms, have time complexities which are naturally

Chapter 2. Multiprocessors Interconnection Networks

The Taxman Game. Robert K. Moniot September 5, 2003

How To Solve A K Path In Time (K)

JUST-IN-TIME SCHEDULING WITH PERIODIC TIME SLOTS. Received December May 12, 2003; revised February 5, 2004

OKLAHOMA SUBJECT AREA TESTS (OSAT )

Sense Making in an IOT World: Sensor Data Analysis with Deep Learning

ON THE COMPLEXITY OF THE GAME OF SET.

Data Structures and Algorithms

Doctor of Philosophy in Computer Science

Persistent Binary Search Trees

Analysis of Algorithms, I

ALGEBRA. sequence, term, nth term, consecutive, rule, relationship, generate, predict, continue increase, decrease finite, infinite

Load Balancing and Rebalancing on Web Based Environment. Yu Zhang

Multi-layer Structure of Data Center Based on Steiner Triple System

Small Maximal Independent Sets and Faster Exact Graph Coloring

Notes on Complexity Theory Last updated: August, Lecture 1

Transcription:

Analysis of Computer Algorithms Hiroaki Kobayashi Input Algorithm Output 12/13/02 Algorithm Theory 1 Algorithm, Data Structure, Program Algorithm Well-defined, a finite step-by-step computational procedure that takes some values, or set of values, as input and produces some value, or set of values, as output. Procedure a sequence of computational steps that transform the input into the output. Finiteness of the steps of a procedure is not guaranteed. Program algorithm represented in a program language Data structure data structure suited for input, output, and temporal data during computing. Passive objects Program = Algorithm + Data Structure 12/13/02 Algorithm Theory 2

What is a Computable Problem Computable (Solvable) problem There is an algorithm with finite program steps to solve the problem on a computer Computable Problems incomputable Many different algorithms for a computable problem are available! Analysis of algorithms is essential to design good algorithms 12/13/02 Algorithm Theory 3 How can we evaluate algorithms? Measure running time of a program Most algorithms transform input objects into output objects. The running time of an algorithm typically grows with the input size. Average case time is often difficult to determine. We focus on the worst case running time. Easier to analyze Crucial to applications such as games, finance and robotics Running Time 120 100 80 60 40 20 0 best case average case worst case 1000 2000 3000 4000 Input Size 12/13/02 Algorithm Theory 4

Experimental Studies Write a program implementing the algorithm Run the program with inputs of varying size and composition Use a method like System.currentTimeMillis() to get an accurate measure of the actual running time Plot the results Time (ms) 9000 8000 7000 6000 5000 4000 3000 2000 1000 0 0 50 100 Input Size 12/13/02 Algorithm Theory 5 Limitations of Experiments It is necessary to implement the algorithm, which may be difficult Results may not be indicative of the running time on other inputs not included in the experiment. In order to compare two algorithms, the same hardware and software environments must be used 12/13/02 Algorithm Theory 6

Theoretical Analysis Uses a high-level description of the algorithm instead of an implementation Characterizes running time as a function of the input size, n. Takes into account all possible inputs Allows us to evaluate the speed of an algorithm independent of the hardware/software environment 12/13/02 Algorithm Theory 7 Theoretical Analysis (Cont d) Algorithm analysis needs an abstract machine as a measure for evaluation of algorithms Abstract Machines: Very simple computer models for measurement of program execution steps and memory requirement Turing Machine Random Access Machine (RAM) Program correctness Computation complexity evaluation in terms of speed and memory 12/13/02 Algorithm Theory 8

Abstract Machine Example : Turing Machine Proposed by Alan M. Turing in 1936 (Pre-Electric-Computer Era) Processor Finite State Machine Tape Memory with unlimited cells Blank or symbol Head Head for tape reads and writes Turing Machine can perform any computation that any general purpose computer can, but has a quite different architecture from conventional computers. Processor (Finite State Machine) Head Cell Unlimited Tape (memory) 12/13/02 Algorithm Theory 9 Pseudo-code 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 Example: Find max element of an array Algorithm arraymax(a, n) Input array A of n integers Output maximum element of A currentmax A[0] for i 1 to n 1 do if A[i] > currentmax then currentmax A[i] return currentmax 12/13/02 Algorithm Theory 10

Pseudocode Details 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 return expression Expressions Assignment (like = in Java) = Equality testing (like == in Java) n 2 Superscripts and other mathematical formatting allowed 12/13/02 Algorithm Theory 11 Von-Neumann Computer Model: Base Model for Modern Computer Systems Computer System Processor Control Input Datapath (ALU, Reg) Memory Output 12/13/02 Algorithm Theory 12

The Random Access Machine (RAM) Model A CPU An potentially unbounded bank of memory cells, each of which can hold an arbitrary number or character 0 12 Memory cells are numbered and accessing any cell in memory takes unit time. 12/13/02 Algorithm Theory 13 Primitive Operations Basic computations performed by an algorithm Identifiable in pseudocode Largely independent from the programming language Exact definition not important Assumed to take a constant amount of time in the RAM model Examples: Evaluating an expression Assigning a value to a variable Indexing into an array Calling a method Returning from a method 12/13/02 Algorithm Theory 14

Analysis of Algorithm Complexity Execution Steps Number of primitive steps/operations to solve a given problem. Memory Requirement Total amount of memory required to hold inputs, outputs and temporal results Example: Search a desired datum among N data Case 1 A data set of N elements is randomly stored. Case 2 A data set of N elements is stored in an ascending/descending order. 12/13/02 Algorithm Theory 15 Search Algorithms Case 1 Random stored data Sequential search Case 2 Sorted data Binary search < log 8 2 5 8 If smaller If larger 1 3 6 9 10 12/13/02 Algorithm Theory 16

Summary of Search Algorithms Sequential search Binary search Search Best 1, Worst N, Average N/2 searches log N Insert new data 1 log N Delete data N/2 searches for search, N/2 moves log N searches, N/2 moves Initial data arrangement for N times N N logn 12/13/02 Algorithm Theory 17 N vs. Log N :As a Function of Input Data Very slow growth Algorithms with log N steps are very good ones! 12/13/02 Algorithm Theory 18

Metrics for Complexity Analysis Many programs are extremely sensitive to their input data Algorithms are evaluated as a function of the number of input data. Two Metrics for Algorithm Analysis Space Complexity Total amount of memory to store inputs, outputs, and temporal data Time Complexity Number of (program) steps to solve the problem So, What s a Bad Algorithm, yes, it is computable, but it needs the enormous amount of memory the enormous number of execution steps 12/13/02 Algorithm Theory 19 Complexity in Worst Case and Average Case Worst Case Complexity The worst-case execution complexity of an algorithm gives an upper bound on the execution steps for any input. Evaluate the algorithm using the worst possible input configuration. Guarantee that the algorithm will never take any longer. For some algorithms, the worst case rarely occurs. In such a case, the worst case complexity does not reflect the actual program behavior. Average Complexity (Expected Complexity) Estimate the complexity of an algorithm with considering input occurrence probability. Evaluate the algorithm using typical input data. Reflects the actual behavior of an algorithm, but hard to constitute average inputs for a particular problem. Assume that all inputs of a given size are equally likely 12/13/02 Algorithm Theory 20

Estimating Running Time Assume that an algorithm executes 7n-1 primitive operations in the worst case. Define: a = Time taken by the fastest primitive operation b = Time taken by the slowest primitive operation Let T(n) be worst-case time of the algorithm. Then a(7n-1) T(n) b(7n-1) Hence, the running time T(n) is bounded by two linear functions. 12/13/02 Algorithm Theory 21 Growth Rate of Running Time Changing the hardware/ software environment Affects T(n) by a constant factor, but Does not alter the growth rate of T(n) The linear growth rate of the running time T(n) is an intrinsic property of the algorithm 12/13/02 Algorithm Theory 22

Growth Rates Growth rates of functions: Linear n Quadratic n 2 Cubic n 3 In a log-log chart, the slope of the line corresponds to the growth rate of the function T (n ) 1E+30 1E+28 1E+26 1E+24 1E+22 1E+20 1E+18 1E+16 1E+14 1E+12 1E+10 1E+8 1E+6 1E+4 1E+2 1E+0 Cubic Quadratic Linear 1E+0 1E+2 1E+4 1E+6 1E+8 1E+10 n 12/13/02 Algorithm Theory 23 Constant Factors The growth rate is not affected by constant factors or lower-order terms Examples 10 2 n + 10 5 is a linear function 10 5 n 2 + 10 8 n is a quadratic function T (n ) 1E+26 1E+24 1E+22 1E+20 1E+18 1E+16 1E+14 1E+12 1E+10 1E+8 1E+6 1E+4 1E+2 1E+0 Quadratic Quadratic Linear Linear 1E+0 1E+2 1E+4 1E+6 1E+8 1E+10 n 12/13/02 Algorithm Theory 24

Big O-notation: Quantitative and Approximate Analysis of Algorithm Complexity Big O-notation gives an upper bound for a function to within a constant factor. If there exist positive constant n 0 and c such that to the right of n 0, the value of f(n) always lies on or below cg(n), i.e., f(n) cg(n) n: number of inputs The complexity of a given algorithm : O(g(n)) 12/13/02 Algorithm Theory 25 Analysis of Algorithm Complexity using Big O-Notation Example: An algorithm with 2n 2 execution steps is roughly evaluated with a complexity of O(n 2 ) steps O-notation gives approximate evaluation of algorithms ignore details!! Just consider the leading/dominant term of mathematical expression of algorithm complexity n 2, 2.5n 2, 100n 2, 1000+5n+2n 2 O(n 2 )!! Free the analysis from considering the details of particular machine characteristics: independent of both inputs and implementation details 12/13/02 Algorithm Theory 26

Big-O Example Example: 2n + 10 is O(n) 2n + 10 cn (c 2) n 10 n 10/(c 2) 10,000 1,000 100 3n 2n+10 n 10 Pick c = 3 and n 0 = 10 1 1 10 100 1,000 n 12/13/02 Algorithm Theory 27 Big-O Example Example: function n 2 is not O(n) n 2 cn n c 1,000,000 100,000 10,000 1,000 n^2 100n 10n n The above inequality cannot be satisfied since c must be a constant 100 10 1 1 10 100 1,000 n 12/13/02 Algorithm Theory 28

More Big-O Examples 7n-2 is O(n) need c > 0 and n 0 1 such that 7n-2 c n for n n 0 this is true for c = 7 and n 0 = 1 3n 3 + 20n 2 + 5 is O(n 3 ) need c > 0 and n 0 1 such that 3n 3 + 20n 2 + 5 c n 3 for n n 0 this is true for c = 4 and n 0 = 21 3 log n + log log n is O(log n) need c > 0 and n 0 1 such that 3 log n + log log n c log n for n n 0 this is true for c = 4 and n 0 = 2 12/13/02 Algorithm Theory 29 Big-Oh and Growth Rate The big-oh notation gives an upper bound on the growth rate of a function The statement f(n) is O(g(n)) means that the growth rate of f(n) is no more than the growth rate of g(n) We can use the big-oh notation to rank functions according to their growth rate f(n) is O(g(n)) g(n) is O(f(n)) g(n) grows more f(n) grows more Same growth Yes No Yes No Yes Yes 12/13/02 Algorithm Theory 30

Big-Oh Rules If is f(n) a polynomial of degree d, then f(n) is O(n d ), i.e., 1. Drop lower-order terms 2. Drop constant factors Use the smallest possible class of functions Say 2n is O(n) instead of 2n is O(n 2 ) Use the simplest expression of the class Say 3n + 5is O(n) instead of 3n + 5is O(3n) 12/13/02 Algorithm Theory 31 Asymptotic Algorithm Analysis The asymptotic analysis of an algorithm determines the running time in big-oh notation To perform the asymptotic analysis We find the worst-case number of primitive operations executed as a function of the input size We express this function with big-oh notation Example: We determine that the algorithm executes at most 7n 1 primitive operations We say that the algorithm runs in O(n) time Since constant factors and lower-order terms are eventually dropped anyhow, we can disregard them when counting primitive operations 12/13/02 Algorithm Theory 32

Good Algorithms Good Algorithm or Bad Algorithm?: Quantitative Definition Time/Space Complexity is O(n), O(log n), O(nlog n), O(n 2 ) Polynomial Growth of Computation Steps and/or memory requirement as the number of inputs increases Bad Algorithms Time/Space Complexity is O(k n ) where k is a constant. Exponential Growth of Computation Steps and/or Memory Requirement as the number of inputs increases If algorithms with exponential growth of complexity are only solutions to a problem, the problem is called a hard problem or intractable problem. Polynomial-time solvable problems are called easy problems or tractable problems. 12/13/02 Algorithm Theory 33 Growth of Functions n: number of inputs Unit: seconds if not specified Using more powerful computers is a good solution to hard problems? 12/13/02 Algorithm Theory 34

Computer Power Goes Up Steadily, and 750KHz The The Number of of Transistors Per Per Chip Chip Doubles Every Every 18 18 Months! Pentium 4 2.4GHz 2014 64B Tr Tr 4.3GHz 1+ GHz 12/13/02 Algorithm Theory 35 Source: Intel Yes, We Have Powerful Computers at Low Cost, but 1965 1977 2001 IBM System 360/50 DEC VAX11/780 Pentium 4 PC Performance ratio 0.15MIPS(1) Memory ratio 64KB(1) Price 360M yen Price/performance 1 1MIPS(6.7) 1MB(16) 72M yen 33 times 3792MIPS(25,280) 256MB(4,096) 250K yen More than 36M times! 12/13/02 Algorithm Theory 36

It s a mere drop in the bucket for hard problems Example For 4 algorithms A 1,A 2,A 3,A 4 whose complexities are O(n), O(n 2 ), O(n 100 ), O(2 n ), respectively, evaluate increases in input size when an 100 times faster computer is available. Assumptions A new computer M is 100 times faster than an old computer M. m x is a data size/sec on M with algorithm x m x is a data size/sec on M with algorithm x Algorithms Time increase in Input size Complexity M M' A 1 O(n) m 1 100m 1 A 2 O(n 2 ) m 2 10m 2 A 3 O(n 100 ) m 3 1.047m 3 A 4 O(2 n ) m 4 m 4 +6.644 12/13/02 Algorithm Theory 37 Algorithm Analysis Example: MSP Problem Minimum Spanning Tree Problem For given graph G(V, E), find an acyclic subset T E that connects all of the vertices and whose total weight is minimized, where V is the set of vertices and E is the set of edges. 7 9 12 17 15 16 8 Weighed Graph 7 9 8 15 Minimum Spanning Tree 12/13/02 Algorithm Theory 38

MST Algorithm (Kruskal s Algorithm) Step 1 Sort edges in an ascending order Step 2 Prepare v sets, each of which has each vertex as an entry, where v is the number of vertices. Step 3 Pick up an edge with the smallest weight. If two vertices of the edge belong to the different sets the edge is the edge of the spanning tree, and merge the two sets to which these two vertices belong. Otherwise, discard the edge, and check the next smallest edge. This step is repeated until all the edges have gone. 12/13/02 Algorithm Theory 39 Algorithm Behavior sets merge merge Initial Sets 1 st iteration 2 nd iteration merge Not changed Final MST weighted graph 3 rd iteration 4 th iteration 5 th iteration 12/13/02 Algorithm Theory 40

Complexity Analysis: MST Problem m E, n V where n < m n(n-1)/2 Computational complexity for sorting Sort m elements m log m Computational complexity for set operations One set operation for n elements log n (Find vertices connected by a given edge and merge two sets) m iterations of the set operation m log n Total Computation Complexity O(m log m) + O (m log n) = O(m log m) Space Complexity Memory for graph Working memory for set operations Total O(m) + O(n) O(m) O(m+n) O(m), O(n) 12/13/02 Algorithm Theory 41 Complexity Analysis: Optimization Problem For n+1 natural number (a 1, a 2, a 3,, a n, b), if there is a 0-1 vector (x 1, x 2,, x n ) that satisfies Σa i x i =b, output yes, otherwise no. Example: x=(3, 7, 5, 8, 2), b=11 Algorithm Represent x in n+1-bit number, and check throughout all the 0-1 combinations, e.g., from x=(000 0) to (111 1). If there is a combination that satisfies the condition, output yes, otherwise no. 12/13/02 Algorithm Theory 42

Complexity Analysis: Optimization Problem Number of iterations to check throughout 000 0 to 111 1 n+1 O( n ) Operation within one iteration: calculations for weighted sum and condition evaluation O(n) Total computation complexity O( n ) O(n) O(n n ) Hard Problem! Space complexity O(n) for storing each of vectors a and x Total Space Complexity O(n) 12/13/02 Algorithm Theory 43 Possible Solutions to Hard Problems Translate the hard problems to easy problems for which algorithms generating quasi-optimal solutions/output with polynomial complexity are available. Develop heuristic approaches that generate quasi-optimal solutions/output Neural Network Genetic algorithm Develop parallel algorithms on parallel computers (bruteforce!!) 12/13/02 Algorithm Theory 44

Neural Network Input Cell Output Inputs weight Output Biological Neuron Artificial Neuron Training an artificial neural network with pairs of inputs and their correct outputs, instead of programming Classification Pattern Recognition Associative Memory Problem class where there is no good deterministic algorithm!! 12/13/02 Algorithm Theory 45 Parallel Processing Big Problem Partitioning Subproblems Allocation Network Topologies P P P P: Processor Interconnection Network 12/13/02 Algorithm Theory 46

Trend in Supercomputer Performance 2x/year 12/13/02 Algorithm Theory 47 Single-CPU Performance, or Massive Parallelism? (As of Nov. 02) 1TFLOPS 10TFLOPS 100TFLOPS 10GFLOPS 1GFLOPS 100MFLOPS MasPar 100GFLOPS CM-2 NCube ASCI Red ASCI ASCI Purple in 05? white CP-PACS ASCI-Q ASCI Blue SP3 ES(SX-6) T3E Alpha Linux Cluster IntelDelta CM-5 SR2201 ORIGIN IBMpSeries 690 2000 SR8000 Cray/SGI SP P2SC (Tokyo) T3D SX-7(Tohoku) SX-5 (Osaka) InteliPSC SX-4 VPP5000 Cray/SGI Y-MP CRAY-3 12/13/02 Algorithm Theory 48 SX-2 SX-3 S-3800

Hard Problems are also Useful Example: Secure Networks with Cryptography Sender Receiver Plain text key Plain text key Encrypted text Encrypted Data Transmission Encrypted text Decryption without an encryption key leads to exponential computation complexity. Intrusion by someone else is very hard! E-Commerce Secure data exchange 12/13/02 Algorithm Theory 49 Summary Complexity analysis of algorithms gives a clue to judge whether the algorithms are efficient or not. Time Complexity Space Complexity Analysis of an algorithm is a cycle process of Analyzing Estimating Refining the analysis until an answer to the desired level of detail is reached Design efficient algorithms with polynomial-time/space complexity of O(n), O(log n), O(n log n), or O(n 2 )! 12/13/02 Algorithm Theory 50