CSCI 104 Graph Representation and Traversals. Mark Redekopp David Kempe

Similar documents
CS 103 BFS Alorithm. Mark Redekopp

learning objectives learn what graphs are in mathematical terms learn how to represent graphs in computers learn about typical graph algorithms

CS 241 Analysis of Algorithms

MAT3707. Tutorial letter 201/1/2017 DISCRETE MATHEMATICS: COMBINATORICS. Semester 1. Department of Mathematical Sciences MAT3707/201/1/2017

Grade 7/8 Math Circles March 4/5, Graph Theory I- Solutions

16.unified Introduction to Computers and Programming. SOLUTIONS to Examination 4/30/04 9:05am - 10:00am

An undirected graph G = (V, E) V a set of vertices E a set of unordered edges (v,w) where v, w in V

Paths. Connectivity. Euler and Hamilton Paths. Planar graphs.

Complete Solutions for MATH 3012 Quiz 2, October 25, 2011, WTT

Lecture 20: Minimum Spanning Trees (CLRS 23)

Cycles and Simple Cycles. Paths and Simple Paths. Trees. Problem: There is No Completely Standard Terminology!

CMPS 2200 Fall Graphs. Carola Wenk. Slides courtesy of Charles Leiserson with changes and additions by Carola Wenk

d e c b a d c b a d e c b a a c a d c c e b

CSE 373: More on graphs; DFS and BFS. Michael Lee Wednesday, Feb 14, 2018

V={A,B,C,D,E} E={ (A,D),(A,E),(B,D), (B,E),(C,D),(C,E)}

V={A,B,C,D,E} E={ (A,D),(A,E),(B,D), (B,E),(C,D),(C,E)}

Weighted Graphs. Weighted graphs may be either directed or undirected.

Outline. 1 Introduction. 2 Min-Cost Spanning Trees. 4 Example

CSE 373. Graphs 1: Concepts, Depth/Breadth-First Search reading: Weiss Ch. 9. slides created by Marty Stepp

Spanning Trees. BFS, DFS spanning tree Minimum spanning tree. March 28, 2018 Cinda Heeren / Geoffrey Tien 1

Graph Search (6A) Young Won Lim 5/18/18

CS61B Lecture #33. Administrivia: Autograder will run this evening. Today s Readings: Graph Structures: DSIJ, Chapter 12

Outline. Computer Science 331. Computation of Min-Cost Spanning Trees. Costs of Spanning Trees in Weighted Graphs

1 Introduction to Modulo 7 Arithmetic

CSC Design and Analysis of Algorithms. Example: Change-Making Problem

CS 461, Lecture 17. Today s Outline. Example Run

(Minimum) Spanning Trees

12/3/12. Outline. Part 10. Graphs. Circuits. Euler paths/circuits. Euler s bridge problem (Bridges of Konigsberg Problem)

Depth First Search. Yufei Tao. Department of Computer Science and Engineering Chinese University of Hong Kong

5/9/13. Part 10. Graphs. Outline. Circuits. Introduction Terminology Implementing Graphs

, each of which is a tree, and whose roots r 1. , respectively, are children of r. Data Structures & File Management

5/1/2018. Huffman Coding Trees. Huffman Coding Trees. Huffman Coding Trees. Huffman Coding Trees. Huffman Coding Trees. Huffman Coding Trees

QUESTIONS BEGIN HERE!

ECE COMBINATIONAL BUILDING BLOCKS - INVEST 13 DECODERS AND ENCODERS

4.1 Interval Scheduling. Chapter 4. Greedy Algorithms. Interval Scheduling: Greedy Algorithms. Interval Scheduling. Interval scheduling.

COMP 250. Lecture 29. graph traversal. Nov. 15/16, 2017

CS200: Graphs. Graphs. Directed Graphs. Graphs/Networks Around Us. What can this represent? Sometimes we want to represent directionality:

5/7/13. Part 10. Graphs. Theorem Theorem Graphs Describing Precedence. Outline. Theorem 10-1: The Handshaking Theorem

Exam 1 Solution. CS 542 Advanced Data Structures and Algorithms 2/14/2013

The University of Sydney MATH 2009

OpenMx Matrices and Operators

Announcements. Not graphs. These are Graphs. Applications of Graphs. Graph Definitions. Graphs & Graph Algorithms. A6 released today: Risk

Tangram Fractions Overview: Students will analyze standard and nonstandard

QUESTIONS BEGIN HERE!

Outline. Circuits. Euler paths/circuits 4/25/12. Part 10. Graphs. Euler s bridge problem (Bridges of Konigsberg Problem)

Problem solving by search

# 1 ' 10 ' 100. Decimal point = 4 hundred. = 6 tens (or sixty) = 5 ones (or five) = 2 tenths. = 7 hundredths.

b. How many ternary words of length 23 with eight 0 s, nine 1 s and six 2 s?

N=4 L=4. Our first non-linear data structure! A graph G consists of two sets G = {V, E} A set of V vertices, or nodes f

Math 61 : Discrete Structures Final Exam Instructor: Ciprian Manolescu. You have 180 minutes.

Round 7: Graphs (part I)

Seven-Segment Display Driver

Strongly connected components. Finding strongly-connected components

Math 166 Week in Review 2 Sections 1.1b, 1.2, 1.3, & 1.4

Improving Union. Implementation. Union-by-size Code. Union-by-Size Find Analysis. Path Compression! Improving Find find(e)

CS September 2018

Solutions for HW11. Exercise 34. (a) Use the recurrence relation t(g) = t(g e) + t(g/e) to count the number of spanning trees of v 1

Divided. diamonds. Mimic the look of facets in a bracelet that s deceptively deep RIGHT-ANGLE WEAVE. designed by Peggy Brinkman Matteliano

In which direction do compass needles always align? Why?

ECE 407 Computer Aided Design for Electronic Systems. Circuit Modeling and Basic Graph Concepts/Algorithms. Instructor: Maria K. Michael.

Minimum Spanning Trees

(2) If we multiplied a row of B by λ, then the value is also multiplied by λ(here lambda could be 0). namely

CSE 373: AVL trees. Warmup: Warmup. Interlude: Exploring the balance invariant. AVL Trees: Invariants. AVL tree invariants review

Outline. Binary Tree

Designing A Concrete Arch Bridge

Indices. Indices. Curriculum Ready ACMNA: 209, 210, 212,

