320 likes | 559 Views
Graph Searching. Overview. Graph Notation and Implementation BFS (Breadth First Search) DFS (Depth First Search) Topology SCC ( Strongly Connected Component ) Centre, Radius, Diameter Multi-state BFS. What is Graph?. 1. NT. Q. 4. vertex. WA. SA. NSW. 2. edge. V. 3. T. Graph.
E N D
Overview • Graph • Notation and Implementation • BFS (Breadth First Search) • DFS (Depth First Search) • Topology • SCC (Strongly Connected Component) • Centre, Radius, Diameter • Multi-state BFS
1 NT Q 4 vertex WA SA NSW 2 edge V 3 T Graph • A graph is defined as G=(V,E), i.e a set of vertices and edges, where • V is the set of vertices (singular: vertex) • E is the set of edges that connect some of the vertices
Graph • Directed/Undirected Graph • Weighted/Unweighted Graph • Connectivity
Representation of Graph • Adjacency Matrix • Adjacency list • Edge list
ancestors root parent siblings descendents children Graph • Tree
Depth-First Search (DFS) • Strategy: Go as far as you can (if you have not visit there), otherwise, go back and try another way
Implementation DFS (vertex u) { mark u as visited for each vertex v directly reachable from u if v is unvisited DFS (v) } • Initially all vertices are marked as unvisited
Topological Sort • Topological order: A numbering of the vertices of a directed acyclic graph such that every edge from a vertex numbered i to a vertex numbered j satisfies i<j • Topological Sort: Finding the topological order of a directed acyclic graph
Tsort Algorithm • If the graph has more then one vertex that has indegree 0, add a vertice to connect to all indegree-0 vertices • Let the indegree 0 vertice be s • Use s as start vertice, and compute the DFS forest • The death time of the vertices represent the reverse of topological order
Example: Assembly Line • In a factory, there is several process. Some need to be done before others. Can you order those processes so that they can be done smoothly? • Chris is now studying OI materials. There are many topics. He needs to master some basic topics before understanding those advanced one. Can you help him to plan a smooth study plan?
Example: SCC • A graph is strongly-connected if • for any pair of vertices u and v, one can go from u to v and from v to u. • Informally speaking, an SCC of a graph is a subset of vertices that • forms a strongly-connected subgraph • does not form a strongly-connected subgraph with the addition of any new vertex
Finding Shortest Path • How can we use DFS to find the shortest distance from a vertex to another? The distance of the first path found?
Breadth-First Search (BFS) • BFS tries to find the target from nearest vertices first. • BFS makes use of a queue to store visited (but not dead) vertices, expanding the path from the earliest visited vertices.
Queue: 4 1 3 6 2 5 Simulation of BFS 6 1 4 3 5 2
Implementation while queue Q not empty dequeue the first vertex u from Q for each vertex v directly reachable from u if v is unvisited enqueue v to Q mark v as visited • Initially all vertices except the start vertex are marked as unvisited and the queue contains the start vertex only
Advantages • Guarantee shortest paths for unweighted graphs • Use queue instead of recursive functions – Avoiding stack overflow
Flood Fill • An algorithm that determines the area connected to a given node in a multi-dimensional array • Start BFS/DFS from the given node, counting the total number of nodes visited • Example: Squareland (HKOI 2006)
Variations of BFS and DFS • Bidirectional Search (BDS) • Iterative Deepening Search(IDS)
start goal Bidirectional search (BDS) • Searches simultaneously from both the start vertex and goal vertex • Commonly implemented as bidirectional BFS
BDS Example: Bomber Man (1 Bomb) • find the shortest path from the upper-left corner to the lower-right corner in a maze using a bomb. The bomb can destroy a wall.
Bomber Man (1 Bomb) 1 2 3 4 13 12 11 12 4 10 7 6 6 7 8 9 8 5 9 5 4 3 2 1 10 11 12 13 Shortest Path length = 8 What will happen if we stop once we find a path?
Iterative deepening search (IDS) • Iteratively performs DFS with increasing depth bound • Shortest paths are guaranteed
IDS (pseudo code) DFS (vertex u, depth d) { mark u as visited if (d>0) for each vertex v directly reachable from u if v is unvisited DFS (v,d-1) } i=0 Do { DFS(start vertex,i) Increment i }While (target is not found)
IDS • The complexity of IDS is the same as DFS
Summary of DFS, BFS • We learned some variations of DFS and BFS • Bidirectional search (BDS) • Iterative deepening search (IDS)
Equation • Question: Find the number of solution of xi, given ki,pi. 1<=n<=6, 1<=xi<=150 • Vertex: possible values of • k1x1p1 , k1x1p1 + k2x2p2 , k1x1p1 + k2x2p2 + k3x3p3 , k4x4p4 , k4x4p4 + k5x5p5 , k4x4p4 + k5x5p5 + k6x6p6