CSCE 411 Design and Analysis of Algorithms Set

  • Slides: 56
Download presentation
CSCE 411 Design and Analysis of Algorithms Set 2: Brute Force & Exhaustive Search

CSCE 411 Design and Analysis of Algorithms Set 2: Brute Force & Exhaustive Search Prof. Jennifer Welch Fall 2014 CSCE 411, Fall 2014: Set 2 1

Brute Force & Exhaustive Search Straightforward way to solve a problem, based on the

Brute Force & Exhaustive Search Straightforward way to solve a problem, based on the definition of the problem itself; often involves checking all possibilities n Pros: n n n widely applicable easy good for small problem sizes Con: n often inefficient for large inputs CSCE 411, Fall 2014: Set 2 2

Brute Force Sorting n Selection sort n n Bubble sort n n n scan

Brute Force Sorting n Selection sort n n Bubble sort n n n scan array to find smallest element scan array to find second smallest element etc. scan array, swapping out-of-order neighbors continue until no swaps are needed Both take Θ(n 2) time in the worst case. CSCE 411, Fall 2014: Set 2 3

Brute Force Searching n Sequential search: n n go through the entire list of

Brute Force Searching n Sequential search: n n go through the entire list of n items to find the desired item Takes Θ(n) time in the worst case CSCE 411, Fall 2014: Set 2 4

Brute Force Searching in a Graph n n (Review graph terminology and basic algorithms)

Brute Force Searching in a Graph n n (Review graph terminology and basic algorithms) Breadth-first search: n n Depth-first search: n n go level by level in the graph go as deep as you can, then backtrack Both take Θ(V+E) time, where |V| is the number of vertices and |E| is the number of edges CSCE 411, Fall 2014: Set 2 5

Brute Force for Combinatorial Problems n Traveling Salesman Problem (TSP): n n n given

Brute Force for Combinatorial Problems n Traveling Salesman Problem (TSP): n n n given a set of n cities and distances between all pairs of cities, determine order for traveling to every city exactly once and returning home with minimum total distance Solution: Compute distance for all “tours” and choose the shortest. Takes Θ(n!) time (terrible!) CSCE 411, Fall 2014: Set 2 6

TSP Example 2 a 5 8 c b 7 1 3 d a, b,

TSP Example 2 a 5 8 c b 7 1 3 d a, b, c, d, a -> 18 a, b, d, c, a -> 11 a, c, b, d, a -> 23 a, d, b, c, a -> 23 a, d, c, b, a -> 18 Do we need to consider more tours? Something odd about the “distances”? CSCE 411, Fall 2014: Set 2 7

TSP Applications transportation and logistics (school buses, meals on wheels, airplane schedules, etc. )

TSP Applications transportation and logistics (school buses, meals on wheels, airplane schedules, etc. ) n drilling printed circuit boards n analyzing crystal structure n overhauling gas turbine engines n clustering data n tsp. gatech. edu/apps/index. html iris. gmu. edu/~khoffman/papers/trav_salesman. html CSCE 411, Fall 2014: Set 2 8

Brute Force for Combinatorial Problems n Knapsack Problem: n n n n There are

Brute Force for Combinatorial Problems n Knapsack Problem: n n n n There are n different items in a store Item i weighs wi pounds and is worth $vi A thief breaks in He can carry up to W pounds in his knapsack What should he take to maximize his haul? Solution: Consider every possible subset of items, calculate total value and total weight and discard if more than W; then choose remaining subset with maximum total value. Takes Ω(2 n) time CSCE 411, Fall 2014: Set 2 9

Knapsack Applications Least wasteful way to use raw materials n selecting capital investments and

Knapsack Applications Least wasteful way to use raw materials n selecting capital investments and financial portfolios n generating keys for the Merkle-Hellman cryptosystem n Knapsack Problems, H. Kellerer, U. Pferschy, D. Pisinger, Springer, 2004. CSCE 411, Fall 2014: Set 2 10

Knapsack Example n n n item 1: 7 lbs, $42 item 2: 3 lbs,

Knapsack Example n n n item 1: 7 lbs, $42 item 2: 3 lbs, $12 item 3: 4 lbs, $40 item 4: 5 lbs, $25 W = 10 need to check 16 possibilities subset total weight total value Ø 0 $0 {1} 7 $42 {2} 3 $12 {3} 4 $40 {4} 5 $25 {1, 2} 10 $54 {1, 3} 11 infeasible {1, 4} 12 infeasible {2, 3} 7 $52 {2, 4} 8 $37 etc. CSCE 411, Fall 2014: Set 2 11

