CS3000:&Algorithms&&&Data Jonathan&Ullman - - PowerPoint PPT Presentation

cs3000 algorithms data jonathan ullman
SMART_READER_LITE
LIVE PREVIEW

CS3000:&Algorithms&&&Data Jonathan&Ullman - - PowerPoint PPT Presentation

CS3000:&Algorithms&&&Data Jonathan&Ullman Lecture&9:& Graphs Graph&Traversals:&DFS Topological&Sort Feb&5,&2020 Whats&Next Whats&Next Graph&Algorithms:


slide-1
SLIDE 1

CS3000:&Algorithms&&&Data Jonathan&Ullman

Lecture&9:&

  • Graphs
  • Graph&Traversals:&DFS
  • Topological&Sort

Feb&5,&2020

slide-2
SLIDE 2

What’s&Next

slide-3
SLIDE 3

What’s&Next

  • Graph&Algorithms:
  • Graphs: Key&Definitions,&Properties,&Representations
  • Exploring&Graphs: Breadth/Depth&First&Search
  • Applications:&Connectivity,&Bipartiteness,&Topological&Sorting
  • Shortest&Paths:
  • Dijkstra
  • BellmanSFord&(Dynamic&Programming)
  • Minimum&Spanning&Trees:
  • Borůvka,&Prim,&Kruskal
  • Network&Flow:
  • Algorithms
  • Reductions&to&Network&Flow
slide-4
SLIDE 4

Graphs

slide-5
SLIDE 5

Graphs:&Key&Definitions

  • Definition:&A&directed&graph ! = #, %
  • # is&the&set&of&nodes/vertices
  • % ⊆ #×# is&the&set&of&edges
  • An&edge&is&an&ordered&( = ), * “from&) to&*”
  • Definition: An&undirected&graph ! = #, %
  • Edges&are&unordered&( = ), * “between&) and&*”
  • Simple&Graph:
  • No&duplicate&edges
  • No&selfSloops&( = ), )

Is

To

slide-6
SLIDE 6

Ask&the&Audience

  • How&many&edges&can&there&be&in&a&simple

directed/undirected graph?

n

Iv I

  • f

nodes

m

IE l

  • f edges

Directed

E

m

e

n

n

l

Graph

worked

0 e

m

e

n

L

Graph

m

0hr7

slide-7
SLIDE 7

Graphs&Are&Everywhere

  • Transportation&networks
  • Communication&networks
  • WWW
  • Biological&networks
  • Citation&networks
  • Social&networks
slide-8
SLIDE 8

Paths/Connectivity

  • A&path is&a&sequence&of&consecutive&edges&in&%
  • + =

), ,- , ,-, ,. , ,., ,/ , … , ,12-,*

  • + = ) − ,- − ,. − ,/ − ⋯− ,12- − *
  • The&length of&the&path&is&the&#&of&edges
  • An&undirected graph&is&connected if&for&every&two&

vertices&), * ∈ #,&there&is&a&path&from&) to&*

  • A&directed graph&is&strongly&connected if&for&every&

two&vertices&), * ∈ #,&there&are&paths&from&) to&* and&from&* to&)

s

w

Kwok

slide-9
SLIDE 9

Cycles

  • A&cycle is&a&path&*- − *. − ⋯ − *1 − *- and&

*-, …, *1 are&distinct

ten D

slide-10
SLIDE 10

Ask&the&Audience

  • Suppose&an&undirected&graph&! is&connected
  • True/False?&&! has&at&least&6 − 1 edges

O_0

O

d

d

to

Typically

be assume graphs are

connected

The

m Sun

slide-11
SLIDE 11

Ask&the&Audience

  • Suppose&an&undirected&graph&! has&6 − 1 edges
  • True/False?&&! is&connected

simple

A

Is

a

n l

edges

not

connected

slide-12
SLIDE 12

Trees

  • A&simple&undirected&graph&! is&a&tree if:
  • ! is&connected
  • ! contains&no&cycles
  • Theorem: any&two&of&the&following&implies&the&third
  • ! is&connected
  • ! contains&no&cycles
  • ! has&= 6 − 1 edges
slide-13
SLIDE 13

Trees

  • Rooted&tree:&choose&a&root&node&8 and&orient&edges&

away&from&8

  • Models&hierarchical&structure

O

l

slide-14
SLIDE 14

Phylogeny&Trees

slide-15
SLIDE 15

Parse&Trees

if (A[x]==2) then (322 + (a*64 +12)/8) else fibonacci(n)

if@then@else == array&ref 2 A x power 32 2 + / + 12 * a 64 8 fn@call fibonacci n

slide-16
SLIDE 16

Representing&a&Graph

slide-17
SLIDE 17