The University of Sydney MATH2969/2069. Graph Theory Tutorial 5 (Week 12) Solutions 2008

EE1000 Project 4 Digital Volt Meter

COMP108 Algorithmic Foundations

Constructive Geometric Constraint Solving

Graphs. Graphs. Graphs: Basic Terminology. Directed Graphs. Dr Papalaskari 1

Planar Upward Drawings

0.1. Exercise 1: the distances between four points in a graph

CMSC 451: Lecture 2 Graph Basics Thursday, Aug 31, 2017

Announcements. These are Graphs. This is not a Graph. Graph Definitions. Applications of Graphs. Graphs & Graph Algorithms

DFA Minimization. DFA minimization: the idea. Not in Sipser. Background: Questions: Assignments: Previously: Today: Then:

CS150 Sp 98 R. Newton & K. Pister 1

Why the Junction Tree Algorithm? The Junction Tree Algorithm. Clique Potential Representation. Overview. Chris Williams 1.

Graphs. CSC 1300 Discrete Structures Villanova University. Villanova CSC Dr Papalaskari

MCS100. One can begin to reason only when a clear picture has been formed in the imagination.

Outlines: Graphs Part-4. Applications of Depth-First Search. Directed Acyclic Graph (DAG) Generic scheduling problem.

Section 10.4 Connectivity (up to paths and isomorphism, not including)

CSE 332. Data Structures and Parallelism

CSE 332. Graphs 1: What is a Graph? DFS and BFS. Data Abstractions. CSE 332: Data Abstractions. A Graph is a Thingy... 2

10/30/12. Today. CS/ENGRD 2110 Object- Oriented Programming and Data Structures Fall 2012 Doug James. DFS algorithm. Reachability Algorithms

Organization. Dominators. Control-flow graphs 8/30/2010. Dominators, control-dependence. Dominator relation of CFGs

(4, 2)-choosability of planar graphs with forbidden structures

Present state Next state Q + M N

Theorem 1. An undirected graph is a tree if and only if there is a unique simple path between any two of its vertices.

Physics 222 Midterm, Form: A

S i m p l i f y i n g A l g e b r a SIMPLIFYING ALGEBRA.

Edge-Triggered D Flip-flop. Formal Analysis. Fundamental-Mode Sequential Circuits. D latch: How do flip-flops work?

Weighted graphs -- reminder. Data Structures LECTURE 15. Shortest paths algorithms. Example: weighted graph. Two basic properties of shortest paths

Module graph.py. 1 Introduction. 2 Graph basics. 3 Module graph.py. 3.1 Objects. CS 231 Naomi Nishimura

Applications: The problem has several applications, for example, to compute periods of maximum net expenses for a design department.

CMSC 451: Lecture 4 Bridges and 2-Edge Connectivity Thursday, Sep 7, 2017

Greedy Algorithms, Activity Selection, Minimum Spanning Trees Scribes: Logan Short (2015), Virginia Date: May 18, 2016

Register Allocation. Register Allocation. Principle Phases. Principle Phases. Example: Build. Spills 11/14/2012

Graph Isomorphism. Graphs - II. Cayley s Formula. Planar Graphs. Outline. Is K 5 planar? The number of labeled trees on n nodes is n n-2

a g f 8 e 11 Also: Minimum degree, maximum degree, vertex of degree d 1 adjacent to vertex of degree d 2,...

Transcription:

1 CSCI 104 Grp Rprsnttion n Trvrsls Mrk Rkopp Dvi Kmp

2 Oriin o Grp Tory In 1736, Eulr solv t prolm known s t Svn Bris o Könisr. T ity o Könisr, Prussi on t Prl Rivr, inlu two lr islns onnt to otr n t minln y svn ris. T prolm is to i wtr it is possil to ollow pt tt rosss ri xtly on (n optionlly: rturns to t strtin point) ttp://n.wikipi.or/wiki/svn_bris_o_k%c3%b6nisr

3 Eulr s Anlysis Wnvr you ntr non-trminl lnmss y ri you must lv y notr Bus its non-trminl you n't sty on you rriv Tus vry non-trminl lnmss must touin n vn numr o ris So tt you n ntr on on ri n lv on notr Howvr, ll our o t ln msss in t oriinl prolm r tou y n o numr o ris (on is tou y 5 ris, n o t otr tr r tou y 3).

4 Explntion Usin Grp Tory In "rp-spk", Eulr sow tt t possiility o wlk trou rp, trvrsin xtly on, pns on t rs o t nos. Eulr wlk = strt/n t irnt vrtis Eulr yl = strt/n t sm vrtx T r o no is t numr o s touin it. Eulr's rumnt sows tt nssry onition or t wlk o t sir orm is tt t rp onnt n v xtly zro or two nos o o r. I tr r 2 nos o o r, w n orm n Eulr wlk so tt w will strt t on o t o-r vrtis n n t t otr Sin t rp orrsponin to istoril Könisr s our nos o o r, it nnot v n Eulrin pt.

GRAPH REPRESENTATIONS 5

6 Grp Nottion Grps is olltion o vrtis (or nos) n s tt onnt vrtis Lt V t st o vrtis Lt E t st o s Lt V or n rr to t numr o vrtis Lt E or m rr to t numr o s V V =n=8 E (,) (,) (,) (,) (,) (,) (,) (,) (,) (,) (,) E =m=11

7 Grps in t Rl Worl Soil ntworks Computr ntworks / Intrnt Pt plnnin Intrtion irms Bioinormtis

8 Bsi Grp Rprsnttion Cn simply stor s in list/rry Unsort Sort V V =n=8 E (,) (,) (,) (,) (,) (,) (,) (,) (,) (,) (,) E =m=11

9 Grp ADT Wt oprtions woul you wnt to prorm on rp? Vrtx() : Vrtx E(v1, v2) tajnis(v1) : List<Vrtis> Rturns ny vrtx wit n rom v1 to itsl rmovvrtx(v) rmove(v1, v2) Exists(v1, v2) : ool #inlu<iostrm> usin nmsp st; tmplt <typnm V, typnm E> lss Grp{ }; Prt or tmpltin t t ssoit wit vrtx n s V n E

List o Vrtis Ajny Lists 10 Mor Common Grp Rprsnttions Grps r rlly just list o lists List o vrtis vin tir own list o jnt vrtis Altrntivly, somtims rps r lso rprsnt wit n jny mtrix Entry t (i,j) = 1 i tr is n twn vrtx i n j, 0 otrwis,,,,,,,,,,,,,, 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 1 0 Ajny Mtrix Rprsnttion