Brute Force For Closest Pair n Closest-Pair Problem: n n Given n points in

Brute Force For Closest Pair n Closest-Pair Problem: n n Given n points in d-dimensional space, find the two that are closest Applications: n n n airplanes close to colliding which post offices should be closed which DNA sequences are most similar CSCE 411, Fall 2014: Set 2 12

Brute Force For Closest Pair n Brute-force Solution (for 2 -D case): n compute

Brute Force For Closest Pair n Brute-force Solution (for 2 -D case): n compute distances between all pairs of points n n sqrt((xi – xj)2 + (yi – yj)2) scan all distances to find smallest Running time: Θ(n 2), assuming each numerical operation is constant time (including square root? ) Improvements: n n drop the square root don’t compute distance for same 2 points twice CSCE 411, Fall 2014: Set 2 13

Brute Force For Convex Hull n Convex Hull Problem: Given a set of points

Brute Force For Convex Hull n Convex Hull Problem: Given a set of points in 2 -D, find the smallest convex polygon s. t. each point in the set is enclosed by the polygon n polygon: sequence of line segments that ends where it begins n convex: all points on a line segment between 2 points in the polygon are also in the polygon CSCE 411, Fall 2014: Set 2 14

Convex Hull Applications In computer graphics or robot planning, a simple way to check

Convex Hull Applications In computer graphics or robot planning, a simple way to check that two (possibly complicated) objects are not colliding is to compute their convex hulls and then check if the hulls intersect n Estimate size of geographic range of a species, based on observations (geocat. kew. org/about) n CSCE 411, Fall 2014: Set 2 15

Brute Force For Convex Hull n n Key idea for solution: line passing through

Brute Force For Convex Hull n n Key idea for solution: line passing through (xi, yi) and (xj, yj) is: ax + by = c where a = (yj – yi), b = (xi – xj), c = xi yj – yi xj The 2 pts are on the convex hull iff all other pts are on same side of this line: CSCE 411, Fall 2014: Set 2 16

Brute Force For Convex Hull n For each (distinct) pair of points in the

Brute Force For Convex Hull n For each (distinct) pair of points in the set, compute a, b, and c to define the line ax + by = c. n For each other point, plug its x and y coordinates into the expression ax + by – c. n If, for all the other points (x, y), ax + by – c has the same sign (all positive or all negative), then this pair of points is part of the convex hull. n Takes Θ(n 3) time. CSCE 411, Fall 2014: Set 2 17

Brute Force for Two Numeric Problems n n Problem: Compute an n Solution: Multiply

Brute Force for Two Numeric Problems n n Problem: Compute an n Solution: Multiply a by itself n-1 times n Takes Θ(n) time, assuming each multiplication takes constant time. Problem: multiply two n x n matrices A and B to create product matrix C n Solution: Follow the definition, which says the (i, j) entry of C is Σ aik*bkj , k = 1 to n n Takes Θ(n 3) time, assuming each basic operation takes constant time CSCE 411, Fall 2014: Set 2 18

Brute Force/Exhaustive Search Summary n n n sorting: selection sort, bubble sort searching: sequential

Brute Force/Exhaustive Search Summary n n n sorting: selection sort, bubble sort searching: sequential search graphs: BFS, DFS combinatorial problems: check all possibilities for TSP and knapsack geometric: check all possibilities for closest pair and for convex hull numerical: follow definition to compute an or matrix multiplication CSCE 411, Fall 2014: Set 2 19

Applications of DFS n Now let’s go more in depth on two applications of

Applications of DFS n Now let’s go more in depth on two applications of depth-first search n n topological sort finding strongly connected components of a graph CSCE 411, Fall 2014: Set 2 20

Depth-First Search n n Input: G = (V, E) for each vertex u in

Depth-First Search n n Input: G = (V, E) for each vertex u in V do n n mark u as unvisited parent[u] : = nil n parent[u] : = u // a root call recursive DFS(u) recursive. DFS(u): n n time : = 0 for each unvisited vertex u in V do n n mark u as visited time++ disc[u] : = time for each unvisited (og) neighbor v of u do n n CSCE 411, Fall 2014: Set 2 parent[v] : = u call recursive. DFS(v) time++ fin[u] : = time 21

