Introduction to Computer Science

Similar documents
Introduction to Computer Science

Lecture 13. Reading: Weiss, Ch. 9, Ch 8 CSE 100, UCSD: LEC 13. Page 1 of 29

CS/ENGRD 2110 Object-Oriented Programming and Data Structures Spring 2012 Thorsten Joachims. Lecture 25: Review and Open Problems

Department of Computer Applications. MCA 312: Design and Analysis of Algorithms. [Part I : Medium Answer Type Questions] UNIT I

CSE 100: B+ TREE, 2-3 TREE, NP- COMPLETNESS

CSE 417 Branch & Bound (pt 4) Branch & Bound

CLASS: II YEAR / IV SEMESTER CSE CS 6402-DESIGN AND ANALYSIS OF ALGORITHM UNIT I INTRODUCTION

CS61BL. Lecture 5: Graphs Sorting

L.J. Institute of Engineering & Technology Semester: VIII (2016)

Virtual University of Pakistan

CSE 100 Minimum Spanning Trees Prim s and Kruskal

Chapter 9 Graph Algorithms

Module 6 P, NP, NP-Complete Problems and Approximation Algorithms

Chapter 9 Graph Algorithms

Lecture 25 Notes Spanning Trees

1 5,9,2,7,6,10,4,3,8,1 The first number (5) is automatically the first number of the sorted list

CSC 8301 Design and Analysis of Algorithms: Exhaustive Search

Lecture 25 Spanning Trees

Module 6 NP-Complete Problems and Heuristics

Best known solution time is Ω(V!) Check every permutation of vertices to see if there is a graph edge between adjacent vertices

Algorithmic Analysis. Go go Big O(h)!

Design and Analysis of Algorithms - - Assessment

DESIGN AND ANALYSIS OF ALGORITHMS

Exam Sample Questions CS3212: Algorithms and Data Structures

Lecturers: Sanjam Garg and Prasad Raghavendra March 20, Midterm 2 Solutions

Sankalchand Patel College of Engineering - Visnagar Department of Computer Engineering and Information Technology. Assignment

CSE 373: Data Structures and Algorithms

Lecture Summary CSC 263H. August 5, 2016

CS583 Lecture 01. Jana Kosecka. some materials here are based on Profs. E. Demaine, D. Luebke A.Shehu, J-M. Lien and Prof. Wang s past lecture notes

CSCE 350: Chin-Tser Huang. University of South Carolina

CIS 121 Data Structures and Algorithms Midterm 3 Review Solution Sketches Fall 2018

Review for Midterm Exam

Lecture Notes on Spanning Trees

Chapter 9 Graph Algorithms

11/22/2016. Chapter 9 Graph Algorithms. Introduction. Definitions. Definitions. Definitions. Definitions

CSci 231 Final Review

CS 350 Final Algorithms and Complexity. It is recommended that you read through the exam before you begin. Answer all questions in the space provided.

Algorithms and Data Structures CS-CO-412

CSC Design and Analysis of Algorithms. Lecture 4 Brute Force, Exhaustive Search, Graph Traversal Algorithms. Brute-Force Approach

CSE 373: Data Structures and Algorithms

Recitation 9. Prelim Review

Design and Analysis of Algorithms. Comp 271. Mordecai Golin. Department of Computer Science, HKUST


CSE 100: GRAPH ALGORITHMS

PSD1A. DESIGN AND ANALYSIS OF ALGORITHMS Unit : I-V

Reference Sheet for CO142.2 Discrete Mathematics II

Introduction to the Analysis of Algorithms. Algorithm

Computer Science 210 Data Structures Siena College Fall Topic Notes: Complexity and Asymptotic Analysis

MUHAMMAD FAISAL MIT 4 th Semester Al-Barq Campus (VGJW01) Gujranwala

Total Score /1 /20 /41 /15 /23 Grader

1 Format. 2 Topics Covered. 2.1 Minimal Spanning Trees. 2.2 Union Find. 2.3 Greedy. CS 124 Quiz 2 Review 3/25/18

CS Data Structures and Algorithm Analysis

CSE 417 Practical Algorithms. (a.k.a. Algorithms & Computational Complexity)

CS521 \ Notes for the Final Exam

CS161 - Final Exam Computer Science Department, Stanford University August 16, 2008