List o Vrtis Ajny Lists 11 Grp Rprsnttions Lt V = n = # o vrtis n E = m = # o s Ajny List Rprsnttion O( ) mmory stor Existn o n rquirs srin jny list Ajny Mtrix Rprsnttion O( ) stor Existn o n rquirs O( ) lookup,,,,,,,,,,,,,, 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 1 0 Ajny Mtrix Rprsnttion

List o Vrtis Ajny Lists 12 Grp Rprsnttions Lt V = n = # o vrtis n E = m = # o s Ajny List Rprsnttion O( V + E ) mmory stor Existn o n rquirs srin jny list Din r to t numr o s inint on vrtx ( () = 2, () = 5, t. Ajny Mtrix Rprsnttion O( V 2 ) stor Existn o n rquirs O(1) lookup (.. mtrix[i][j] == 1 ),,,,,,,,,,,,,, 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 1 0 Ajny Mtrix Rprsnttion

List o Vrtis Ajny Lists 13 Grp Rprsnttions Cn '' t to '' in two ops? Ajny List For nior o Sr tt nior's list or Ajny Mtrix Tk t ot prout o row & olumn,,,,,,,,,,,,,, 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 1 0 Ajny Mtrix Rprsnttion

List o Vrtis Ajny Lists 14 Grp Rprsnttions Cn '' t to '' in two ops? Ajny List For nior o Sr tt nior's list or Ajny Mtrix Tk t ot prout o row & olumn,,,,,,,,,,,,,, 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 1 0 Ajny Mtrix Rprsnttion

List o Vrtis Outoin Es Sour 15 Dirt vs. Unirt Grps In t prvious rps, s wr unirt (mnin s r 'iirtionl' or 'rlxiv') An (u,v) implis (v,u) In irt rps, links r uniirtionl An (u,v) os not imply (v,u) For E (u,v): t sour is u, trt is v For jny list orm, you my n 2 lists pr vrtx or ot prssors n sussors,,,, Trt 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 Ajny Mtrix Rprsnttion

List o Vrtis Sour 16 Dirt vs. Unirt Grps In irt rp wit (u,v) w in Sussor(u) = v Prssor(v) = u Usin n jny list rprsnttion my wrrnt two lists prssors n sussors,,,, Sus,,,, Prs Trt 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 Ajny Mtrix Rprsnttion

17 Timout: Rl-worl xmpl PAGERANK ALGORITHM

18 PRnk Consir t rp t t rit Ts oul wps wit links sown in t orrsponin irtion Ts oul niorin itis PRnk nrlly tris to nswr t qustion: I w lt un o popl rnomly "wlk" t rp, wt is t proility tt ty n up t rtin lotion (p, ity, t.) in t "sty-stt" W oul solv tis prolm trou Mont-Crlo simultion (similr to CS 103 Coin-lippin m ssinmnt) Simult lr numr o rnom wlkrs n ror wr on ns to uil up n nswr o t proilitis or vrtx But tr r mor iint wys o oin it

Trt=i Trt 19 PRnk Lt us writ out t jny mtrix or tis rp Now lt us mk wit vrsion y normlizin s on t out-r o no Ex. I you'r t no B w v 50-50 n o oin to A or E From tis you oul writ systm o linr qutions (i.. wt r t ns you n up t vrtx I t t nxt tim stp, ivn you r t som vrtx J now pa = 0.5*pB pb = pc pc = pa + pd + 0.5*pE pd = 0.5*pE pe = 0.5*pB W lso know: pa + pb + pc + pd + pe = 1 Sour 0 1 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 1 0 1 0 0 0 Ajny Mtrix Sour=j 0 0.5 0 0 0 0 0 1 0 0 1 0 0 1 0.5 0 0 0 0 0.5 0 0.5 0 0 0 Wit Ajny Mtrix [Divi ( i,j )/r(j)]

Trt=i 20 Systm o Linr Equtions pa = 0.5*pB pb = pc pc = pa + pd + 0.5*pE pd = 0.5*pE pe = 0.5*pB PRnk W lso know: pa + pb + pc + pd + pe = 1 I you know somtin out linr lr, you know w n writ ts qutions in mtrix orm s linr systm Ax = y Sour=j 0 0.5 0 0 0 0 0 1 0 0 1 0 0 1 0.5 0 0 0 0 0.5 0 0.5 0 0 0 Wit Ajny Mtrix [Divi y ( i,j )/r(j)] 0 0.5 0 0 0 pa 0 0.5 0 0 0 pa pa = 0.5PB 0 0 1 0 0 pb 0 0 1 0 0 pb pb = pc 1 0 0 1 0.5 * pc 1 0 0 1 0.5 * pc = pc = pa+pd+0.5*pe 0 0 0 0 0.5 pd 0 0 0 0 0.5 pd pd = 0.5*pE 0 0.5 0 0 0 pe 0 0.5 0 0 0 pe pe = 0.5*pB

Trt=i 21 PRnk But rmmr w wnt t sty stt solution T solution wr t proilitis on't n rom on stp to t nxt So w wnt solution to: Ap = p W n: Us linr systm solvr (Gussin limintion) Or w n just s t prolm wit som proilitis n tn just itrt until t solution sttls own Sour=j 0 0.5 0 0 0 0 0.5 0 0 0 pa pa 0 0 1 0 0 0 0 1 0 0 pb pb 1 0 0 1 0.5 1 0 0 1 0.5 * pc = pc 0 0 0 0 0.5 0 0 0 0 0.5 pd pd 0 0.5 0 0 0 0 0.5 0 0 0 pe pe Wit Ajny Mtrix [Divi y ( i,j )/r(j)]

22 Itrtiv PRnk But rmmr w wnt t sty stt solution T solution wr t proilitis on't n rom on stp to t nxt So w wnt solution to: Ap = p W n: Us linr systm solvr (Gussin limintion) Or w n just s t prolm wit som proilitis n tn just itrt until t solution sttls own 0 0.5 0 0 0 0 0 1 0 0 1 0 0 1 0.5 0 0 0 0 0.5 0 0.5 0 0 0 Stp 0 Sol. *.2.2.2.2.2 = Stp 1 Sol..1.2.5.1.1 0 0.5 0 0 0 0 0 1 0 0 1 0 0 1 0.5 0 0 0 0 0.5 0 0.5 0 0 0 Stp 29 Sol.?? *??? Stp 30 Sol..1507.3078 =.3126.0783.1507 Stp 1 Sol. Stp 2 Sol. 0 0.5 0 0 0 0 0 1 0 0 1 0 0 1 0.5 0 0 0 0 0.5 0 0.5 0 0 0 *.1.2.5.1.1 =.1.5.25.05.1 Atul PRnk Solution rom solvin linr systm:.1538.3077.3077.0769.1538