Nested Intervals Let interval for vertex v be [disc[v], fin[v]]. n Fact: For any

Nested Intervals Let interval for vertex v be [disc[v], fin[v]]. n Fact: For any two vertices, either one interval precedes the other or one is enclosed in the other. n n n because recursive calls are nested Corollary: v is a descendant of u in the DFS forest if and only if v's interval is inside u's interval. CSCE 411, Fall 2014: Set 2 22

Classifying Edges Consider edge (u, v) in directed graph G = (V, E) w.

Classifying Edges Consider edge (u, v) in directed graph G = (V, E) w. r. t. DFS forest n tree edge: v is a child of u n back edge: v is an ancestor of u n forward edge: v is a descendant of u but not a child n cross edge: none of the above n CSCE 411, Fall 2014: Set 2 23

Example of Classifying Edges tree a forward b c tree cross back d in

Example of Classifying Edges tree a forward b c tree cross back d in DFS forest tree e tree f CSCE 411, Fall 2014: Set 2 not in DFS forest back 24

DFS Application: Topological Sort Given a directed acyclic graph (DAG), find a linear ordering

DFS Application: Topological Sort Given a directed acyclic graph (DAG), find a linear ordering of the vertices such that if (u, v) is an edge, then u precedes v. n DAG indicates precedence among events: n n n events are graph vertices, edge from u to v means event u has precedence over event v Partial order because not all events have to be done in a certain order CSCE 411, Fall 2014: Set 2 25

Precedence Example n Tasks that have to be done to eat breakfast: n get

Precedence Example n Tasks that have to be done to eat breakfast: n get glass, pour juice, get bowl, pour cereal, pour milk, get spoon, eat. Certain events must happen in a certain order (ex: get bowl before pouring milk) n For other events, it doesn't matter (ex: get bowl and get spoon) n CSCE 411, Fall 2014: Set 2 26

Precedence Example get glass pour juice get bowl pour cereal pour milk get spoon

Precedence Example get glass pour juice get bowl pour cereal pour milk get spoon eat breakfast Order: glass, juice, bowl, cereal, milk, spoon, eat. CSCE 411, Fall 2014: Set 2 27

Why Acyclic? Why must directed graph be acyclic for the topological sort problem? n

Why Acyclic? Why must directed graph be acyclic for the topological sort problem? n Otherwise, no way to order events linearly without violating a precedence constraint. n CSCE 411, Fall 2014: Set 2 28

Idea for Topological Sort Alg. n Run DFS on the input graph 1 2

Idea for Topological Sort Alg. n Run DFS on the input graph 1 2 3 4 5 eat juice glass 6 7 8 9 10 11 12 milk cereal 13 14 spoon bowl consider reverse order of finishing times: spoon, bowl, cereal, milk, glass, juice, eat CSCE 411, Fall 2014: Set 2 29

Topological Sort Algorithm input: DAG G = (V, E) 1. call DFS on G

Topological Sort Algorithm input: DAG G = (V, E) 1. call DFS on G to compute finish[v] for all vertices v 2. when each vertex's recursive call finishes, insert it on the front of a linked list 3. return the linked list Running Time: O(V+E) CSCE 411, Fall 2014: Set 2 30

Correctness of T. S. Algorithm Show that if (u, v) is an edge, then

Correctness of T. S. Algorithm Show that if (u, v) is an edge, then v finishes before u finishes. Thus the algorithm correctly orders u before v. u v Case 1: u is discovered before v is discovered. By the way DFS works, u does not finish until v is discovered and v finishes. disc(u) disc(v) fin(u) v u Then v finishes before u finishes. CSCE 411, Fall 2014: Set 2 31

Correctness of T. S. Algorithm Show that if (u, v) is an edge, then

Correctness of T. S. Algorithm Show that if (u, v) is an edge, then v finishes before u finishes. Thus the algorithm correctly orders u before v. u v Case 2: v is discovered before u is discovered. Suppose u finishes before v finishes (i. e. , u is nested inside v). disc(v) disc(u) fin(v) v u Show this is impossible… CSCE 411, Fall 2014: Set 2 32

