TDDB56 DALGOPT-D TDDB57 DALG-C – Lecture 11 – Graphs Graphs HT 200611.1 TDDB56 – DALGOPT-D...

27
Graphs HT 2006 11.1 TDDB56 DALGOPT-D TDDB57 DALG-C – Lecture 11 – Graphs TDDB56 – DALGOPT-D Algorithms and optimization Lecture 11 Graphs
  • date post

    22-Dec-2015
  • Category

    Documents

  • view

    283
  • download

    4

Transcript of TDDB56 DALGOPT-D TDDB57 DALG-C – Lecture 11 – Graphs Graphs HT 200611.1 TDDB56 – DALGOPT-D...

Graphs HT 2006 11.1

TDDB56 DALGOPT-D TDDB57 DALG-C – Lecture 11 – Graphs

TDDB56 – DALGOPT-DAlgorithms and optimization

Lecture 11

Graphs

Graphs HT 2006 11.2

TDDB56 DALGOPT-D TDDB57 DALG-C – Lecture 11 – Graphs

Content:

• Basics, ADT Graph, Representations

• Graph Searching

– Depth-First Search

– Breadth-First Search

– Example graph problems solved with search

• Directed Graphs

Graphs HT 2006 11.4

TDDB56 DALGOPT-D TDDB57 DALG-C – Lecture 11 – Graphs

Terminology

- End vertices of an edge- Edges incident on a vertex- Adjacent vertices (neighbors)- Degree of a vertex (undirected graph)- Indegree/outdegree (directed graph)- Path- Simple path- Cycle (loop)

Graphs HT 2006 11.5

TDDB56 DALGOPT-D TDDB57 DALG-C – Lecture 11 – Graphs

Terminology cont…

- G is connected iff there is a path between any two vertices

- G is a (free) tree iff there is a unique simple path between any two vertices; notice: root is not distinguished

- G is complete iff any two vertices are connected by an edge

- G´ = (V´, E´) is a subgraph of G = (V,E) iff V´ V and E´ E,

- A connected component of G is any maximal subgraph of G which is connected

Graphs HT 2006 11.6

TDDB56 DALGOPT-D TDDB57 DALG-C – Lecture 11 – Graphs

ADT Graph Defined differently by different authors.[Goodrich & Tamassia]:

• endVertices(e): an array of the two endvertices of e• opposite(v, e): the vertex opposite of v on e• areAdjacent(v, w): true iff v and w are adjacent• replace(v, x): replace element at vertex v with x• replace(e, x): replace element at edge e with x• insertVertex(o): insert a vertex storing element o• insertEdge(v, w, o): insert an edge (v,w) storing element o• removeVertex(v): remove vertex v (and its incident edges)• removeEdge(e): remove edge e• incidentEdges(v): edges incident to v• vertices(): all vertices in the graph; edges(): all edges in the graph

Graphs HT 2006 11.7

TDDB56 DALGOPT-D TDDB57 DALG-C – Lecture 11 – Graphs

Representation of graphs (rough idea)

Graph (V,E) with vertices {v1,…,vn}

represented as:• Adjacency matrix

M[i,j] = 1 if {vi,vj} in E, and 0 otherwise

• Adjacency list for each vi store a list of neighbors

Graphs HT 2006 11.8

TDDB56 DALGOPT-D TDDB57 DALG-C – Lecture 11 – Graphs

The rough idea may need refinement

• Vertices and edges stored as cells: may contain additional information

• V and E are sets: use a set representation (list, table, dictionary?)

• Incident edges of a vertex should be accessible

very efficiently.• Neighbors of a vertex should be accessible very

efficiently.

For refined variants of Adjacency list and Adjacency matrix see [G&T]

Graphs HT 2006 11.9

TDDB56 DALGOPT-D TDDB57 DALG-C – Lecture 11 – GraphsAdjacency List Structure [G&T]

Example graph___________________

List of vertices