23 Aitionl Nots Wt i w n t rp n now D s no inomin links wt is its PRnk? 0 Most PR loritms proility tt somon just ntrs tt URL (i.. ntrs t rp t tt no) Usully in somtin ll t mpin tor, α (otn osn roun 0.85) Proility o rnomly strtin or jumpin somwr = 1-α So t tim stp t nxt PR vlu or no i is ivn s: Pr i = 1 α N + α σ j Pr(i) N is t totl numr o vrtis Usully run 30 or so upt stps Strt Pr(i) = 1/N Pr(j) OutD(j)

24 In W Sr Sttin Givn som sr kywors w oul in t ps tt v tt mtin kywors W otn xpn tt st o ps y inluin ll sussors n prssors o tos ps Inlu ll ps tt r witin rius o 1 o t ps tt tully v t kywor Now onsir tt st o ps n t surp tt it inus Run PRnk on tt surp Full WGrp P Hits (Contin kywor) Expn (Prs & Sus) Inu Surp to run PRnk

TREES 25

26 Tr Dinitions Prt 1 A 3-ry (trinry) tr Dinition: A onnt, yli (no yls) rp wit: A root no, r, tt s 0 or mor sutrs Extly on pt twn ny two nos In nrl: Nos v xtly on prnt (xpt or t root wi s non) n 0 or mor ilrn -ry tr Tr wr no s t most ilrn Binry tr = -ry Tr wit n=2 L Lt il root sutr silins prnt Rit il Anstor Dsnnt Trms: Prnt(i): No irtly ov no i Cil(i): No irtly low no i Silins: Cilrn o t sm prnt Root: Only no wit no prnt L: No wit 0 ilrn Hit: Lnt o lrst pt rom root to ny l Sutr(n): Tr root t no n Anstor(n): Any no on t pt rom n to t root Dsnnt(n): Any no in t sutr root t n

27 Tr Dinitions Prt 2 Tr it: mximum # o nos on pt rom root to ny l Full -ry tr, T, wr Evry vrtx s 0 or ilrn n ll l nos r t t sm lvl I it >1 n ot sutrs r ull inry trs o it, nil I it ==1, tn it is ull y inition Complt -ry tr E lvl is ill lt-to-rit n nw lvl is not strt until t prvious on is omplt Bln -ry tr Tr wr sutrs rom ny no ir in it y t most 1 Full Complt, ut not ull Full DAPS, 6 t E. Fiur 15-8 Complt

28 Tr Hit A ull inry tr o n nos s it, lo 2 (n + 1) Tis implis t minimum it o ny tr wit n nos is lo 2 (n + 1) T mximum it o tr wit n nos is, n 15 nos => it lo 2 (16) = 4 5 nos => it = 5

