Week 4 - Monday What did we talk about last time? Queues and stacks - - PowerPoint PPT Presentation

week 4 monday what did we talk about last time queues and
SMART_READER_LITE
LIVE PREVIEW

Week 4 - Monday What did we talk about last time? Queues and stacks - - PowerPoint PPT Presentation

Week 4 - Monday What did we talk about last time? Queues and stacks Non-recursive DFS Running time for BFS and DFS Determining bipartiteness An epidemic has struck the Island of Knights and Knaves Sick Knights always


slide-1
SLIDE 1

Week 4 - Monday

slide-2
SLIDE 2

 What did we talk about last time?  Queues and stacks  Non-recursive DFS  Running time for BFS and DFS  Determining bipartiteness

slide-3
SLIDE 3
slide-4
SLIDE 4
slide-5
SLIDE 5

An epidemic has struck the Island of Knights and Knaves

  • Sick Knights always lie
  • Sick Knaves always tell the truth
  • Healthy Knights and Knaves are unchanged

During the epidemic, a Nintendo Switch was stolen

There are only three possible suspects: Jacob, Karl, and Louie

They are good friends and know which one actually stole the Switch

Here is part of the trial's transcript:

  • Judge (to Jacob): What do you know about the theft?
  • Jacob:The thief is a Knave
  • Judge: Is he healthy or sick?
  • Jacob: He is healthy
  • Judge( to Karl): What do you know about Jacob?
  • Karl: Jacob is a Knave.
  • Judge: Healthy or sick?
  • Karl: Jacob is sick.

The judge thought a while and then asked Louie if he was the thief. Based on his yes or no answer, the judge decided who stole the Switch.

Who was the thief?

slide-6
SLIDE 6
slide-7
SLIDE 7

 Recall the definition of a bipartite graph:

  • A graph that can be partitioned into sets X and Y such that every

edge has one end in X and the other in Y

  • Or, you can think of nodes in set X as red and nodes in set Y as blue

 An alternative, equivalent definition of a bipartite graph is one

that has no odd cycles

slide-8
SLIDE 8

 Pick a node and color it blue  Color all of its neighbors red  Keep going, coloring neighbors, alternating which color you

use

  • Don't change the color of a node if it's already colored

 If there are any edges that start and end in the same color, it's

not bipartite

 This algorithm is essentially BFS where, when adding a node

to layer L[i + 1], we color it red when i + 1 is even and blue when i + 1 is odd

slide-9
SLIDE 9

 Let T be a breadth-first search tree, let x and y be nodes in T

belonging to layers Li and Lj respectively, and let (x, y) be an edge of G.

 Then i and j differ by at most 1.  Proof by contradiction:

  • Suppose i and j differ by more than one. Assume that i < j – 1. Since

x is in layer Li, the only nodes discovered from x belong to layers Li + 1 and earlier. If y is a neighbor of x, it should have been discovered and put in layer Li + 1 or earlier.

slide-10
SLIDE 10

 Let G be a connected graph, and let L1, L2, … be the layers

produced by BFS starting at node s. Exactly one of the following two things must hold:

  • 1. There is no edge of G joining two nodes of the same layer. In this

case G is a bipartite graph in which the nodes in even-numbered layers can be colored red, and the nodes in odd-numbered layers can be colored blue.

  • 2. There is an edge of G joining two nodes of the same layer. In this

case, G contains an odd-length cycle, and so it cannot be bipartite.

slide-11
SLIDE 11

 Case 1. No edges join two nodes in the same layer. By the

Layer Lemma, every edge of G joins nodes either in the same layer or in adjacent layers. Since no edges join nodes in the same layer, they always join nodes in adjacent layers, with different colorings. Thus, G is bipartite.

slide-12
SLIDE 12

 Case 2: At least one edge joins two nodes of the same layer, x

and y. Let x and y be in layer Lj. Let z be the node with the highest layer number possible while still being an ancestor of x and y in the BFS tree. Let z be in layer Li, where i < j. There is a cycle in G from z down to x, from x to y, and then from y back to z. The length of the cycle is (j – i) + 1 + (j – i) = 2(j – i) + 1, which is odd. Thus, the graph is not bipartite.

slide-13
SLIDE 13
slide-14
SLIDE 14

 It can be useful to extend the adjacency list representation for

directed graphs

 As before, for node u, we have a list of nodes that u connects

to

 But we add a second list of nodes that connect to u as well  In this way, we can efficiently determine all nodes that can

reach u

slide-15
SLIDE 15

 We can run DFS or BFS on a directed graph starting at s  Instead of getting a connected component, we will get a tree

  • f nodes reachable from s
  • Not all nodes will necessarily have a path back to s

 We can also run DFS on reversed edges, yielding the tree of

nodes that can reach s

slide-16
SLIDE 16

 A directed graph is strongly connected if, for all nodes u and

v, there is a path from u to v and a path from v to u

 Nodes u and v are mutually reachable if you can reach u from

v and v from u

 If u and v are mutually reachable and v and w are mutually

reachable, then u and w are mutually reachable

slide-17
SLIDE 17

 To see if a graph is strongly connected, pick a node s and run

BFS from it

 Then run BFS on the reversed edge graph  If both searches visit every node, it's strongly connected  A strong component containing s is the set of all nodes v

