233-234233-234 sedgewick & wayne (2004); chazelle (2005) sedgewick & wayne (2004); chazelle...

82
233-234 233-234 Sedgewick & Wayne (2004); Sedgewick & Wayne (2004); Chazelle (2005) Chazelle (2005) [email protected] [email protected] n.edu n.edu

Post on 20-Dec-2015

219 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

233-234233-234233-234233-234

Sedgewick & Wayne (2004); Chazelle (2005)Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005)Sedgewick & Wayne (2004); Chazelle (2005)

[email protected]@[email protected]@cs.princeton.edu

Page 2: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

computation

theory experimentation

Page 3: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

computation

theory experimentation

Page 4: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

computation

theory experimentation

Page 5: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

computation

theoryexperimenta

tion

Moore’s LawMoore’s Law

Page 6: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

No Moore’s Law No Moore’s Law there !there !No Moore’s Law No Moore’s Law there !there !

Inverse Moore’s Inverse Moore’s Law?Law?Inverse Moore’s Inverse Moore’s Law?Law?

Page 7: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

1. Power of algorithms

Page 8: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

2. Duality: data & programs

3. Recursion

1. Power of algorithms

Page 9: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

A program in C

/**/char q='"',*a="*//**/char q='%c',*a=%c%s%c*/};)b(stup;]d[b=]d-472[b)--d(elihw;)q,a,q,q,2+a,b(ftnirps;)b(stup{)(niam;731=d tni;]572[b,",b[275];int d=137;main(){puts(b);sprintf(b,a+2,q,q,a,q);while(d--)b[274-d]=b[d];puts(b);}/*c%s%c%=a*,'c%'=q rahc/**//*"=a*,'"'=q rahc/**/

(By Dan Hoey)

Page 10: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

char*s="char*s=%c%s%c;void main(){printf(s,34,s,34);}";void main(){printf(s,34,s,34);}

A program in C

Page 11: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

<?php $s='<?php $s=%c%s%c; printf($s,39,$s,39); ?>'; printf ($s,39,$s,39); ?>

A program in php

Page 12: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

$s="$s=%c%s%c;printf$s,34,$s,34;";printf$s,34,$s,34;

A program in perl

Page 13: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

l='l=%s;print l%%`l`';print l%`l`

A program in python

Page 14: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

class S{public static void main(String[]a){String s="class S{public static void main(String[]a){String s=;char c=34;System.out.println(s.substring(0,52)+c+s+c+s.substring(52));}}";char c=34;System.out.println(s.substring(0,52)+c+s+c+s.substring(52));}}

A program in Java

Output = ?

class S{public static void main(String[]a){String s="class S{public static void main(String[]a){String s=;char c=34;System.out.println(s.substring(0,52)+c+s+c+s.substring(52));}}";char c=34;System.out.println(s.substring(0,52)+c+s+c+s.substring(52));}}

Page 15: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

Why does Schroedinger hate cats?

Print next statement twice

Output = ?

Why does Schroedinger hate cats?

Why does Schroedinger hate cats?

A

B

AB BB

Page 16: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

Print next statement twice

Output = ?

Set B=A

AA AA

Print next statement twice

Print next statement twice

Print next statement twice

Page 17: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

string of symbols

data command

Page 18: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu
Page 19: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

Rogozhin (1996) : 24 states

input data output data

program

data

Babbage (1820)

Page 20: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

Print next statement twice

Print next statement twice

Why does Schroedinger hate cats?

Print next statement twice

Page 21: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

Print next statement twice

Print next statement twice

duality

recursion

Page 22: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

duality + recursion

Self-reproduction

=

Page 23: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

http://www.accessexcellence.org/RC/VL/GG/dna_replicating.html

duality

recursion

gene - protein

dble-stranded

Page 24: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

What is the difference between classical math and computer science ?

Page 25: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

Jos Leys

Page 26: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu
Page 27: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

Protein Interaction Network

Jeong et al