29 Tr Trvrsls A trvrsl itrts ovr ll nos o t tr Usully usin pt-irst, rursiv ppro Tr nrl trvrsl orrins Pr-orr [Pross root tn visit sutrs] In-orr [Visit lt sutr, pross root, visit rit sutr] Post-orr [Visit lt sutr, visit rit sutr, pross root] 20 60 80 Prorr(TrNo* t) { i t == NULL rturn pross(t) // print vl. Prorr(t->lt) Prorr(t->rit) } Inorr(TrNo* t) { i t == NULL rturn Inorr(t->lt) pross(t) // print vl. Inorr(t->rit) } 60 20 10 30 25 50 80 10 20 25 30 50 60 80 10 30 25 50 Postorr(TrNo* t) { i t == NULL rturn Postorr(t->lt) Postorr(t->rit) pross(t) // print vl. } 10 25 50 30 20 80 60

30 Arry-s n Link-s TREE IMPLEMENTATIONS

31 Arry-Bs Complt Binry Tr Binry tr tt is omplt (i.. only t lowst-lvl ontins mpty lotions n itms lt to rit) n stor nily in n rry (lt s sy it strts t inx 1 n inx 0 is mpty) Cn you in t mtmtil rltion or inin t inx o no i's prnt, lt, n rit il? Prnt(i) = Lt_il(i) = Rit_il(i) = 7 0 1 2 3 4 5 6 7 8 9 10 11 12 13 18 9 m 7 18 9 19 35 14 10 28 39 36 43 16 17 19 35 14 10 28 39 36 43 16 17 prnt(5) = Lt_il(5) = Rit_il(5) =

32 Arry-Bs Complt Binry Tr Binry tr tt is omplt (i.. only t lowst-lvl ontins mpty lotions n itms lt to rit) n stor nily in n rry (lt s sy it strts t inx 1 n inx 0 is mpty) Cn you in t mtmtil rltion or inin no i's prnt, lt, n rit il? Prnt(i) = i/2 Lt_il(i) = 2*i Rit_il(i) = 2*i + 1 7 0 1 2 3 4 m 7 18 9 19 5 6 7 8 9 35 14 10 28 39 10 11 12 13 36 43 16 17 18 9 prnt(5) = 5/2 = 2 Lt_il(5) = 2*5 = 10 Rit_il(5) = 2*5+1 = 11 19 35 14 10 28 39 36 43 16 17 Non-omplt inry trs rquir mu mor ookpin to stor in rrys usully link-s ppros r prrr

33 0-Bs Inxin Binry tr tt is omplt (i.. only t lowst-lvl ontins mpty lotions n itms lt to rit) n stor nily in n rry (lt s sy it strts t inx 1 n inx 0 is mpty) Cn you in t mtmtil rltion or inin t inx o no i's prnt, lt, n rit il? Prnt(i) = Lt_il(i) = Rit_il(i) = 7 0 1 2 3 4 5 6 7 8 9 10 11 12 18 9 7 18 9 19 35 14 10 28 39 36 43 16 17 19 35 14 10 28 39 36 43 16 17 prnt(5) = Lt_il(5) = Rit_il(5) =

34 D-ry Arry-s Implmnttions Arrys n us to stor -ry omplt trs Ajust t ormuls riv or inry trs in prvious slis in trms o 7 18 9 19 35 21 26 A 3-ry (trinry) tr 0 1 2 3 4 5 6 7 18 9 19 35 21 26

35 Link-Bs Appros Mu lik link list ut now wit two pointrs pr Itm Us NULL pointrs to init no il Dynmilly llot n r itms wn you /rmov tm #inlu<iostrm> usin nmsp st; tmplt <typnm T> strut BTItm { T vl; BTItm<T>* lt,rit; BTItm<T>* prnt; }; // Bin. Sr Tr tmplt <typnm T> lss BinTr { puli: BinTr(); ~BinTr(); voi (onst T& v);... privt: BTItm<T>* root_; }; BTItm<T> luprint: Itm<T>* lt Itm<T>* prnt T vl Itm<T>* rit lss LinkBST: 0x0 root_

36 A(5) A(6) A(7) Link-Bs Appros 1 lss LinkBST: 0x0 root_ 2 root_ 3 root_ 4 root_ 0x10 Lt Prnt vl rit

37 Link-Bs Appros A(5) A(6) A(7) 0x10 root_ vl 7 rit NULL Lt NULL 0x00 0x10 root_ vl 5 rit NULL Lt NULL lss LinkBST: 0x0 root_ 1 2 0x10 root_ vl 5 rit 0x20 Lt NULL vl 6 rit NULL Lt NULL 0x20 3 4 0x10 0x10 prnt NULL prnt NULL prnt 0x10 vl 5 rit 0x20 Lt NULL vl 6 rit 0x00 Lt NULL 0x20 0x10 prnt NULL prnt 0x10 prnt 0x20

BREADTH-FIRST SEARCH 38

39 Brt-First Sr Givn rp wit vrtis, V, n s, E, n strtin vrtx tt w'll ll u 0 BFS strts t u ( in t irm to t lt) n ns-out lon t s to nrst niors, tn to tir niors n so on Gol: Fin sortst pts (.k.. minimum numr o ops or pt) rom t strt vrtx to vry otr vrtx Dpt 0:

40 Brt-First Sr Givn rp wit vrtis, V, n s, E, n strtin vrtx, u BFS strts t u ( in t irm to t lt) n ns-out lon t s to nrst niors, tn to tir niors n so on Gol: Fin sortst pts (.k.. minimum numr o ops or pt) rom t strt vrtx to vry otr vrtx 0 1 1 Dpt 0: Dpt 1:,

41 Brt-First Sr Givn rp wit vrtis, V, n s, E, n strtin vrtx, u BFS strts t u ( in t irm to t lt) n ns-out lon t s to nrst niors, tn to tir niors n so on Gol: Fin sortst pts (.k.. minimum numr o ops or pt) rom t strt vrtx to vry otr vrtx 0 1 2 1 2 Dpt 0: Dpt 1:, Dpt 2:,,, 2 2

42 Brt-First Sr Givn rp wit vrtis, V, n s, E, n strtin vrtx, u BFS strts t u ( in t irm to t lt) n ns-out lon t s to nrst niors, tn to tir niors n so on Gol: Fin sortst pts (.k.. minimum numr o ops or pt) rom t strt vrtx to vry otr vrtx 0 1 2 1 2 Dpt 0: Dpt 1:, Dpt 2:,,, Dpt 3: 2 3 2

43 Dvlopin t Aloritm Ky i: Must xplor ll nrr niors or xplorin urtrwy niors From w in n Computr n only o on tin t tim so w v to pik itr or to xplor rom Lt s sy w pik w will in Now wt vrtx soul w xplor (i.. visit niors) nxt? C!! (i w on t w won t in sortst pts.. ) Must xplor ll vrtis t pt i or ny vrtis t pt i+1 0 1 1 2 Dpt 0: Dpt 1:, Dpt 2:,,, Dpt 3:

44 Dvlopin t Aloritm Explorin ll vrtis in t orr ty r oun implis w will xplor ll vrtis t sllowr pt or rtr pt Kp irst-in / irst-out quu (FIFO) o niors oun Put nwly oun vrtis in t k n pull out vrtx rom t ront to xplor nxt W on t wnt to put vrtx in t quu mor tn on mrk vrtx t irst tim w nountr it only llow unmrk vrtis to put in t quu My lso kp prssor strutur tt inits ow vrtx ot isovr (i.. wi vrtx us tis on to oun) Allows us to in sortst-pt k to t strt vrtx

45 Brt-First Sr Aloritm: BFS(G,u) 1 or vrtx v 2 pr[v] = nil, [v] = in. 3 Q = nw Quu 4 Q.nquu(u), [u]=0 5 wil Q is not mpty 6 v = Q.ront(); Q.quu() 7 or nior, w, o v: 8 i pr[w] < 0 // w not oun 9 Q.nquu(w) 10 pr[w] = v, [w] = [v] + 1 nil,0 nil,in Q: nil,in nil,in nil,in nil,in nil,in nil,in

46 Brt-First Sr Aloritm: BFS(G,u) 1 or vrtx v 2 pr[v] = nil, [v] = in. 3 Q = nw Quu 4 Q.nquu(u), [u]=0 5 wil Q is not mpty 6 v = Q.ront(); Q.quu() 7 or nior, w, o v: 8 i pr[w] < 0 // w not oun 9 Q.nquu(w) 10 pr[w] = v, [w] = [v] + 1 nil,0,1 v = nil,in,1 nil,in nil,in nil,in nil,in Q:

47 Brt-First Sr Aloritm: BFS(G,u) 1 or vrtx v 2 pr[v] = nil, [v] = in. 3 Q = nw Quu 4 Q.nquu(u), [u]=0 5 wil Q is not mpty 6 v = Q.ront(); Q.quu() 7 or nior, w, o v: 8 i pr[w] < 0 // w not oun 9 Q.nquu(w) 10 pr[w] = v, [w] = [v] + 1 nil,0,1 v = nil,in,1 nil,in,2 nil,in nil,in Q:

48 Brt-First Sr Aloritm: BFS(G,u) 1 or vrtx v 2 pr[v] = nil, [v] = in. 3 Q = nw Quu 4 Q.nquu(u), [u]=0 5 wil Q is not mpty 6 v = Q.ront(); Q.quu() 7 or nior, w, o v: 8 i pr[w] < 0 // w not oun 9 Q.nquu(w) 10 pr[w] = v, [w] = [v] + 1 nil,0,2,1 v =,1,2,2 nil,in,2 Q:

49 Brt-First Sr Aloritm: BFS(G,u) 1 or vrtx v 2 pr[v] = nil, [v] = in. 3 Q = nw Quu 4 Q.nquu(u), [u]=0 5 wil Q is not mpty 6 v = Q.ront(); Q.quu() 7 or nior, w, o v: 8 i pr[w] < 0 // w not oun 9 Q.nquu(w) 10 pr[w] = v, [w] = [v] + 1 nil,0,2,1 v =,1,2,2 nil,in,2 Q:

50 Brt-First Sr Aloritm: BFS(G,u) 1 or vrtx v 2 pr[v] = nil, [v] = in. 3 Q = nw Quu 4 Q.nquu(u), [u]=0 5 wil Q is not mpty 6 v = Q.ront(); Q.quu() 7 or nior, w, o v: 8 i pr[w] < 0 // w not oun 9 Q.nquu(w) 10 pr[w] = v, [w] = [v] + 1 nil,0,2,1 v =,1,2,2,3,2 Q:

51 Brt-First Sr Aloritm: BFS(G,u) 1 or vrtx v 2 pr[v] = nil, [v] = in. 3 Q = nw Quu 4 Q.nquu(u), [u]=0 5 wil Q is not mpty 6 v = Q.ront(); Q.quu() 7 or nior, w, o v: 8 i pr[w] < 0 // w not oun 9 Q.nquu(w) 10 pr[w] = v, [w] = [v] + 1 nil,0,2,1 v =,1,2,2,3,2 Q:

52 Brt-First Sr Aloritm: BFS(G,u) 1 or vrtx v 2 pr[v] = nil, [v] = in. 3 Q = nw Quu 4 Q.nquu(u), [u]=0 5 wil Q is not mpty 6 v = Q.ront(); Q.quu() 7 or nior, w, o v: 8 i pr[w] < 0 // w not oun 9 Q.nquu(w) 10 pr[w] = v, [w] = [v] + 1 nil,0,2,1 v =,1,2,2,3,2 Q:

53 Brt-First Sr Aloritm: BFS(G,u) 1 or vrtx v 2 pr[v] = nil, [v] = in. 3 Q = nw Quu 4 Q.nquu(u), [u]=0 5 wil Q is not mpty 6 v = Q.ront(); Q.quu() 7 or nior, w, o v: 8 i pr[w] < 0 // w not oun 9 Q.nquu(w) 10 pr[w] = v, [w] = [v] + 1 nil,0,2,1 v =,1,2,2,3,2 Q:

54 Brt-First Sr Sortst pts n oun wlkin prssor vlu rom ny no kwr Exmpl: Sortst pt rom to Strt t Pr[] = (so wlk k to ) Pr[] = (so wlk k to ) Pr[] = (so wlk k to ) Pr[] = nil no prssor, Don!! nil,0,2,1,1,2,2,3,2

55 Brt-First Sr Trs BFS (n ltr DFS) will inu tr surp (i.. yli, on prnt ) rom t oriinl rp Rlly BFS ins sust o s tt orm t sortst pts rom t sour to ll otr vrtis n tis sust orms tr,2 nil,0,1,3,1,2,2,2 Oriinl rp, G BFS Inu Tr

56 Din ist(s,v) = orrt sortst istn [v] = BFS omput istn p[v] = prssor o v Loop invrint Wt n w sy out t nos in t quu, tir [v] vlus, rltionsip twn [v] n ist[v], t.? Corrtnss Q: nil,0,1 nil,in,1 nil,in nil,in nil,in nil,in BFS(G,u) 1 or vrtx v 2 pr[v] = nil, [v] = in. 3 Q = nw Quu 4 Q.nquu(u), [u]=0 5 wil Q is not mpty 6 v = Q.ront(); Q.quu() 7 or nior, w, o v: 8 i pr[w] < 0 // w not oun 9 Q.nquu(w) 10 pr[w] = v, [w] = [v] + 1

57 Corrtnss Din ist(s,v) = orrt sortst istn [v] = BFS omput istn p[v] = prssor o v Loop invrint All vrtis wit p[v]!= nil (i.. lry in t quu or popp rom quu) v [v] = ist(s,v) T istn o t nos in t quu r sort I Q = {v 1, v 2,, v r } tn [v 1 ] <= [v 2 ] <= <= [v r ] T nos in t quu r rom 2 jnt lyrs/lvls i.. [v k ] <= [v 1 ] + 1 Suppos tr is no rom 3 r lvl ([v 1 ] + 2), it must v n oun y som, vi, wr [v i ] = [v 1 ]+1 Q: nil,0,1 nil,in,1 nil,in nil,in nil,in BFS(G,u) 1 or vrtx v 2 pr[v] = nil, [v] = in. 3 Q = nw Quu 4 Q.nquu(u), [u]=0 5 wil Q is not mpty 6 v = Q.ront(); Q.quu() 7 or nior, w, o v: 8 i pr[w] < 0 // w not oun 9 Q.nquu(w) 10 pr[w] = v, [w] = [v] + 1 nil,in

58 Anlyz t run tim o BFS or rp wit n vrtis n m s Fin T(n,m) How mny tims os loop on lin 5 itrt? Brt-First Sr Q: nil,0,1 nil,in,1 nil,in nil,in nil,in nil,in How mny tims loop on lin 7 itrt? BFS(G,u) 1 or vrtx v 2 pr[v] = nil, [v] = in. 3 Q = nw Quu 4 Q.nquu(u), [u]=0 5 wil Q is not mpty 6 v = Q.ront(); Q.quu() 7 or nior, w, o v: 8 i pr[w] < 0 // w not oun 9 Q.nquu(w) 10 pr[w] = v, [w] = [v] + 1

59 Brt-First Sr Anlyz t run tim o BFS or rp wit n vrtis n m s Fin T(n) How mny tims os loop on lin 5 itrt? N tims (on itrtion pr vrtx) How mny tims loop on lin 7 itrt? For vrtx, v, t loop xuts (v) tims = σ v V θ[1 + v ] = θ σ v 1 + θ σ v (v) = Θ (n) + Θ (m) Totl = Θ(n+m) Q: nil,0,1 nil,in,1 nil,in nil,in nil,in BFS(G,u) 1 or vrtx v 2 pr[v] = nil, [v] = in. 3 Q = nw Quu 4 Q.nquu(u), [u]=0 5 wil Q is not mpty 6 v = Q.ront(); Q.quu() 7 or nior, w, o v: 8 i pr[w] < 0 // w not oun 9 Q.nquu(w) 10 pr[w] = v, [w] = [v] + 1 nil,in

DEPTH FIRST SEARCH 60

61 DFS Applition: Topoloil Sort Brt-irst sr osn't solv ll our prolms. Givn rp o pnnis (tsks, prrquisitis, t.) topoloil sort rts onsistnt orrin o tsks (vrtis) wr no pnnis r violt Mny possil vli topoloil orrins xist EE 109, EE 209, EE 354, EE 454, EE 457, CS104, PHYS 152, CS 201, CS 104, EE 109, CS 170, EE 209, EE 109 EE 209 EE 354 EE 457 EE 454L CS 104 CS 170 CS 201 CS 350 CS 320 CS 401 CS 360

62 Topoloil Sort Anotr xmpl Gttin rss Mor Exmpls: Projt mnmnt sulin Buil orr in Mkil or otr ompil projt Cookin usin rip Instrution xution on n outo-orr piplin CPU Proution o output vlus in simultion o omintionl t ntwork Soks Sos Unrwr Pnts Blt Unrsirt Sirt Ti Jkt ttp://www.prsonl.knt.u/~rmumm/aloritms/myalorit ms/grpalor/toposort.tm

63 Topoloil Sort Dos rt-irst sr work? No. Wt i w strt t CS 170 W' o to CS 201L or CS 104 All prnt nos n to omplt or ny il no BFS only urnts som prnt s omplt or il Turns out Dpt-First Sr will prt o our solution EE 109 EE 209 EE 354 EE 457 EE 454L CS 104 CS 170 CS 201 CS 350 CS 320 CS 401 CS 360

64 Dpt First Sr Explors ALL ilrn or ompltin prnt Not: BFS omplts prnt or ANY ilrn For DFS lt us ssin: A strt tim wn t no is irst oun A inis tim wn no is omplt I w look t our nos in rvrs orr o inis tim (i.. lst on to inis k to irst on to inis) w rriv t Topoloil orrin!!! 1 2 3 EE 457 EE 109 EE 209 EE 354 10 4 5 6 7 Rvrs Finis Tim Orr 1 2 9 8 EE 454L 11 CS 104 13 12 Strt Tim Finis Tim 22 23 24 CS 201 14 15 CS 170 21 CS 350 CS 320 16 17 18 20 19 CS 401 CS 360 CS 170, CS 104, CS 201, CS 320, CS 360, CS 477, CS 350, EE 109, EE 209L, EE 354, EE 454L, EE 457

65 DFS Aloritm Visit no Mrk s visit (strt) For visit nior, visit it n prorm DFS on ll o tir ilrn Only tn, mrk s inis DFS is rursiv!! I yls in t rp, nsur w on t t ut visitin niors nlssly Color tm s w o Wit = unvisit, Gry = visit ut not inis Blk = inis DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u)