Adjacency&Matrices

  • The&adjacency&matrix of&a&graph&! = #, % with&6

nodes&is&the&matrix&9 1:6;, 1:6 where 9 <, = =;>1;;;;; <, = ∈ % ;0;;;;; <, = ∉ %

A 1 2 3 4 1 1 1 2 1 3 4 1

Cost Space:&Θ #. Lookup:&Θ 1 time List&Neighbors:&Θ # time

2 1 3 4

na

m

mom

G

n

slide-18
SLIDE 18

Adjacency&Lists&(Undirected)

  • The&adjacency&list of&a&vertex&* ∈ # is&the&list&9[*]
  • f&all&) s.t.& *, ) ∈ %

2 1 3 4

9 1 = 2,3 9 2 = 1,3 9 3 = 1,2,4 9 4 = 3

A

Space

ntm

Lookup It degli

i

j

list Neighbors

Olltdeglit

slide-19
SLIDE 19

Given

a graph

G YE and

a

node

u c V

the degree of

v is

the

  • f neighbors

degocu

deg

v

v

It

deg

v

Fa

I

t Feu degli

n

t m

slide-20
SLIDE 20
slide-21
SLIDE 21

Adjacency&Lists&(Directed)

  • The&adjacency&list of&a&vertex&* ∈ # are&the&lists
  • 9GHI[*] of&all&) s.t.& *, ) ∈ %
  • 9JK[*] of&all&) s.t.& ), * ∈ %

2 1 3 4

9GHI 1 = 2,3 9GHI 2 = 3 9GHI 3 = ; 9GHI 4 = 3 9JK 1 = ; 9JK 2 = 1 9JK 3 = 1,2,4 9JK 4 = ;

such that

O

slide-22
SLIDE 22

Exploring&a&Graph

slide-23
SLIDE 23

Exploring&a&Graph

  • Problem:&Is&there&a&path&from&L to&M?
  • Idea: Explore&all&nodes&reachable&from&L.
  • Two&different&search&techniques:
  • Breadth@First&Search: explore&nearby&nodes&before&

moving&on&to&farther&away&nodes

  • Depth@First&Search: follow&a&path&until&you&get&stuck,&

then&go&back

slide-24
SLIDE 24

Exploring&a&Graph

  • BFS/DFS are&general&templates&for&graph&algorithms
  • Extensions&of&Breadth@First&Search:
  • 2SColoring&(Bipartiteness)
  • Shortest&Paths
  • Minimum&Spanning&Tree&(Prim’s&Algorithm)
  • Extensions&of&Depth@First&Search:
  • Topological&Sorting
slide-25
SLIDE 25

DepthSFirst&Search&(DFS)

slide-26
SLIDE 26

DepthSFirst&Search

G = (V,E) is a graph explored[u] = 0 u DFS(u): explored[u] = 1 for ((u,v) in E): if (explored[v]=0): parent[v] = u DFS(v) u c a b

n

mi

Explores every

node

that

is

connected

to

u

The parent pomees

forms

a

tree

no cycles

for every

v

reachablefrom

u

is a unique u

v

path

formed by the red edges

slide-27
SLIDE 27

DepthSFirst&Search

G = (V,E) is a graph explored[u] = 0 u DFS(u): explored[u] = 1 for ((u,v) in E): if (explored[v]=0): parent[v] = u DFS(v) u c a b

Running T.me

a

t.li

For every

node

vEV

we make

  • ne

call

to

DFS

u

If we

call

DFS

v

ther the time to

execute the call

is

0C It

deg

v

Time is EZolitdegh

O

ntm

slide-28
SLIDE 28

DepthSFirst&Search

u c a b

  • Fact: The&parentSchild&edges&form&a&(directed)&tree
  • Each&edge&has&a&type:
  • Tree&edges:&(), O),(), Q), (Q, R)
  • These&are&the&edges&that&explore&new&nodes
  • Forward&edges:&(), R)
  • Ancestor&to&descendant
  • Backward&edges:& O, )
  • Descendant&to&ancestor
  • Implies&a&directed&cycle!
  • Cross&edges:&(Q, O)
  • No&ancestral&relation

I

Ee

parentedges

3A

semi

slide-29
SLIDE 29

Ask&the&Audience

a b e f

  • DFS&starting&from&node&O
  • Search&in&alphabetical&order
  • Label&edges&with&

{tree,forward,backward,cross}

c d g h

slide-30
SLIDE 30

PostSOrdering

G = (V,E) is a graph explored[u] = 0 u DFS(u): explored[u] = 1 for ((u,v) in E): if (explored[v]=0): parent[v] = u DFS(v) post-visit(u) u c a b

  • Maintain&a&counter&clock,&initially&set&clock = 1
  • post-visit(u):