such that s and v are mutually reachable

 For any two nodes s and t in a directed graph, their strong

components are either identical or disjoint

slide-18
SLIDE 18
slide-19
SLIDE 19

 A directed acyclic graph (DAG) is a directed graph without

cycles in it

 These can be used to represent dependencies between tasks  An edge flows from the task that must be completed first to a

task that must come after

 A cycle in such a graph would mean there was a circular

dependency

 By running topological sort, we discover if a directed graph

has a cycle, as a side benefit

slide-20
SLIDE 20

 A topological sort gives an ordering of the tasks such that all

tasks are completed in dependency ordering

 In other words, no task is attempted before its prerequisite

tasks have been done

 There are usually multiple legal topological sorts for a given

DAG

slide-21
SLIDE 21

 Give a topological sort for the following DAG:  A F I C G K D J E H

A H E J D K G C F I

slide-22
SLIDE 22

 Create list L  Add all nodes with no incoming edges into set S  While S is not empty

  • Remove a node u from S
  • Add u to L
  • For each node v with an edge e from u to v

▪ Remove edge e from the graph ▪ If v has no other incoming edges, add v to S

 If the graph still has edges

  • Print "Error! Graph has a cycle"

 Otherwise

  • Return L
slide-23
SLIDE 23
slide-24
SLIDE 24
slide-25
SLIDE 25

 Greedy algorithms always take the next step that looks best

locally

  • Many problems do not have this property

 Sometimes this is referred to as optimal substructure

  • An optimal solution can be built by combining optimal solutions to

smaller problems

 The book proves that a greedy approach is optimal in two

ways:

  • The greedy algorithm stays ahead
  • An exchange argument
slide-26
SLIDE 26

 In the interval scheduling problem, some resource (a phone, a

motorcycle, a toilet) can only be used by one person at a time

 People make requests to use the resource for a specific time

interval [s, f]

 The goal is to schedule as many uses as possible  There's no preference based on who or when the resource is

used

slide-27
SLIDE 27

 We (magically) know it's going to be greedy  Which interval do we select next?

  • The one that starts earliest?

▪ No.

  • The shortest?

▪ Better, but still no.

  • The interval that overlaps with the fewest other intervals?

▪ Still no.

 A choice that leads to an optimal algorithm is choosing the

interval that finishes first

slide-28
SLIDE 28

 Interval scheduling can be done with a greedy algorithm  While there are still requests that are not in the compatible set

  • Find the request r that ends earliest
  • Add it to the compatible set
  • Remove all requests q that overlap with r

 Return the compatible set

slide-29
SLIDE 29
slide-30
SLIDE 30

 First of all, it's clear that our algorithm returns a compatible set of

requests, let's call it A

 Imagine some optimal solution O  If we can show that |A| = |O|, we are done  We want to show that our algorithm stays ahead of (does no

worse than) the algorithm that builds O

 Let i1, i2, … , ik be the requests in A, in the order added  Let j1, j2, …, jm be the requests in O, in left to right order  For any request r, let s(r) be its starting time and f(r) be its

finishing time

slide-31
SLIDE 31

 Proof by induction:

  • Basis case: r = 1

▪ Our algorithm starts with i1 being the request with the smallest finishing time. j1 cannot have a smaller one.

  • Induction step: Assume f(ir) ≤ f(jr) for r = x, where x ≥ 1

▪ Consider f(ix+1). Because intervals in O are ordered left to right, f(jx) ≤ s(jx+1). By the induction hypothesis, f(ix) ≤ f(jx). Thus, f(ix) ≤ s(jx+1). Since we always select a request with the smallest finish time, and jx+1 is a legal request to select, it must be the case that f(ix+1) ≤ f(jx+1). ∎

slide-32
SLIDE 32

 Proof by contradiction:

  • Suppose that A is not optimal. Then, O must have more requests. In
  • ther words, m > k. By the proof on the prior slide, f(ik) ≤ f(jk). Since

m > k, there is at least one request jk+1 in O. To be legal, jk+1 starts after jk ends, and thus also after ik ends. If we remove all of the requests that are not compatible with i1, i2, … ik, jk+1 must still be

  • available. But our greedy algorithm stopped with request ik, when

it's supposed to stop when there are no more requests left to consider: contradiction.

slide-33
SLIDE 33

 First, we sort the n requests in order of finishing time

  • The best comparison-based sort takes O(n log n)

 We scan through the n sorted requests again and make an array S

  • f length n such that S[i] contains the starting value of i, s(i)
  • O(n) time

 Our algorithm selects the first interval in our list sorted on

finishing time. We then move through array S until we find the first interval j such that s(j) ≥ the finishing time selected. We add

  • it. We continue the process until we have moved through the

entire array S.

  • O(n) time

 Total time: O(n log n)

slide-34
SLIDE 34
slide-35
SLIDE 35

 Optimal caching  Shortest paths

slide-36
SLIDE 36

 Michael Thornton talk:

  • How to get a Software Engineering Job
  • Tuesday, February 4, 4-6 p.m.
  • The Point 113

 Work on Assignment 2

  • Due Friday before midnight

 Read sections 4.3 and 4.4  Exam 1 is next Monday

  • Review will be on Friday