66 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u)

67 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list v u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) DFS-Visit(G,):

68 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list v u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) DFS-Visit(G,): DFS-Visit(G,):

69 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list v u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):

70 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):

71 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) Finis_list: DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):

72 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list v u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) Finis_list: DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):

73 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) Finis_list: DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):

74 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) Finis_list:, DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):

75 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) Finis_list:,, DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):

76 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) Finis_list:,,, DFS-Visit(G,): DFS-Visit(G,):

77 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list v u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) Finis_list:,,, DFS-Visit(G,):

78 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list v u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) Finis_list:,,, DFS-Visit(G,): DFS-Visit(G,):

79 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) Finis_list:,,, DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):

80 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) Finis_list:,,,. DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):

81 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) Finis_list:,,,., DFS-Visit(G,): DFS-Visit(G,):

82 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) Finis_list:,,,.,, DFS-Visit(G,):

83 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list My itrt trou mny omplt vrtis or inin to lun nw sr rom u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) Finis_list:,,,.,, DFS-Visit(G,):

84 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) Finis_list:,,,.,,, DFS-Visit(G,):

85 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) Finis_list:,,,.,,,

86 Wit Cyls in t rp ANOTHER EXAMPLE

87 Dpt First-Sr Toposort(G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u)

88 Dpt First-Sr Toposort(G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) u v DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) DFS-Visit(G,):