set postorder[u]=clock, clock=clock+1

Vertex Post@Order

slide-31
SLIDE 31

PreSOrdering

G = (V,E) is a graph explored[u] = 0 u DFS(u): explored[u] = 1 pre-visit(u) for ((u,v) in E): if (explored[v]=0): parent[v] = u DFS(v) u c a b

  • Maintain&a&counter&clock,&initially&set&clock = 1
  • pre-visit(u):

set preorder[u]=clock, clock=clock+1

Vertex Pre@Order

slide-32
SLIDE 32

Ask&the&Audience

a b e f

  • Compute&the&post@order of&this&graph
  • DFS&from&S,&search&in&alphabetical&order

c d g h

Vertex a b c d e f g h Post@Order

slide-33
SLIDE 33

Ask&the&Audience

a b e f

  • Compute&the&post@order of&this&graph
  • DFS&from&S,&search&in&alphabetical&order

c d g h

Vertex a b c d e f g h Post@Order 8 7 5 4 6 1 2 3

slide-34
SLIDE 34

Ask&the&Audience

a b e f

  • Observation:&if&postorder[u]&<&postorder[v]&then&

(u,v)&is&a&backward&edge

c d g h

Vertex a b c d e f g h Post@Order 8 7 5 4 6 1 2 3

slide-35
SLIDE 35

Ask&the&Audience

  • Observation:&if&postorder[u]&<&postorder[v]&then&

(u,v)&is&a&backward&edge

  • DFS(u)&can’t&finish&until&its&children&are&finished
  • If&(u,v)&is&a&tree&edge,&then&postorder[u]&>&postorder[v]
  • If&(u,v)&is&a&forward&edge,&then&postorder[u]&>&postorder[v]
  • If&postorder[u]&<&postorder[v],&then&DFS(u)&finishes&

before&DFS(v),&thus&DFS(v)&is&not&called&by&DFS(u)

  • When&we&ran&DFS(u),&we&must&have&had&explored[v]=1
  • Thus,&DFS(v)&started&before&DFS(u)
  • DFS(v)&started&before&DFS(u)&but&finished&after
  • Can&only&happen&for&a&backward&edge
slide-36
SLIDE 36

Topological&Ordering

slide-37
SLIDE 37

Directed&Acyclic&Graphs&(DAGs)

  • DAG:&A&directed graph&with&no&directed&cycles
  • Can&be&much&more&complex&than&a&forest
slide-38
SLIDE 38

Directed&Acyclic&Graphs&(DAGs)

  • DAG:&A&directed&graph&with&no&directed&cycles
  • DAGs&represent&precedence relationships
  • A&topological&ordering of&a&directed&graph&is&a&

labeling&of&the&nodes&from&*-, … , *K so&that&all& edges&go&“forwards”,&that&is& *J, *T ∈ % ⇒ = > <

  • ! has&a&topological&ordering&⇒ ! is&a&DAG
slide-39
SLIDE 39

Directed&Acyclic&Graphs&(DAGs)

  • Problem&1:&given&a&digraph&!,&is&it&a&DAG?
  • Problem&2: given&a&digraph&!,&can&it&be&

topologically&ordered?

  • Thm: ! has&a&topological&ordering&⟺ ! is&a&DAG
  • We&will&design&one&algorithm&that&either&outputs&a&

topological&ordering&or&finds&a&directed&cycle

slide-40
SLIDE 40

Topological&Ordering

  • Observation:&the&first&node&must&have&no&inSedges
  • Observation: In&any&DAG,&there&is&always&a&node&

with&no&incoming&edges

slide-41
SLIDE 41

Topological&Ordering

  • Fact: In&any&DAG,&there&is&a&node&with&no&incoming&

edges

  • Thm: Every&DAG&has&a&topological&ordering
  • Proof&(Induction):
slide-42
SLIDE 42

Fast&Topological&Ordering

  • Claim:&ordering&nodes&by&decreasing&postorder&

gives&a&topological&ordering

  • Proof:
  • A&DAG&has&no&backward&edges
  • Suppose&this&is&not a&topological&ordering
  • That&means&there&exists&an&edge&(u,v)&such&that&

postorder[u]&<&postorder[v]

  • We&showed&that&any&such&(u,v)&is&a&backward&edge
  • But&there&are&no&backward&edges,&contradiction!
slide-43
SLIDE 43

Topological&Ordering&(TO)

  • DAG:&A&directed&graph&with&no&directed&cycles
  • Any&DAG&can&be&toplogically ordered
  • Label&nodes&*-, … , *K so&that& *J,*T ∈ % ⟹ = > <
  • Can&compute&a&TO&in&Y 6 + [ time&using&DFS
  • Reverse&of&postSorder&is&a&topological&order