8
Lecture 11 Searching I: Graph Search & Representations 6.006 Fall 2009 Lecture 11: Searching I: Graph Search and Representations Lecture Overview: Search 1 of 3 Graph Search Applications Graph Representations Introduction to breadth-first and depth-first search Readings CLRS 22.1-22.3, B.4 Graph Search Explore a graph e.g., find a path from start vertices to a desired vertex Recall: graph G =(V,E) V = set of vertices (arbitrary labels) E = set of edges i.e. vertex pairs (v,w) ordered pair = directed edge of graph unordered pair = undirected a b c d a b c UNDIRECTED DIRECTED e.g. V = {a,b,c,d} E = {{a,b},{a,c}, {b,c},{b,d}, {c,d}} V = {a,b,c} E = {(a,c),(b,c), (c,b),(b,a)} Figure 1: Example to illustrate graph terminology 1

Lecture 11: Searching I: Graph Search and Representationscourses.csail.mit.edu/6.006/fall09/lecture_notes/lecture11.pdf · Lecture 11 Searching I: Graph Search & Representations 6.006

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Lecture 11: Searching I: Graph Search and Representationscourses.csail.mit.edu/6.006/fall09/lecture_notes/lecture11.pdf · Lecture 11 Searching I: Graph Search & Representations 6.006

Lecture 11 Searching I: Graph Search & Representations 6.006 Fall 2009

Lecture 11: Searching I: Graph Search and

Representations

Lecture Overview: Search 1 of 3

• Graph Search

• Applications

• Graph Representations

• Introduction to breadth-first and depth-first search

Readings

CLRS 22.1-22.3, B.4

Graph Search

Explore a graph e.g., find a path from start vertices to a desired vertexRecall: graph G = (V,E)

• V = set of vertices (arbitrary labels)

• E = set of edges i.e. vertex pairs (v, w)

– ordered pair =⇒ directed edge of graph

– unordered pair =⇒ undirected

a b

c d

a

b c

UNDIRECTED DIRECTED

e.g. V = {a,b,c,d}E = {{a,b},{a,c}, {b,c},{b,d}, {c,d}}

V = {a,b,c}E = {(a,c),(b,c), (c,b),(b,a)}

Figure 1: Example to illustrate graph terminology

1

Page 2: Lecture 11: Searching I: Graph Search and Representationscourses.csail.mit.edu/6.006/fall09/lecture_notes/lecture11.pdf · Lecture 11 Searching I: Graph Search & Representations 6.006

Lecture 11 Searching I: Graph Search & Representations 6.006 Fall 2009

Applications:

There are many.

• web crawling (How Google finds pages)

• social networking (Facebook friend finder)

• computer networks (Routing in the Internet)shortest paths [next unit]

• solving puzzles and games

• checking mathematical conjectures

Pocket Cube:

Consider a 2× 2× 2 Rubik’s cube

Figure 2: Rubik’s Cube

• Configuration Graph:

– vertex for each possible state

– edge for each basic move (e.g., 90 degree turn) from one state to another

– undirected: moves are reversible

• Puzzle: Given initial state s, find a path to the solved state

• ] vertices = 8! · 38 = 264, 539, 520 (because there are 8 cubelets in arbitrary positions,and each cubelet has 3 possible twists)

Figure 3: Illustration of Symmetry

2

Page 3: Lecture 11: Searching I: Graph Search and Representationscourses.csail.mit.edu/6.006/fall09/lecture_notes/lecture11.pdf · Lecture 11 Searching I: Graph Search & Representations 6.006

Lecture 11 Searching I: Graph Search & Representations 6.006 Fall 2009

• can factor out 24-fold symmetry of cube: fix one cubelet

=⇒ 7! · 37 = 11, 022, 480

• in fact, graph has 3 connected components of equal size =⇒ only need to search inone

=⇒ 7! · 36 = 3, 674, 160

3

Page 4: Lecture 11: Searching I: Graph Search and Representationscourses.csail.mit.edu/6.006/fall09/lecture_notes/lecture11.pdf · Lecture 11 Searching I: Graph Search & Representations 6.006

Lecture 11 Searching I: Graph Search & Representations 6.006 Fall 2009

“Geography” of configuration graph

. . . “breadth-firsttree”

possible first moves

reachable in two steps but not one

Figure 4: Breadth-First Tree

] reachable configurations