89 Dpt First-Sr Toposort(G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) v u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) DFS-Visit(G,): DFS-Visit(G,):

90 Dpt First-Sr Toposort(G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) u v DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):

91 Dpt First-Sr Toposort(G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) u v DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):

92 Dpt First-Sr Toposort(G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) v u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):

93 Dpt First-Sr Toposort(G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) v DFS-Visit(G,): DFS-Visit(G,): u DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):

94 Dpt First-Sr Toposort(G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) v u DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):

95 Dpt First-Sr Toposort(G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) v u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):

96 Dpt First-Sr Toposort(G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) DFSQ: DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):

97 Dpt First-Sr Toposort(G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) DFSQ: v u DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):

98 Dpt First-Sr Toposort(G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) v u v DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) DFSQ: DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):

99 Dpt First-Sr Toposort(G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) DFSQ: DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):

100 Dpt First-Sr Toposort(G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) DFSQ: u DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):

101 Dpt First-Sr Toposort(G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) DFSQ: DFS-Visit(G,):

102 Dpt First-Sr Toposort(G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) DFSQ:

ITERATIVE VERSION 103

104 Dpt First-Sr DFS (G,s) 1 or vrtx u 2 u.olor = WHITE 3 st = nw Stk 4 st.pus_k(s) 5 wil st not mpty 6 u = st.k() 7 i u.olor == WHITE tn 8 u.olor = GRAY 9 or vrtx v in Aj(u) o 10 i v.olor == WHITE 11 st.pus_k(v) 12 ls i u.olor!= WHITE st: 13 u.olor = BLACK 14 st.pop_k()

105 Dpt First-Sr DFS (G,s) 1 or vrtx u 2 u.olor = WHITE 3 st = nw Stk 4 st.pus_k(s) 5 wil st not mpty 6 u = st.k() 7 i u.olor == WHITE tn 8 u.olor = GRAY 9 or vrtx v in Aj(u) o 10 i v.olor == WHITE 11 st.pus_k(v) 12 ls i u.olor!= WHITE st: 13 u.olor = BLACK 14 st.pop_k()