CSCE 321/3201 Analysis and Design of Algorithms. Prof. Amr Goneid. Fall 2016

CMSC 451: Lecture 22 Approximation Algorithms: Vertex Cover and TSP Tuesday, Dec 5, 2017

Graphs. What is a Graph? Computer Science S-111 Harvard University David G. Sullivan, Ph.D.

CS 4349 Lecture October 18th, 2017

Measuring algorithm efficiency

Chapter 14. Graphs Pearson Addison-Wesley. All rights reserved 14 A-1

CS6402 DESIGN AND ANALYSIS OF ALGORITHMS QUESTION BANK UNIT I

ECE250: Algorithms and Data Structures Final Review Course

Graphs. Computer Science E-119 Harvard Extension School Fall 2012 David G. Sullivan, Ph.D. What is a Graph? b d f h j

(Refer Slide Time: 01.26)

The ADT priority queue Orders its items by a priority value The first item removed is the one having the highest priority value

Topics. Trees Vojislav Kecman. Which graphs are trees? Terminology. Terminology Trees as Models Some Tree Theorems Applications of Trees CMSC 302

Algorithm. Algorithm Analysis. Algorithm. Algorithm. Analyzing Sorting Algorithms (Insertion Sort) Analyzing Algorithms 8/31/2017

/633 Introduction to Algorithms Lecturer: Michael Dinitz Topic: Sorting lower bound and Linear-time sorting Date: 9/19/17

CSE373: Data Structures & Algorithms Lecture 28: Final review and class wrap-up. Nicki Dell Spring 2014

CSE 431/531: Algorithm Analysis and Design (Spring 2018) Greedy Algorithms. Lecturer: Shi Li

Theorem 2.9: nearest addition algorithm

ECE 2574: Data Structures and Algorithms - Big-O Notation. C. L. Wyatt

Graphs and Network Flows ISE 411. Lecture 7. Dr. Ted Ralphs

Run Times. Efficiency Issues. Run Times cont d. More on O( ) notation

Scientific Computing. Algorithm Analysis

10/31/18. About A6, Prelim 2. Spanning Trees, greedy algorithms. Facts about trees. Undirected trees

Spanning Trees, greedy algorithms. Lecture 20 CS2110 Fall 2018

Homework Assignment #3 Graph

Spanning Trees, greedy algorithms. Lecture 22 CS2110 Fall 2017

5105 BHARATHIDASAN ENGINEERING COLLEGE

Table of Contents. Course Minutiae. Course Overview Algorithm Design Strategies Algorithm Correctness Asymptotic Analysis 2 / 32

CS 170 Second Midterm ANSWERS 7 April NAME (1 pt): SID (1 pt): TA (1 pt): Name of Neighbor to your left (1 pt):

MergeSort, Recurrences, Asymptotic Analysis Scribe: Michael P. Kim Date: April 1, 2015

UNIT 5 GRAPH. Application of Graph Structure in real world:- Graph Terminologies:

MA/CSSE 473 Day 12. Questions? Insertion sort analysis Depth first Search Breadth first Search. (Introduce permutation and subset generation)

Computer Science 385 Design and Analysis of Algorithms Siena College Spring Topic Notes: Brute-Force Algorithms

CSE 431/531: Analysis of Algorithms. Greedy Algorithms. Lecturer: Shi Li. Department of Computer Science and Engineering University at Buffalo

Computer Science E-22 Practice Final Exam

MergeSort, Recurrences, Asymptotic Analysis Scribe: Michael P. Kim Date: September 28, 2016 Edited by Ofir Geri

Last week: Breadth-First Search

17/05/2018. Outline. Outline. Divide and Conquer. Control Abstraction for Divide &Conquer. Outline. Module 2: Divide and Conquer

Anany Levitin 3RD EDITION. Arup Kumar Bhattacharjee. mmmmm Analysis of Algorithms. Soumen Mukherjee. Introduction to TllG DCSISFI &

Data Structures and Algorithms

Graphs. Computer Science E-22 Harvard Extension School David G. Sullivan, Ph.D. What is a Graph? b d f h j

COMPSCI 311: Introduction to Algorithms First Midterm Exam, October 3, 2018

INSTITUTE OF AERONAUTICAL ENGINEERING