Vertex objects

Lists of incident edges

Edge objects linked to respective vertices

List of edges

u

v

w

a b

a

u v w

b

Graphs HT 2006 11.10

TDDB56 DALGOPT-D TDDB57 DALG-C – Lecture 11 – Graphs

Adjacency Matrix Structure [G&T]

Example graph

Vertex objects augmented with integer keys

2D-array adjacency array

u

v

w

a b

2

1

0

210

a

u v w0 1 2

b

1

Graphs HT 2006 11.11

TDDB56 DALGOPT-D TDDB57 DALG-C – Lecture 11 – Graphs

Graph Searching

The problem : systematically visit the vertices of a graph reachable by edges from a given vertex.

Numerous applications:- robotics: routing, motion planning- solving optimization problems (see OPT part)Graph Searching Techniques:- Depth First Search (DFS)- Breadth First Search (BFS)

Graphs HT 2006 11.12

TDDB56 DALGOPT-D TDDB57 DALG-C – Lecture 11 – Graphs

DFS Algorithm

• Input: a graph G and a vertex s • Visits all vertices connected with s in time O(|V|+|E|)

procedure DepthFirstSearch(G =(V,E), s):for each v in V do explored(v) false;

RDFS(G,s)

procedure RDFS(G,s):explored(s) true;

previsit(s) {some operation on s before visiting its neighbors} for each neighbor t of s if not explored(t) then RDFS(G,t) postvisit(s) {some operation on s after visiting its neighbors}

Graphs HT 2006 11.13

TDDB56 DALGOPT-D TDDB57 DALG-C – Lecture 11 – Graphs

Example (notation of [G&T])

DB

A

C

E

DB

A

C

E

DB

A

C

E

discovery edgeback edge

A visited vertex

A unexplored vertex

unexplored edge

Graphs HT 2006 11.14

TDDB56 DALGOPT-D TDDB57 DALG-C – Lecture 11 – Graphs

Example (cont.)

DB

A

C

E

DB

A

C

E

DB

A

C

E

DB

A

C

E

Graphs HT 2006 11.15

TDDB56 DALGOPT-D TDDB57 DALG-C – Lecture 11 – Graphs

Some applications of DFS

•Checking if G is connected

•Finding connected components of G

•Finding a path between vertices

•Checking acyclicity/finding a cycle•Finding a spanning forest of G

Graphs HT 2006 11.16

TDDB56 DALGOPT-D TDDB57 DALG-C – Lecture 11 – Graphs

Breadth First Search (BFS)

• Input: a graph G and a vertex s• Visits all vertices connected with s in time O(|V|+|E|) in order of increasing distance to s

• Apply Queue!!procedure BFS (G=(V,E), s):

for each v in V do explored(v) false; S MakeEmptyQueue(); Enqueue(S,s); explored(s) true;

while not IsEmpty(S) dot Dequeue(S)visit(t)

for each neighbor v of t do if not explored(v) then explored(v) true; Enqueue(S,v)

Graphs HT 2006 11.17

TDDB56 DALGOPT-D TDDB57 DALG-C – Lecture 11 – Graphs

Example

CB

A

E

D

discovery edgecross edge

A visited vertex

A unexplored vertex

unexplored edge

L0

L1

F

CB

A

E

D

L0

L1

F

CB

A

E

D

L0

L1

F

© 2004 Goodrich, Tamassia

Graphs HT 2006 11.18

TDDB56 DALGOPT-D TDDB57 DALG-C – Lecture 11 – Graphs

Example (cont.)

CB

A

E

D

L0

L1

F

CB

A

E

D

L0

L1

FL2

CB

A

E

D

L0

L1

FL2

CB

A

E

D

L0

L1

FL2

© 2004 Goodrich, Tamassia

Graphs HT 2006 11.19

TDDB56 DALGOPT-D TDDB57 DALG-C – Lecture 11 – Graphs

Example (cont.)