Correctness of T. S. Algorithm v is discovered but not yet finished when u

Correctness of T. S. Algorithm v is discovered but not yet finished when u is discovered. n Then u is a descendant of v. n But that would make (u, v) a back edge and a DAG cannot have a back edge (the back edge would form a cycle). n Thus v finishes before u finishes. n CSCE 411, Fall 2014: Set 2 33

DFS Application: Strongly Connected Components Consider a directed graph. n A strongly connected component

DFS Application: Strongly Connected Components Consider a directed graph. n A strongly connected component (SCC) of the graph is a maximal set of vertices with a (directed) path between every pair of vertices n Problem: Find all the SCCs of the graph. n CSCE 411, Fall 2014: Set 2 34

What Are SCCs Good For? n Packaging software modules: n n n Construct directed

What Are SCCs Good For? n Packaging software modules: n n n Construct directed graph of which modules call which other modules A SCC is a set of mutually interacting modules Pack together those in the same SCC www. cs. princeton. edu/courses/archive/fall 07/cos 226/lectures. html n Solving the “ 2 -satisfiability problem”, which in turn is used to solve various geometric placement problems (graph labeling, VLSI design), as well as data clustering and scheduling wikipedia CSCE 411, Fall 2014: Set 2 35

SCC Example h f a e g c b d four SCCs CSCE 411,

SCC Example h f a e g c b d four SCCs CSCE 411, Fall 2014: Set 2 36

How Can DFS Help? Suppose we run DFS on the directed graph. n All

How Can DFS Help? Suppose we run DFS on the directed graph. n All vertices in the same SCC are in the same DFS tree. n But there might be several different SCCs in the same DFS tree. n n Example: start DFS from vertex h in previous graph CSCE 411, Fall 2014: Set 2 37

Main Idea of SCC Algorithm DFS tells us which vertices are reachable from the

Main Idea of SCC Algorithm DFS tells us which vertices are reachable from the roots of the individual trees n Also need information in the "other direction": is the root reachable from its descendants? n Run DFS again on the "transpose" graph (reverse the directions of the edges) n CSCE 411, Fall 2014: Set 2 38

SCC Algorithm input: directed graph G = (V, E) 1. call DFS(G) to compute

SCC Algorithm input: directed graph G = (V, E) 1. call DFS(G) to compute finishing times 2. compute GT // transpose graph 3. call DFS(GT), considering vertices in decreasing order of finishing times 4. each tree from Step 3 is a separate SCC of G CSCE 411, Fall 2014: Set 2 39

SCC Algorithm Example h f a e g c b d input graph -

SCC Algorithm Example h f a e g c b d input graph - run DFS CSCE 411, Fall 2014: Set 2 40

1 2 3 4 5 c d b 6 fin(f) fin(g) fin(h) fin(e) fin(a)

1 2 3 4 5 c d b 6 fin(f) fin(g) fin(h) fin(e) fin(a) fin(b) fin(c) fin(d) After Step 1 7 8 9 10 11 12 13 14 15 16 e a h g f Order of vertices for Step 3: f, g, h, a, e, b, d, c CSCE 411, Fall 2014: Set 2 41

After Step 2 h f a e g c b d transposed input graph

After Step 2 h f a e g c b d transposed input graph - run DFS with specified order of vertices CSCE 411, Fall 2014: Set 2 42

After Step 3 1 2 3 4 5 g h f 6 7 8

After Step 3 1 2 3 4 5 g h f 6 7 8 9 10 11 12 13 14 15 16 e a c b d SCCs are {f, h, g} and {a, e} and {b, c} and {d}. CSCE 411, Fall 2014: Set 2 43

Running Time of SCC Algorithm Step 1: O(V+E) to run DFS n Step 2:

Running Time of SCC Algorithm Step 1: O(V+E) to run DFS n Step 2: O(V+E) to construct transpose graph, assuming adjacency list rep. n Step 3: O(V+E) to run DFS again n Step 4: O(V) to output result n Total: O(V+E) n CSCE 411, Fall 2014: Set 2 44

Correctness of SCC Algorithm Proof uses concept of component graph, GSCC, of G. n

Correctness of SCC Algorithm Proof uses concept of component graph, GSCC, of G. n Vertices are the SCCs of G; call them C 1, C 2, …, Ck n Put an edge from Ci to Cj iff G has an edge from a vertex in Ci to a vertex in Cj n CSCE 411, Fall 2014: Set 2 45