106 Dpt First-Sr DFS (G,s) 1 or vrtx u 2 u.olor = WHITE 3 st = nw Stk 4 st.pus_k(s) 5 wil st not mpty 6 u = st.k() 7 i u.olor == WHITE tn 8 u.olor = GRAY 9 or vrtx v in Aj(u) o 10 i v.olor == WHITE 11 st.pus_k(v) 12 ls i u.olor!= WHITE st: 13 u.olor = BLACK 14 st.pop_k()

107 Dpt First-Sr DFS (G,s) 1 or vrtx u 2 u.olor = WHITE 3 st = nw Stk 4 st.pus_k(s) 5 wil st not mpty 6 u = st.k() 7 i u.olor == WHITE tn 8 u.olor = GRAY 9 or vrtx v in Aj(u) o 10 i v.olor == WHITE 11 st.pus_k(v) 12 ls i u.olor!= WHITE st: 13 u.olor = BLACK 14 st.pop_k()

108 Dpt First-Sr DFS (G,s) 1 or vrtx u 2 u.olor = WHITE 3 st = nw Stk 4 st.pus_k(s) 5 wil st not mpty 6 u = st.k() 7 i u.olor == WHITE tn 8 u.olor = GRAY 9 or vrtx v in Aj(u) o 10 i v.olor == WHITE 11 st.pus_k(v) 12 ls i u.olor!= WHITE st: 13 u.olor = BLACK 14 st.pop_k()

109 Dpt First-Sr DFS (G,s) 1 or vrtx u 2 u.olor = WHITE 3 st = nw Stk 4 st.pus_k(s) 5 wil st not mpty 6 u = st.k() 7 i u.olor == WHITE tn 8 u.olor = GRAY 9 or vrtx v in Aj(u) o 10 i v.olor == WHITE 11 st.pus_k(v) 12 ls i u.olor!= WHITE st: 13 u.olor = BLACK 14 st.pop_k()

110 Dpt First-Sr DFS (G,s) 1 or vrtx u 2 u.olor = WHITE 3 st = nw Stk 4 st.pus_k(s) 5 wil st not mpty 6 u = st.k() 7 i u.olor == WHITE tn 8 u.olor = GRAY 9 or vrtx v in Aj(u) o 10 i v.olor == WHITE 11 st.pus_k(v) 12 ls i u.olor!= WHITE 13 u.olor = BLACK 14 st.pop_k() st:

111 Dpt First-Sr DFS (G,s) 1 or vrtx u 2 u.olor = WHITE 3 st = nw Stk 4 st.pus_k(s) 5 wil st not mpty 6 u = st.k() 7 i u.olor == WHITE tn 8 u.olor = GRAY 9 or vrtx v in Aj(u) o 10 i v.olor == WHITE 11 st.pus_k(v) 12 ls i u.olor!= WHITE 13 u.olor = BLACK 14 st.pop_k() st:

112 Dpt First-Sr DFS (G,s) 1 or vrtx u 2 u.olor = WHITE 3 st = nw Stk 4 st.pus_k(s) 5 wil st not mpty 6 u = st.k() 7 i u.olor == WHITE tn 8 u.olor = GRAY 9 or vrtx v in Aj(u) o 10 i v.olor == WHITE 11 st.pus_k(v) 12 ls i u.olor!= WHITE 13 u.olor = BLACK 14 st.pop_k() st:

113 Dpt First-Sr DFS (G,s) 1 or vrtx u 2 u.olor = WHITE 3 st = nw Stk 4 st.pus_k(s) 5 wil st not mpty 6 u = st.k() 7 i u.olor == WHITE tn 8 u.olor = GRAY 9 or vrtx v in Aj(u) o 10 i v.olor == WHITE 11 st.pus_k(v) 12 ls i u.olor!= WHITE 13 u.olor = BLACK 14 st.pop_k() st:

114 Dpt First-Sr DFS (G,s) 1 or vrtx u 2 u.olor = WHITE 3 st = nw Stk 4 st.pus_k(s) 5 wil st not mpty 6 u = st.k() 7 i u.olor == WHITE tn 8 u.olor = GRAY 9 or vrtx v in Aj(u) o 10 i v.olor == WHITE 11 st.pus_k(v) 12 ls i u.olor!= WHITE 13 u.olor = BLACK 14 st.pop_k() st:

115 Dpt First-Sr DFS (G,s) 1 or vrtx u 2 u.olor = WHITE 3 st = nw Stk 4 st.pus_k(s) 5 wil st not mpty 6 u = st.k() 7 i u.olor == WHITE tn 8 u.olor = GRAY 9 or vrtx v in Aj(u) o 10 i v.olor == WHITE 11 st.pus_k(v) 12 ls i u.olor!= WHITE st: 13 u.olor = BLACK 14 st.pop_k()

116 Dpt First-Sr DFS (G,s) 1 or vrtx u 2 u.olor = WHITE 3 st = nw Stk 4 st.pus_k(s) 5 wil st not mpty 6 u = st.k() 7 i u.olor == WHITE tn 8 u.olor = GRAY 9 or vrtx v in Aj(u) o 10 i v.olor == WHITE 11 st.pus_k(v) 12 ls i u.olor!= WHITE st: 13 u.olor = BLACK 14 st.pop_k()

117 BFS vs. DFS Aloritm BFS n DFS r mor similr tn you tink Do w us FIFO/Quu (BFS) or LIFO/Stk (DFS) to stor vrtis s w in tm BFS-Visit (G, strt_no) 1 or vrtx u 2 u.olor = WHITE 3 u.pr = nil 4 sq = nw Quu 5 sq.pus_k(strt_no) 6 wil sq not mpty 7 u = sq.pop_ront() 8 i u.olor == WHITE 9 u.olor = GRAY 10 or vrtx v in Aj(u) o 11 sq.pus_k(v) DFS-Visit (G, strt_no) 1 or vrtx u 2 u.olor = WHITE 3 u.pr = nil 4 st = nw Stk 5 st.pus_k(strt_no) 6 wil st not mpty 7 u = st.pop_k() 8 i u.olor == WHITE 9 u.olor = GRAY 10 or vrtx v in Aj(u) o 11 st.pus_k(v)