Page 28: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

Adjacency matrix

Page 29: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

Adjacency lists

Page 30: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

public class Graph { private int V; private Node[] adj; private int[] degree;

private static class Node { int vertex; Node next; Node(int v, Node next) { this.vertex = v; this.next = next; } }

Adjacency List Implementation

vertex next

Node

Page 31: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

public class Graph { private int V; private Node[] adj; private int[] degree;

private static class Node { int vertex; Node next; Node(int v, Node next) { this.vertex = v; this.next = next; } }

public Graph(int V) { this.V = V; adj = new Node[V]; degree = new int[V]; }

Adjacency List Implementation

graph on V verticeswith no edges

Node

NodeNodeNode

NodeNode

Page 32: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

public int V() { return V; }

public void addEdge(int v, int w) { adj[v] = new Node(w, adj[v]); adj[w] = new Node(v, adj[w]); degree[v]++; degree[w]++;}

Adjacency List Implementation

# vertices

add w to v's adjacency listadd v to w's adjacency list

v

w

x zy

Page 33: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

public int V() { return V; }

public void addEdge(int v, int w) { adj[v] = new Node(w, adj[v]); adj[w] = new Node(v, adj[w]); degree[v]++; degree[w]++;}

Adjacency List Implementation

# vertices

add w to v's adjacency listadd v to w's adjacency list

v

w

x zy

Page 34: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

public int V() { return V; }

public void addEdge(int v, int w) { adj[v] = new Node(w, adj[v]); adj[w] = new Node(v, adj[w]); degree[v]++; degree[w]++;}

Adjacency List Implementation

# vertices

add w to v's adjacency listadd v to w's adjacency list

v

w

x zy

Page 35: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

public int V() { return V; }

public void addEdge(int v, int w) { adj[v] = new Node(w, adj[v]); adj[w] = new Node(v, adj[w]); degree[v]++; degree[w]++;}

Adjacency List Implementation

# vertices

add w to v's adjacency listadd v to w's adjacency list

v

w

x zy

w

Page 36: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

public int V() { return V; }

public void addEdge(int v, int w) { adj[v] = new Node(w, adj[v]); adj[w] = new Node(v, adj[w]); degree[v]++; degree[w]++;}

Adjacency List Implementation

# vertices

add w to v's adjacency listadd v to w's adjacency list

v

w

x zy

w

Page 37: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

public int V() { return V; }

public void addEdge(int v, int w) { adj[v] = new Node(w, adj[v]); adj[w] = new Node(v, adj[w]); degree[v]++; degree[w]++;}

Adjacency List Implementation

# vertices

add w to v's adjacency listadd v to w's adjacency list

v

w

x zy

w

Page 38: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

public int V() { return V; }

public void addEdge(int v, int w) { adj[v] = new Node(w, adj[v]); adj[w] = new Node(v, adj[w]); degree[v]++; degree[w]++;}

Adjacency List Implementation

# vertices

add w to v's adjacency listadd v to w's adjacency list

v

w

zyw x

Page 39: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

public int[] neighbors(int v) { int[] neighbors = new int[degree[v]]; int i = 0; for (Node x = adj[v]; x != null; x = x.next) neighbors[i++] = x.vertex; return neighbors;}

Return list of neighbors of v as an array

dca bv

neighborsadj

null

a b c d

i= 0 i= 1 i= 2 i= 3

x x

Page 40: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu
Page 41: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu
Page 42: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

1. Birds eat the bread crumbs

2. They don’t

random walk

DFS/BFS

Hansel & Gretel

Page 43: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu
Page 44: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

Diffusion equation

Page 45: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

Diffusion equation

Normal distribution

Random walk

Page 46: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu
Page 47: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

With bread crumbs one canfind exit in time proportional

to V+E DFS/BFS

Hansel & Gretel

Page 48: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

Undirected Depth First Search

Adjacency Lists

A: F C B GB: AC: AD: F EE: G F DF: A E D:G: E A:H: I:I: H:

F

A

B C G

D E

H I

Page 49: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

visit(A)

(A, F) (A, C) (A, B) (A, G)

Undirected Depth First Search

F

A

B C G

D E

H I

Stack

F newly discovered

Page 50: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

visit(A)

(A, F) (A, C) (A, B) (A, G)

Undirected Depth First Search

F

A

B C G

D E

H I

Stack

visit(F)

(F, A) (F, E) (F, D)

A alreadymarked

Page 51: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

visit(A)

(A, F) (A, C) (A, B) (A, G)

Undirected Depth First Search

F

A

B C G

D E

H I

Stack

visit(F)

(F, A) (F, E) (F, D)

E newly discovered

E

Page 52: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

visit(A)

(A, F) (A, C) (A, B) (A, G)

Undirected Depth First Search

F

A

B C G

D E

H I

Stack

visit(F)

(F, A) (F, E) (F, D)

visit(E)

(E, G) (E, F) (E, D)

G newly discovered

G

Page 53: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

visit(A)

(A, F) (A, C) (A, B) (A, G)

Undirected Depth First Search

F

A

B C G

D E

H I

Stack

visit(F)

(F, A) (F, E) (F, D)

visit(E)

(E, G) (E, F) (E, D)

visit(G)

(G, E) (G, A)

E alreadymarked

Page 54: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

visit(A)

(A, F) (A, C) (A, B) (A, G)

Undirected Depth First Search

F

A

B C G

D E

H I

Stack

visit(F)

(F, A) (F, E) (F, D)

visit(E)

(E, G) (E, F) (E, D)

visit(G)

(G, E) (G, A)

A alreadymarked

Page 55: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

visit(A)

(A, F) (A, C) (A, B) (A, G)

Undirected Depth First Search

F

A

B C G

D E

H I

Stack

visit(F)

(F, A) (F, E) (F, D)

visit(E)

(E, G) (E, F) (E, D)

visit(G)

(G, E) (G, A)

Finished G

Page 56: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

visit(A)

(A, F) (A, C) (A, B) (A, G)

Undirected Depth First Search

F

A

B C G

D E

H I

Stack

visit(F)

(F, A) (F, E) (F, D)

visit(E)

(E, G) (E, F) (E, D)

F alreadymarked

Page 57: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

visit(A)

(A, F) (A, C) (A, B) (A, G)

Undirected Depth First Search

F

A

B C G

D E

H I

Stack

visit(F)

(F, A) (F, E) (F, D)

visit(E)

(E, G) (E, F) (E, D)

D newly discovered

D

Page 58: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

visit(A)

(A, F) (A, C) (A, B) (A, G)

Undirected Depth First Search

F

A

B C G

D E

H I

Stack

visit(F)

(F, A) (F, E) (F, D)

visit(E)

(E, G) (E, F) (E, D)

visit(D)

(D, F) (D, E)

F alreadymarked

Page 59: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

visit(A)

(A, F) (A, C) (A, B) (A, G)

Undirected Depth First Search

F

A

B C G

D E

H I

Stack

visit(F)

(F, A) (F, E) (F, D)

visit(E)

(E, G) (E, F) (E, D)

visit(D)

(D, F) (D, E)

E alreadymarked

Page 60: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

visit(A)

(A, F) (A, C) (A, B) (A, G)

Undirected Depth First Search

F

A

B C G

D E

H I

Stack

visit(F)

(F, A) (F, E) (F, D)

visit(E)

(E, G) (E, F) (E, D)

visit(D)

(D, F) (D, E)

Finished D

Page 61: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

visit(A)

(A, F) (A, C) (A, B) (A, G)

Undirected Depth First Search

F

A

B C G

D E

H I

Stack

visit(F)

(F, A) (F, E) (F, D)

visit(E)

(E, G) (E, F) (E, D)

Finished E

Page 62: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

visit(A)

(A, F) (A, C) (A, B) (A, G)

Undirected Depth First Search

F

A

B C G

D E

H I

Stack

visit(F)

(F, A) (F, E) (F, D)

D alreadymarked

Page 63: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

visit(A)

(A, F) (A, C) (A, B) (A, G)

Undirected Depth First Search

F

A

B C G

D E

H I

Stack

visit(F)

(F, A) (F, E) (F, D)

Finished F

Page 64: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

visit(A)

(A, F) (A, C) (A, B) (A, G)

Undirected Depth First Search

F

A

B C G

D E

H I

Stack

C newly discovered

C

Page 65: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

visit(A)

(A, F) (A, C) (A, B) (A, G)

Undirected Depth First Search

F

A

B C G

D E

H I

Stack

visit(C)

(C, A)

A alreadymarked

Page 66: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

visit(A)

(A, F) (A, C) (A, B) (A, G)

Undirected Depth First Search

F

A

B C G

D E

H I

Stack

visit(C)

(C, A)

Finished C

Page 67: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

visit(A)

(A, F) (A, C) (A, B) (A, G)

Undirected Depth First Search

F

A

B C G

D E

H I

Stack

B newly discovered

B

Page 68: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

visit(A)

(A, F) (A, C) (A, B) (A, G)

Undirected Depth First Search

F

A

B C G

D E

H I

Stack

visit(B)

(B, A)

A alreadymarked

Page 69: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

visit(A)

(A, F) (A, C) (A, B) (A, G)

Undirected Depth First Search

F

A

B C G

D E

H I

Stack

visit(B)

(B, A)

Finished B

Page 70: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

visit(A)

(A, F) (A, C) (A, B) (A, G)

Undirected Depth First Search

F

A

B C G

D E

H I

Stack

G alreadyfinished

Page 71: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

visit(A)

(A, F) (A, C) (A, B) (A, G)

Undirected Depth First Search

F

A

B C G

D E

H I

Stack

Finished A

Page 72: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

Undirected Depth First Search

F

A

B C G

D E

H I

Stack

Page 73: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

Undirected Depth First Search

F

A

B C G

D E

H I

Stack

visit(H)

(H, I)

I newly discovered

I

Page 74: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

Undirected Depth First Search

F

A

B C G

D E

H I

Stack

visit(H)

(H, I)

visit(I)

(I, H)

H alreadymarked

Page 75: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

Undirected Depth First Search

F

A

B C G

D E

H I

Stack

visit(H)

(H, I)

visit(I)

(I, H)

Finished I

Page 76: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

Undirected Depth First Search

F

A

B C G

D E

H I

Stack

visit(H)

(H, I)

FinishedH

Page 77: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

Undirected Depth First Search

F

A

B C G

D E

H I

Stack

Page 78: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

public class DFSearcher { private static int UNMARKED = -1; private int[] cc; private int components;

public DFSearcher(Graph G) { // next slide }

public int component(int v) { return cc[v]; } public int components() { return components; }

Connected components of a graph G.

* For each vertex, give id number corresponding to component.

Page 79: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

public DFSearcher(Graph G) { components = 0; cc = new int[G.V()]; for (int v = 0; v < G.V(); v++) cc[v] = UNMARKED; for (int v = 0; v < G.V(); v++) { if (cc[v] == UNMARKED) { dfs(G, v); components++; } } }

private void dfs(Graph G, int v) { cc[v] = components; int[] neighbors = G.neighbors(v); for (int i = 0; i < neighbors.length; i++) { int w = neighbors[i]; if (cc[w] == UNMARKED) dfs(G, w); } }

v

c

b

d

a

ba c dw

0

Page 80: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

Is graph connected?

Page 81: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu

Depth First Search

Page 82: 233-234233-234 Sedgewick & Wayne (2004); Chazelle (2005) Sedgewick & Wayne (2004); Chazelle (2005) chazelle@cs.princeton.educhazelle@cs.princeton.edu