Example of Component Graph {a, e} {f, h, g} {d} {b, c} based on

Example of Component Graph {a, e} {f, h, g} {d} {b, c} based on example graph from before CSCE 411, Fall 2014: Set 2 46

Component Graph is a DAG Claim: GSCC is a directed acyclic graph. n Why?

Component Graph is a DAG Claim: GSCC is a directed acyclic graph. n Why? n Suppose there is a cycle in GSCC such that component Ci is reachable from component Cj and vice versa. n Then Ci and Cj would not be separate SCCs. n CSCE 411, Fall 2014: Set 2 47

Key Intuition n By considering vertices in DFS on GT in decreasing order of

Key Intuition n By considering vertices in DFS on GT in decreasing order of finishing times, we are visiting vertices of GSCC in topological sort order! CSCE 411, Fall 2014: Set 2 48

Finding Source SCC n n Consider any component C during Step 1 (running DFS

Finding Source SCC n n Consider any component C during Step 1 (running DFS on G) Let d(C) be earliest discovery time of any vertex in C Let f(C) be latest finishing time of any vertex in C Lemma: If there is an edge in GSCC from component C' to component C, then f(C') > f(C). Thus SCC with latest finishing time is a source (no incoming edges). CSCE 411, Fall 2014: Set 2 49

Proof of Lemma C' C Case 1: d(C') < d(C). n Suppose x is

Proof of Lemma C' C Case 1: d(C') < d(C). n Suppose x is first vertex discovered in C'. n By the way DFS works, all vertices in C' and C become descendants of x. n Then x is last vertex in C' to finish and finishes after all vertices in C. n Thus f(C') > f(C). n CSCE 411, Fall 2014: Set 2 50

Proof of Lemma n n n C' C Case 2: d(C') > d(C). Suppose

Proof of Lemma n n n C' C Case 2: d(C') > d(C). Suppose y is first vertex discovered in C. By the way DFS works, all vertices in C become descendants of y. Then y is last vertex in C to finish. Since C' C, no vertex in C' is reachable from y, so y finishes before any vertex in C' is discovered. Thus f(C') > f(C). CSCE 411, Fall 2014: Set 2 51

SCC Algorithm is Correct Prove this theorem by induction on number of trees found

SCC Algorithm is Correct Prove this theorem by induction on number of trees found in Step 3 (running DFS on GT). n Hypothesis is that the first k trees found constitute k SCCs of G. n Basis: k = 0. No work to do ! n CSCE 411, Fall 2014: Set 2 52

SCC Algorithm is Correct Another case (to build intuition, not formally necessary): k =

SCC Algorithm is Correct Another case (to build intuition, not formally necessary): k = 1. n First node visited in DFS on GT is in an SCC that is a source in GSCC (no incoming edges) n So in GT, this SCC is a sink (no outgoing edges) n So the first tree found during the DFS on GT is a single SCC. n CSCE 411, Fall 2014: Set 2 53

SCC Algorithm is Correct n n Induction: Assume the first k trees constructed in

SCC Algorithm is Correct n n Induction: Assume the first k trees constructed in Step 3 (running DFS on GT) correspond to k SCCs; consider the (k+1)st tree. Let u be the root of the (k+1)st tree. u is part of some SCC, call it C. By the inductive hypothesis, C is not one of the k SCCs already found and so all vertices in C are unvisited when u is discovered. n By the way DFS works, all vertices in C become part of u's tree CSCE 411, Fall 2014: Set 2 54

SCC Algorithm is Correct n Show only vertices in C become part of u's

SCC Algorithm is Correct n Show only vertices in C become part of u's tree. Consider an outgoing edge from C. G T: G: u C z z C' C' w CSCE 411, Fall 2014: Set 2 w 55

SCC Algorithm is Correct n n n By lemma, in Step 1 (running DFS

SCC Algorithm is Correct n n n By lemma, in Step 1 (running DFS on G) the last vertex in C' finishes after the last vertex in C finishes. G: Thus in Step 3 (running DFS on GT), some vertex in C' is discovered before any vertex in C C' is discovered. Thus in Step 3, all of C', including w, is already visited before u's DFS tree starts CSCE 411, Fall 2014: Set 2 u C z w 56