Spanning Trees 4/19/17. Prelim 2, assignments. Undirected trees

Spanning Trees. Lecture 22 CS2110 Spring 2017

Practice Problems for the Final

Transcription:

Introduction to Computer Science CSCI 109 Readings St. Amant, Ch. 4, Ch. 8 China Tianhe-2 Andrew Goodney Spring 2018 An algorithm (pronounced AL-go-rithum) is a procedure or formula for solving a problem. The word derives from the name of the mathematician, Mohammed ibn-musa al-khwarizmi, who was part of the royal court in Baghdad and who lived from about 780 to 850. Lecture 5: Data Structures & Algorithms 2/12, 2018

Reminders u Quiz 2 today (covers lecture material from 1/29 and 2/5) u No lecture next week (Feb 19) due to Presidents day u Quiz 3 on Feb 26 (covers lecture material from today (2/13)) u HW2 due on 2/26 u Midterm on 3/19 1

Where are we? Date Topic Assigned Due Quizzes/Midterm/Final 8-Jan Introduction What is computing, how did computers come to be? HW1 15-Jan MLK Holiday 22-Jan Computer architecture How is a modern computer built? Basic architecture and assembly 29-Jan Data structures Why organize data? Basic structures for Quiz 1 on material taught in HW1 organizing data class 1/8 and 1/22 Last day to drop a Monday-only class without a mark of W and receive a 30-Jan refund or change to Pass/No Pass or Audit for Session 001 5-Feb Data structures More Algorithms/Data Structures, 12-Feb Complexity and Combinatorics 19-Feb Presidents Day Trees, Graphs and Traversals Recursion and run-time 23-Feb Last day to drop a course without a mark of W on the transcript 26-Feb Algorithms and programming (Somewhat) More complicated algorithms and simple programming constructs, compilers HW2 5-Mar Operating systems What is an OS? Why do you need one? HW3 12-Mar Spring Break 19-Mar Midterm 26-Mar Computer networks 2-Apr Artificial intelligence Midterm 6-Apr Last day to drop a class with a mark of W for Session 001 9-Apr The limits of computation 16-Apr Robotics 23-Apr Summary, recap, review 4-May How are networks organized? How is the Internet organized? What is AI? Search, plannning and a quick HW4 introduction to machine learning What can (and can't) be computed? Robotics: background and modern systems (e.g., self-driving cars) Summary, recap, review for final Final exam 11 am - 1 pm in SAL 101 HW2 HW3 HW4 Quiz 2 on material taught in class 1/29, 2/5 Quiz 3 on material taught in class 2/12 Quiz 4 on material taught in class 2/26 Midterm on all material taught so far. Quiz 5 on material taught in class 3/26 Quiz 6 on material taught in class 4/2 Quiz 7 on material taught in class 4/9 Quiz 8 on material taught in class 4/16 Final on all material covered in the semester 2

Data Structures and Algorithms ua problem-solving view of computers and computing uorganizing information: sequences and trees uorganizing information: graphs uabstract data types: recursion Reading: St. Amant Ch. 4 Ch. 8 (partial) 3

Overview Problems Solution: Algorithms + Data Structures Pseudocode Low-level Low-level instructions Low-level instructions instructions Executions managed by Operating System Program Program Program Program Compile to CPU, Memory, Disk, I/O 4

Sequences, Trees and Graphs u Sequence: a list v v u Tree Items are called elements Item number is called the index Eric u Graph Jim Mike Chris Emily Jane Bob Terry Bob 5

Recursion: abstract data types u Defining abstract data types in terms of themselves (e.g., trees contain trees) Emily Eric Jane u So a tree is Either a single vertex, or a vertex that is the parent of one or more trees Terry Drew Bob Pam Kim 6

Recursion: algorithms u Defining algorithms in terms of themselves (e.g., quicksort) Check whether the sequence has just one element. If it does, stop Check whether the sequence has two elements. If it does, and they are in the right order, stop. If they are in the wrong order, swap them, stop. Choose a pivot element and rearrange the sequence to put lower-valued elements on one side of the pivot, higher-valued elements on the other side Quicksort the lower elements Quicksort the higher elements 7

Recursion: algorithms u How do you write a selection sort recursively? u How do you write a breadth-first search of a tree recursively? What about a depth-first search? 8

Analysis of algorithms uhow long does an algorithm take to run? time complexity uhow much memory does it need? space complexity 9

Estimating running time uhow to estimate algorithm running time? v Write a program that implements the algorithm, run it, and measure the time it takes v Analyze the algorithm (independent of programming language and type of computer) and calculate in a general way how much work it does to solve a problem of a given size uwhich is better? 10

Analysis of binary search u n = 8, the algorithm takes 3 steps u n = 32, the algorithm takes 5 steps u For a general n, the algorithm takes log 2 n steps 11

Growth rates of functions ulinear uquadratic uexponential 12

Big O notation u Characterize functions according to how fast they grow u The growth rate of a function is called the order of the function. (hence the O) u Big O notation usually only provides an upper bound on the growth rate of the function u Asymptotic growth f(x) = O(g(x)) as x -> if and only if there exists a positive number M such that f(x) M * g(x) for all x > x 0 13

Examples u f(n) = 3n 2 + 70 v We can write f(n) = O(n 2 ) v What is a value for M? u f(n) = 100n 2 + 70 v We can write f(n) = O(n 2 ) v Why? u f(n) = 5n + 3n 5 u We can write f(n) = O(n 5 ) u Why? u f(n) = n log n v We can write f(n) = O(n log n) v Why? u f(n) = πn n v We can write f(n) = O(n n ) v Why? u f(n) = (log n) 5 + n 5 u We can write f(n) = O(n 5 ) u Why? 14

Examples u f(n) = log a n and g(n) = log b n are both asymptotically O(log n) v The base doesn t matter because log a n = log b n/log b a u f(n) = log a n and g(n) = log a (n c ) are both asymptotically O(log n) v Why? u f(n) = log a n and g(n) = log b (n c ) are both asymptotically O(log n) v Why? u What about f(n) = 2 n and g(n) = 3 n? v Are they both of the same order? 15

Conventions u O(1) denotes a function that is a constant v f(n) = 3, g(n) = 100000, h(n) = 4.7 are all said to be O(1) u For a function f(n) = n 2 it would be perfectly correct to call it O(n 2 ) or O(n 3 ) (or for that matter O(n 100 )) u However by convention we call it by the smallest order namely O(n 2 ) 16

Complexity u (Binary) search of a sorted list: O(log 2 n) u Selection sort u Quicksort u Breadth first traversal of a tree u Depth first traversal of a tree u Prim s algorithm to find the MST of a graph u Kruskal s algorithm to find the MST of a graph u Dijkstra s algorithm to find the shortest path from a node in a graph to all other nodes 17

Selection sort u Putting the smallest element in place requires scanning all n elements in the list (and n-1 comparisons) u Putting the second smallest element in place requires scanning n- 1 elements in the list (and n-2 comparisons) u u Total number of comparisons is v (n-1) + (n-2) + (n-3) + + 1 v n(n-1)/2 v O(n 2 ) u There is no difference between the best case, worst case and average case 18

Quicksort u Best case: v Assume an ideal pivot v The average depth is O(log n) v Each level of processes at most n elements v The total amount of work done on average is the product, O(n log n) u Worst case: v Each time the pivot splits the list into one element and the rest v So, (n-1) + (n-2) + (n-3) + (1) v O(n 2 ) u Average case: v O(n log n) [but proving it is a bit beyond CS 109] 19

BF and DF traversals of a tree u A breadth first traversal visits the vertices of a tree level by level u A depth first traversal visit the vertices of a tree by going deep down one branch and exhausting it before popping up to visit another branch u What do they have in common? 20

BF and DF traversals of a tree u A breadth first traversal visits the vertices of a tree level by level u A depth first traversal visit the vertices of a tree by going deep down one branch and exhausting it before popping up to visit another branch u What do they have in common? u Both visit all the vertices of a tree u If a tree has V vertices, then both BF and DF are O(V) 21

Prim s algorithm u Initialize a tree with a single vertex, chosen arbitrarily from the graph u Grow the tree by adding one vertex. Do this by adding the minimum-weight edge chosen from the edges that connect the tree to vertices not yet in the tree u Repeat until all vertices are in the tree u How fast it goes depends on how you store the vertices of the graph u If you don t keep the vertices of the graph in some readily sorted order then the complexity is O(V 2 ) where the graph has V vertices 22

Kruskal s algorithm u Initialize a tree with a single edge of lowest weight u Add edges in increasing order of weight u If an edge causes a cycle, skip it and move on to the next highest weight edge u Repeat until all edges have been considered u Even without much thought on how the edges are stored (as long as we sort them once in the beginning), the complexity is O(E log E) where the graph has E edges 23

Dijkstra s algorithm u At each iteration we refine the distance estimate through a new vertex we re currently considering u In a graph with V vertices, a loose bound is O(V 2 ) 24

Recap u (Binary) search of a sorted list: O(log 2 n) u Selection sort: O(n 2 ) u Quicksort: O(n log n) u Breadth first traversal of a tree: O(V) u Depth first traversal of a tree: O(V) u Prim s algorithm to find the MST of a graph: O(V 2 ) u Kruskal s algorithm to find the MST of a graph: O(E log E) u Dijkstra s algorithm to find the shortest path from a node in a graph to all other nodes: O(V 2 ) 25

What do they have in common? u (Binary) search of a sorted list: O(log 2 n) u Selection sort: O(n 2 ) u Quicksort: O(n log n) u Breadth first traversal of a tree: O(V) u Depth first traversal of a tree: O(V) u Prim s algorithm to find the MST of a graph: O(V 2 ) u Kruskal s algorithm to find the MST of a graph: O(E log E) u Dijkstra s algorithm to find the shortest path from a node in a graph to all other nodes: O(V 2 ) 26

A knapsack problem u You have a knapsack that can carry 20 lbs u You have books of various weights u Is there a collection of books whose weight adds up to exactly 20 lbs? u Can you enumerate all collections of books that are 20 lbs Book Weight Book 1 2 Book 2 3 Book 3 13 Book 4 7 Book 5 10 Book 6 6 27

A knapsack problem u You have a knapsack that can carry 20 lbs u You have books of various weights u Is there a collection of books whose weight adds up to exactly 20 lbs? u Can you enumerate all collections of books that are 20 lbs Book Weight Book 1 2 Book 2 3 Book 3 13 Book 4 7 Book 5 10 Book 6 6 28

A knapsack problem u You have a knapsack that can carry 20 lbs u You have books of various weights u Is there a collection of books whose weight adds up to exactly 20 lbs? u Can you enumerate all collections of books that are 20 lbs Book Weight Book 1 2 Book 2 3 Book 3 13 Book 4 7 Book 5 10 Book 6 6 29

How many combinations are there? # of books Combinations 0 {} 1 1 {2} {3} {13} {7} {10} {6} 6 2 {2,3} {2,13} {2,7} {2,10} {2,6} {3,13} {3,7} {3,10} {3,6} {13,7} {13,10} {13,6} {7,10} {7,6} {10,6} 3 {2,3,13} {2,13,7} {2,7,10} {2,10,6} {2,3,7} {2,3,10} {2,3,6} {2,13,10} {2,13,6} {2,7,6} {3,13,7} {3,13,10} {3,13,6} {3,7,10} {3,7,6} {3,10,6} {13,7,10} {13,10,6} {13,7,6} {7,10,6} 4 {2,3,13,7} {2,3,13,10} {2,3,13,6} {2,3,7,10} {2,3,7,6} {2,3,10,6} {2,13,7,10} {2,13,10,6} {2,13,7,6} {2,7,10,6} {3,13,7,10} {3,13,10,6} {3,13,7,6} {3,7,10,6} {13,7,10,6} 5 {2,3,13,7,10} {3,13,7,10,6} {13,7,10,6,2} {7,10,6,2,3} {10,6,2,3,13} {6,2,3,13,7} 6 6 {2,3,13,7,10,6} 1 Combination s 15 20 15 TOTAL 64 30

How many combinations are there? # of books Combinations 0 {} 1 1 {2} {3} {13} {7} {10} {6} 6 2 {2,3} {2,13} {2,7} {2,10} {2,6} {3,13} {3,7} {3,10} {3,6} {13,7} {13,10} {13,6} {7,10} {7,6} {10,6} 3 {2,3,13} {2,13,7} {2,7,10} {2,10,6} {2,3,7} {2,3,10} {2,3,6} {2,13,10} {2,13,6} {2,7,6} {3,13,7} {3,13,10} {3,13,6} {3,7,10} {3,7,6} {3,10,6} {13,7,10} {13,10,6} {13,7,6} {7,10,6} 4 {2,3,13,7} {2,3,13,10} {2,3,13,6} {2,3,7,10} {2,3,7,6} {2,3,10,6} {2,13,7,10} {2,13,10,6} {2,13,7,6} {2,7,10,6} {3,13,7,10} {3,13,10,6} {3,13,7,6} {3,7,10,6} {13,7,10,6} 5 {2,3,13,7,10} {3,13,7,10,6} {13,7,10,6,2} {7,10,6,2,3} {10,6,2,3,13} {6,2,3,13,7} 6 6 {2,3,13,7,10,6} 1 Combination s 15 20 15 TOTAL 64 31

Subset sum problem u Given a set of integers and an integer s, does any non-empty subset sum to s? u {1, 4, 67, -1, 42, 5, 17} and s = 24 u {4, 3, 17, 12, 10, 20} and s = 19 Yes {4, 3, 12} No u If a set has N elements, it has 2 N subsets. u Checking the sum of each subset takes a maximum of N operations u To check all the subsets takes 2 N N operations u Some cleverness can reduce this by a bit (2 N becomes 2 N/2, but all known algorithms are exponential i.e. O(2 N N) 32

Big O notation u Characterize functions according to how fast they grow u The growth rate of a function is called the order of the function. (hence the O) u Big O notation usually only provides an upper bound on the growth rate of the function u Asymptotic growth f(x) = O(g(x)) as x -> if and only if there exists a positive number M such that f(x) M * g(x) for all x > x 0 33

What do they have in common? u (Binary) search of a sorted list: O(log 2 n) u Selection sort: O(n 2 ) u Quicksort: O(n log n) u Breadth first traversal of a tree: O(V) u Depth first traversal of a tree: O(V) u Prim s algorithm to find the MST of a graph: O(V 2 ) u Kruskal s algorithm to find the MST of a graph: O(E log E) u Dijkstra s algorithm to find the shortest path from a node in a graph to all other nodes: O(V 2 ) 34

Subset sum problem u Given a set of integers and an integer s, does any non-empty subset sum to s? u {1, 4, 67, -1, 42, 5, 17} and s = 24 u {4, 3, 17, 12, 10, 20} and s = 19 Yes {4, 3, 12} No u If a set has N elements, it has 2 N subsets. u Checking the sum of each subset takes a maximum of N operations u To check all the subsets takes 2 N N operations u Some cleverness can reduce this by a bit (2 N becomes 2 N/2, but all known algorithms are exponential i.e. O(2 N N) 35

Travelling salesperson problem u Given a list of cities and the distances between each pair of cities, what is the shortest possible route that visits each city exactly once and returns to the origin city? u Given a graph where edges are labeled with distances between vertices. Start at a specified vertex, visit all other vertices exactly once and return to the start vertex in such a way that sum of the edge weights is minimized u There are n! routes (a number on the order of n n - much bigger than 2 n ) u O(n!) 36

Enumerating permutations u List all permutations (i.e. all possible orderings) of n numbers u What is the order of an algorithm that can do this? 37

Enumerating permutations u List all permutations (i.e. all possible orderings) of n numbers u What is the order of an algorithm that can do this? u O(n!) 38

Analysis of problems u Study of algorithms illuminates the study of classes of problems u If a polynomial time algorithm exists to solve a problem then the problem is called tractable u If a problem cannot be solved by a polynomial time algorithm then it is called intractable u This divides problems into #?ree groups:known polynomial time algorithm but not yet proven to be intractable 39

Analysis of problems u Study of algorithms illuminates the study of classes of problems u If a polynomial time algorithm exists to solve a problem then the problem is called tractable u If a problem cannot be solved by a polynomial time algorithm then it is called intractable u This divides problems into three groups: v Problems with known polynomial time algorithms v Problems that are proven to have no polynomial-time algorithm v Problems with no known polynomial time algorithm but not yet proven to be intractable 40

Tractable and Intractable u Tractable problems (P) v v v Sorting a list Searching an unordered list Finding a minimum spanning tree in a graph u Might be (in)tractable v Subset sum: given a set of numbers, is there a subset that adds up to a given number? v Travelling salesperson: n cities, n! routes, find the shortest route u Intractable v Listing all permutations (all possible orderings) of n numbers These problems have no known polynomial time solution However no one has been able to prove that such a solution does not exist 41

Tractability and Intractability u Properties of problems (NOT properties of algorithms ) u Tractable: problem can be solved by a polynomial time algorithm (or something more efficient) u Intractable: problem cannot be solved by a polynomial time algorithm (all solutions are proven to be more inefficient than polynomial time) u Unknown: not known if the problem is tractable or intractable (no known polynomial time solution, no proof that a polynomial time solution does not exist) 42

Tractability and Intractability u Properties of problems (NOT properties of algorithms ) u Tractable: problem can be solved by a polynomial time algorithm (or something more efficient) u Intractable: problem cannot be solved by a polynomial time algorithm (all solutions are proven to be more inefficient than polynomial time) u Unknown: not known if the problem is tractable or intractable (no known polynomial time solution, no proof that a polynomial time solution does not exist) 43

Subset sum problem u Given a set of integers and an integer s, does any non-empty subset sum to s? u {1, 4, 67, -1, 42, 5, 17} and s = 24 u {4, 3, 17, 12, 10, 20} and s = 19 Yes {4, 3, 12} No u If a set has N elements, it has 2 N subsets. u Checking the sum of each subset takes a maximum of N operations u To check all the subsets takes 2 N N operations u Some cleverness can reduce this by a bit (2 N becomes 2 N/2, but all known algorithms are exponential) 44

Take away u Some simple problems seem to be very hard to solve because of exponential or factorial run-time u Not so simple in practice: Problem Naïve Solution(s) Best? Knapsack 2 N 2 N, pseudopolynomial Subset-sum N2 N 2 N/2, pseudopolynomial Travelling Salesman N! N 2 2 N 45

P and NP u P: set of problems that can be solved in polynomial time Easy to solve u Consider subset sum v No known polynomial time algorithm v However, if you give me a solution to the problem, it is easy for me to check if the solution is correct i.e. I can write a polynomial time algorithm to check if a given solution is correct u NP: set of problems for which a solution can be checked in polynomial time Easy to check 46

P=NP? uall problems in P are also in NP uare there any problems in NP that are not also in P? uin other words, is P = NP? ucentral open question in Computer Science 47

P=NP? u Why do we care? u Aside from being an important problem in computational theory, a proof either way would have profound implications for mathematics, cryptography, algorithm research, artificial intelligence, game theory, multimedia processing, philosophy, economics and many other fields. 48

Data Structures and Algorithms ua problem-solving view of computers and computing uorganizing information: sequences and trees uorganizing information: graphs uabstract data types: recursion Reading: St. Amant Ch. 4 Ch. 8 (partially) 49

Overview Problems Solution: Algorithms + Data Structures Pseudocode Low-level Low-level instructions Low-level instructions instructions Executions managed by Operating System Program Program Program Program Compile to CPU, Memory, Disk, I/O 50

Quiz 2 1. Which statement is false? (A) A graph may have multiple spanning trees (B) A graph may have multiple minimum spanning trees (C) Dijkstra s algorithm returns the same minimum spanning tree as Prim s algorithm (D) A tree has no cycles (E) Selection sort is a brute-force algorithm 2. Which statement is false? (A) There may be multiple paths between two nodes in a tree (B) Graphs may contain loops (C) A tree may be weighted or unweighted (D) Every tree is a graph (E) Quicksort is a divide-and-conquer algorithm 3. When sorting a list of n unique numbers, the Quicksort algorithm chooses the number a as the first pivot, and places it in index i of the list. What will be the index of the number a when the algorithm finishes? (A) 1 (B) i (C) a (D) n (E) Can t tell from the information provided 4. An unweighted, undirected tree has 16 edges. How many vertices does it have? (A) 16 (B) 15 (C) 8 (D) 17 (E) None of the choices A-D is correct 5. An unweighted, undirected graph has 5 vertices. What is the maximum number of edges this graph could have (assuming each edge connects two distinct vertices) (A) 5 (B) 14 (C) 10 (D) 25 (E) None of the choices A-D is correct 51

QUIZ #2 u http://bit.ly/2g8dh9s 52