CB

A

E

D

L0

L1

FL2

CB

A

E

D

L0

L1

FL2

CB

A

E

D

L0

L1

FL2

© 2004 Goodrich, Tamassia

Graphs HT 2006 11.20

TDDB56 DALGOPT-D TDDB57 DALG-C – Lecture 11 – Graphs

Some applications of BFS

•Checking if G is connected

•Finding connected components of G

•Finding a path of minimal length between vertices

•Checking acyclicity/finding a cycle•Finding a spanning forest of G

Compare with DFS !

Graphs HT 2006 11.21

TDDB56 DALGOPT-D TDDB57 DALG-C – Lecture 11 – Graphs

Directed Graphs

• Digraphs: edges are ordered pairs.• Digraphs have many applications, like

– Task scheduling– Route planning, …..

• Search algorithms apply, follow directions.• DFS applications for digraphs:

– Transitive closure but in O(n(m+n)) – Checking strong connectivity– Topological sort of a directed acyclic graph DAG

(scheduling)

Graphs HT 2006 11.22

TDDB56 DALGOPT-D TDDB57 DALG-C – Lecture 11 – Graphs

Transitive Closure

• Given a digraph G, the transitive closure of G is the digraph G* such that– G* has the same vertices

as G– if G has a directed path

from u to v (u v), G* has a directed edge from u to v

• The transitive closure provides reachability information about a digraph

B

A

D

C

E

B

A

D

C

E

G

G*© 2004 Goodrich, Tamassia

Graphs HT 2006 11.23

TDDB56 DALGOPT-D TDDB57 DALG-C – Lecture 11 – Graphs

• Pick a vertex v in G.• Perform a DFS from v in G.

– If there’s a w not visited, print “no”.

• Let G’ be G with edges reversed.• Perform a DFS from v in G’.

– If there’s a w not visited, print “no”.– Else, print “yes”.

• Running time: O(n+m).

Strong Connectivity Algorithm

G:

G’:

a

d

c

b

e

f

g

a

d

c

b

e

f

g

© 2004 Goodrich, Tamassia

Graphs HT 2006 11.24

TDDB56 DALGOPT-D TDDB57 DALG-C – Lecture 11 – Graphs

DAGs and Topological Ordering

• A directed acyclic graph (DAG) is a digraph that has no directed cycles

• A topological ordering of a digraph is a numbering

v1 , …, vn

of the vertices such that for every edge (vi , vj), we have i j

• Example: in a task scheduling digraph, a topological ordering a task sequence that satisfies the precedence constraints

Theorem

A digraph admits a topological ordering if and only if it is a DAG

B

A

D

C

E

DAG G

B

A

D

C

E

Topological ordering of

G

v1

v2

v3

v4 v5

© 2004 Goodrich, Tamassia

Graphs HT 2006 11.25

TDDB56 DALGOPT-D TDDB57 DALG-C – Lecture 11 – Graphs

Topological SortingUse modified DFS!procedure TopologicalSort(G):

nextnumber |G|for each vertex v in G do explored(v) false;for each vertex v in G do if not explored(v) then RDFS(G,v)

procedure RDFS(G,s):explored(s) true; for each neighbor t of s if not explored(t) then RDFS(G,t) number(s) nextnumber; nextnumber nextnumber-1

Graphs HT 2006 11.26

TDDB56 DALGOPT-D TDDB57 DALG-C – Lecture 11 – Graphs

Topological Sorting Example

9

© 2004 Goodrich, Tamassia

Graphs HT 2006 11.27

TDDB56 DALGOPT-D TDDB57 DALG-C – Lecture 11 – Graphs

Topological Sorting Example

8

9

© 2004 Goodrich, Tamassia

Graphs HT 2006 11.28

TDDB56 DALGOPT-D TDDB57 DALG-C – Lecture 11 – Graphs

Topological Sorting Example

2

7

4

8

56

1

3

9