distance 90◦ turns 90◦ & 180◦ turns0 1 11 6 92 27 543 120 3214 534 1,8475 2,256 9,9926 8,969 50,1367 33,058 227,5368 114,149 870,0729 360,508 1,887,74810 930,588 623,80011 1,350,852 2,644 ← diameter12 782,53613 90,28014 276 ← diameter

3,674,160 3,674,160Wikipedia Pocket Cube

Cf. 3× 3× 3 Rubik’s cube: ≈ 1.4 trillion states; diameter is unknown! ≤ 26

4

Page 5: Lecture 11: Searching I: Graph Search and Representationscourses.csail.mit.edu/6.006/fall09/lecture_notes/lecture11.pdf · Lecture 11 Searching I: Graph Search & Representations 6.006

Lecture 11 Searching I: Graph Search & Representations 6.006 Fall 2009

Representing Graphs: (data structures)

Adjacency lists:

Array Adj of | V | linked lists

• for each vertex uεV, Adj[u] stores u’s neighbors, i.e., {vεV | (u, v)εE}. (u, v) arejust outgoing edges if directed. (See Fig. 5 for an example)

• in Python: Adj = dictionary of list/set values and vertex = any hashable object (e.g.,int, tuple)

• advantage: multiple graphs on same vertices

a

b c

a

b

c

c

c

b

a

Adj

Figure 5: Adjacency List Representation (Error: edge in graph on left should be from b toa, not a to b)

Object-oriented variations:

• object for each vertex u

• u.neighbors = list of neighbors i.e., Adj[u]

Incidence Lists:

• can also make edges objects (see Figure 6)

• u.edges = list of (outgoing) edges from u.

• advantage: storing data with vertices and edges without hashing

5

Page 6: Lecture 11: Searching I: Graph Search and Representationscourses.csail.mit.edu/6.006/fall09/lecture_notes/lecture11.pdf · Lecture 11 Searching I: Graph Search & Representations 6.006

Lecture 11 Searching I: Graph Search & Representations 6.006 Fall 2009

e.a e.be

Figure 6: Edge Representation

Representing Graphs: contd.

The above representations are good for for sparse graphs where | E |� (| V |)2. Thistranslates to a space requirement = Θ(V + E) (Don’t bother with | . | ’s inside O/Θ).

Adjacency Matrix:

• assume V = {1, 2, . . . , |v|} (number vertices)

• A = (aij) = |V | × |V | matrix where i = row and j = column, and

aij =

{1 if (i, j) ε Eφ otherwise

See Figure 7.

• good for dense graphs where | E |≈ (| V |)2

• space requirement = Θ(V 2)

• cool properties like A2 gives length-2 paths and Google PageRank ≈ A∞

• but we’ll rarely use it Google couldn’t; | V |≈ 20 billion =⇒ (| V |)2 ≈ 4.1020

[50,000 petabytes]

a

b c

A = ( (0 0 11 0 10 1 0

1 2 31

2

3

Figure 7: Matrix Representation (Error: edge in graph on left should be from b to a, not ato b)

6

Page 7: Lecture 11: Searching I: Graph Search and Representationscourses.csail.mit.edu/6.006/fall09/lecture_notes/lecture11.pdf · Lecture 11 Searching I: Graph Search & Representations 6.006

Lecture 11 Searching I: Graph Search & Representations 6.006 Fall 2009

Implicit Graphs:

Adj(u) is a function or u.neighbors/edges is a method =⇒ “no space” (just what you neednow)

High level overview of next two lectures:

Breadth-first search

Levels like “geography”

. . .

frontier

s

Figure 8: Illustrating Breadth-First Search

• frontier = current level

• initially {s}

• repeatedly advance frontier to next level, careful not to go backwards to previous level

• actually find shortest paths i.e. fewest possible edges

Depth-first search

This is like exploring a maze.

• e.g.: (left-hand rule) - See Figure 9

• follow path until you get stuck

• backtrack along breadcrumbs until you reach an unexplored edge

7

Page 8: Lecture 11: Searching I: Graph Search and Representationscourses.csail.mit.edu/6.006/fall09/lecture_notes/lecture11.pdf · Lecture 11 Searching I: Graph Search & Representations 6.006

Lecture 11 Searching I: Graph Search & Representations 6.006 Fall 2009

• recursively explore it

• careful not to repeat a vertex

s

Figure 9: Illustrating Depth-First Search

8