Graph Algorithms. Overview Graphs are very general data structures – data structures such as dense and sparse matrices, sets, multi-sets, etc. can be.

Slides:



Advertisements
Similar presentations
Single Source Shortest Paths
Advertisements

§3 Shortest Path Algorithms Given a digraph G = ( V, E ), and a cost function c( e ) for e  E( G ). The length of a path P from source to destination.
October 31, Algorithms and Data Structures Lecture XIII Simonas Šaltenis Nykredit Center for Database Research Aalborg University
Design and Analysis of Algorithms Single-source shortest paths, all-pairs shortest paths Haidong Xue Summer 2012, at GSU.
CSE 101- Winter ‘15 Discussion Section January 26th 2015.
Graphs Chapter 12. Chapter Objectives  To become familiar with graph terminology and the different types of graphs  To study a Graph ADT and different.
Midwestern State University Department of Computer Science Dr. Ranette Halverson CMPS 2433 CHAPTER 4 - PART 2 GRAPHS 1.
CSCI 3160 Design and Analysis of Algorithms Tutorial 2 Chengyu Lin.
C++ Programming: Program Design Including Data Structures, Third Edition Chapter 21: Graphs.
The of Parallelism in Algorithms Keshav Pingali The University of Texas at Austin Joint work with D.Nguyen, M.Kulkarni, M.Burtscher, A.Hassaan, R.Kaleem,
Chapter 23 Minimum Spanning Trees
Tirgul 12 Algorithm for Single-Source-Shortest-Paths (s-s-s-p) Problem Application of s-s-s-p for Solving a System of Difference Constraints.
CS 311 Graph Algorithms. Definitions A Graph G = (V, E) where V is a set of vertices and E is a set of edges, An edge is a pair (u,v) where u,v  V. If.
Chapter 9 Graph algorithms. Sample Graph Problems Path problems. Connectedness problems. Spanning tree problems.
Shortest Paths Definitions Single Source Algorithms –Bellman Ford –DAG shortest path algorithm –Dijkstra All Pairs Algorithms –Using Single Source Algorithms.
Graphs Chapter 12. Chapter 12: Graphs2 Chapter Objectives To become familiar with graph terminology and the different types of graphs To study a Graph.
Chapter 9 Graph algorithms Lec 21 Dec 1, Sample Graph Problems Path problems. Connectedness problems. Spanning tree problems.
Shortest Path Algorithms
Shortest Paths Definitions Single Source Algorithms
Tirgul 13. Unweighted Graphs Wishful Thinking – you decide to go to work on your sun-tan in ‘ Hatzuk ’ beach in Tel-Aviv. Therefore, you take your swimming.
All-Pairs Shortest Paths
Dijkstra’s Algorithm Slide Courtesy: Uwash, UT 1.
Shortest Paths1 C B A E D F
CS 473 All Pairs Shortest Paths1 CS473 – Algorithms I All Pairs Shortest Paths.
A Lightweight Infrastructure for Graph Analytics Donald Nguyen Andrew Lenharth and Keshav Pingali The University of Texas at Austin.
Theory of Computing Lecture 7 MAS 714 Hartmut Klauck.
Social Media Mining Graph Essentials.
Graph Algorithms. Overview Graphs are very general data structures – data structures such as dense and sparse matrices, sets, multi- sets, etc. can be.
Shortest Path Algorithms. Kruskal’s Algorithm We construct a set of edges A satisfying the following invariant:  A is a subset of some MST We start with.
Algorithmic Foundations COMP108 COMP108 Algorithmic Foundations Greedy methods Prudence Wong
1 Shortest Path Algorithms Andreas Klappenecker [based on slides by Prof. Welch]
CSCI-455/552 Introduction to High Performance Computing Lecture 18.
1 Graphs Algorithms Sections 9.1, 9.2, and Graphs v1v1 v2v2 v5v5 v7v7 v8v8 v3v3 v6v6 v4v4 A graph G = (V, E) –V: set of vertices (nodes) –E: set.
Chapter 9 – Graphs A graph G=(V,E) – vertices and edges
1 Shortest Path Problem Topic 11 ITS033 – Programming & Algorithms C B A E D F Asst. Prof. Dr. Bunyarit Uyyanonvara IT Program,
Dijkstras Algorithm Named after its discoverer, Dutch computer scientist Edsger Dijkstra, is an algorithm that solves the single-source shortest path problem.
Elixir : A System for Synthesizing Concurrent Graph Programs
1 ELEC692 Fall 2004 Lecture 1b ELEC692 Lecture 1a Introduction to graph theory and algorithm.
Graph Algorithms. Definitions and Representation An undirected graph G is a pair (V,E), where V is a finite set of points called vertices and E is a finite.
Algorithm Course Dr. Aref Rashad February Algorithms Course..... Dr. Aref Rashad Part: 6 Shortest Path Algorithms.
Introduction to Algorithms Jiafen Liu Sept
Graphs. Definitions A graph is two sets. A graph is two sets. –A set of nodes or vertices V –A set of edges E Edges connect nodes. Edges connect nodes.
CSE 2331 / 5331 Topic 12: Shortest Path Basics Dijkstra Algorithm Relaxation Bellman-Ford Alg.
Shortest Path Algorithms. Definitions Variants  Single-source shortest-paths problem: Given a graph, finding a shortest path from a given source.
The all-pairs shortest path problem (APSP) input: a directed graph G = (V, E) with edge weights goal: find a minimum weight (shortest) path between every.
Implementing Parallel Graph Algorithms Spring 2015 Implementing Parallel Graph Algorithms Lecture 2: Introduction Roman Manevich Ben-Gurion University.
Most of contents are provided by the website Graph Essentials TJTSD66: Advanced Topics in Social Media.
Runtime O(VE), for +/- edges, Detects existence of neg. loops
Graphs A ‘Graph’ is a diagram that shows how things are connected together. It makes no attempt to draw actual paths or routes and scale is generally inconsequential.
1 Prim’s algorithm. 2 Minimum Spanning Tree Given a weighted undirected graph G, find a tree T that spans all the vertices of G and minimizes the sum.
Graphs Chapter 12. Chapter 12: Graphs2 Chapter Objectives To become familiar with graph terminology and the different types of graphs To study a Graph.
Suppose G = (V, E) is a directed network. Each edge (i,j) in E has an associated ‘length’ c ij (cost, time, distance, …). Determine a path of shortest.
Introduction to Graph Theory By: Arun Kumar (Asst. Professor) (Asst. Professor)
Chapter 20: Graphs. Objectives In this chapter, you will: – Learn about graphs – Become familiar with the basic terminology of graph theory – Discover.
Single Source Shortest Paths Chapter 24 CSc 4520/6520 Fall 2013 Slides adapted from George Bebis, University of Reno, Nevada.
1 GRAPHS – Definitions A graph G = (V, E) consists of –a set of vertices, V, and –a set of edges, E, where each edge is a pair (v,w) s.t. v,w  V Vertices.
1 Data Structures and Algorithms Graphs. 2 Graphs Basic Definitions Paths and Cycles Connectivity Other Properties Representation Examples of Graph Algorithms:
CSE 373: Data Structures and Algorithms Lecture 21: Graphs V 1.
COMP108 Algorithmic Foundations Greedy methods
CSC317 Shortest path algorithms
Algorithms (2IL15) – Lecture 5 SINGLE-SOURCE SHORTEST PATHS
Slide Courtesy: Uwash, UT
Lecture 14 Shortest Path (cont’d) Minimum Spanning Tree
CSE 373 Data Structures and Algorithms
Slide Courtesy: Uwash, UT
CSE 417: Algorithms and Computational Complexity
Lecture 13 Shortest Path (cont’d) Minimum Spanning Tree
Chapter 9 Graph algorithms
INTRODUCTION A graph G=(V,E) consists of a finite non empty set of vertices V , and a finite set of edges E which connect pairs of vertices .
More Graphs Lecture 19 CS2110 – Fall 2009.
Presentation transcript:

Graph Algorithms

Overview Graphs are very general data structures – data structures such as dense and sparse matrices, sets, multi-sets, etc. can be viewed as representations of graphs Algorithms on matrices/sets/etc. can usually be interpreted as graph algorithms – but it may or may not be useful to do this – sparse matrix algorithms can be usefully viewed as graph algorithms Some graph algorithms can be interpreted as matrix algorithms – but it may or may not be useful to do this – may be useful if graph structure is fixed

Graph-matrix duality Graph (V,E) as a matrix – Choose an ordering of vertices – Number them sequentially – Fill in |V|x|V| matrix – Called “incidence matrix” of graph Observations: – Diagonal entries: weights on self- loops – Symmetric matrix  undirected graph – Lower triangular matrix  no edges from lower numbered nodes to higher numbered nodes – Dense matrix  clique (edge between every pair of nodes) a b c d e f g 0 a f c e d 0 b 0 0 g

Matrix-vector multiplication Matrix computation: y = Ax Graph interpretation: – Each node i has two values (labels) x(i) and y(i) – Each node i updates its label y using the x value from each of its neighbors j, scaled by the label on edge (i,j) Observation: – Graph perspective shows dense MVM is just a special case of sparse MVM a b c d e f g 0 a f c e d 0 b 0 0 g A

Graph set/multiset duality Set/multiset is isomorphic to a graph – labeled nodes – no edges “Opposite” of clique Algorithms on sets/multisets can be viewed as graph algorithms Usually no particular advantage to doing this but it shows generality of graph algorithms a b c e f {a,c,f,e,b} Set Graph

Graph algorithm examples Problem: single-source shortest-path (SSSP) computation Formulation: – Given an undirected graph with positive weights on edges, and a node called the source – Compute the shortest distance from source to every other node Variations: – Negative edge weights but no negative weight cycles – All-pairs shortest paths Applications: – GPS devices for driving directions – social network analyses: centrality metrics A B C D E F H Node A is the source

SSSP Problem Many algorithms – Dijkstra (1959) – Bellman-Ford (1957) – Chaotic relaxation (1969) – Delta-stepping (1998) Common structure: – Each node has a label d containing shortest known distance to that node from source Initialized to 0 for source and infinity for all other nodes – Key operations: relax-edge(u,v): if d[v] > d[u]+w(u,v) then d[v]  d[u]+w(u,v) relax-node(u): relax all edges connected to u G A B C D E F H ∞ ∞ ∞ ∞ ∞ ∞ ∞

SSSP algorithms (I) Dijkstra’s algorithm (1959): – priority queue of nodes, ordered by shortest distance known to node – iterate over nodes in priority order – node is relaxed just once – work-efficient: O(|E|*lg(|V|)) Active nodes: – nodes in PQ: level has been lowered but node has not yet been relaxed Key data structures: – Graph – Work set/multiset: ordered Priority queue Parallelism in algorithm – Edges connected to node can be relaxed in parallel – Difficult to relax multiple nodes from priority queue in parallel – Little parallelism for sparse graphs H A B C D E F G Priority queue

SSSP algorithms (II) Chaotic relaxation (1969): – use set to track active nodes – iterate over nodes in any order – nodes can be relaxed many times may do more work than Dijkstra Key data structures: – Graph – Work set/multiset: unordered Parallelization: – process multiple nodes from work-set – need concurrent data structures concurrent set/multiset: ensure elements are added and removed from set correctly synchronization at graph nodes: ensure simultaneous updates to a node happen correctly (see next slide) A B C D E F G H AB C D E F 0 D Set

SSSP algorithms (II contd.) Need for synchronization at graph nodes – Suppose nodes B and C are relaxed simultaneously – Both relaxations may update value at D Value at D is infinity Relax-C operation reads this value and wants to update it to 3. At the same time, Relax-D operation reads D’s value and wants to update it to 12 If the two updates are not sequenced properly, final value at D after both relaxations may be 12, which is incorrect – One solution: ensure that the “read- modify-write” in edge relaxation is “atomic” – no other thread can read or write that location while the read- modify-write is happening Also need synchronization at node being relaxed to ensure its value is not changed by some other core when the node relaxation is going on A B C D E F G H B C 0 Set ∞ ∞ ∞ ∞ ∞

SSSP algorithms (III) Bellman-Ford (1957): – Iterate over all edges of graph in any order, relaxing each edge – Do this |V| times – O(|E|*|V|) Parallelization – Iterate over set of edges – Inspector-executor: use graph matching to generate a conflict- free schedule of edge relaxations after input graph is given – Edges in a matching do not have nodes in common so they can be relaxed without synchronization – Barrier synchronization between successive stages in schedule A B C E F H G 1. {(A,B),(C,D),(E,H)}, 2. {(A,C),(B,D),(E,G),(F,H)}, 3. {(D,E),(G,H)} 4. {(D,F)} Conflict-free schedule D

Matching Given a graph G = (V,E), a matching is a subset of edges such that no edges in the subset have a node in common – (eg) {(A,B),(C,D),(E,H)} – Not a matching: {(A,B),(A,C)} Maximal matching: a matching to which no new edge can be added without destroying matching property – (eg) {(A,B),(C,D),(E,H)} – (eg) {(A,C),(B,D)(E,G),(F,H)} – Can be computed in O(|E|) time using a simple greedy algorithm Maximum matching: matching that contains the largest number of edges – (eg) {(A,C),(B,D)(E,G),(F,H)} – Can be computed in time O(sqrt(|V|)|E|) A B C D E F H G 1. {(A,B),(C,D),(E,H)}, 2. {(A,C),(B,D),(E,G),(F,H)}, 3. {(D,E),(G,H)} 4. {(D,F)} Conflict-free schedule

SSSP algorithms (IV) Delta-stepping (1998) – variation of chaotic relaxation – active nodes currently closer to source are more likely to be chosen for processing from set Work-set/multiset: – Parameter:  – Sequence of sets – Nodes whose current distance is between n  and (n+1)  are put in the n th set – Nodes in each set are processed in parallel – Nodes in set n are completed before processing of nodes in set (n+1) are started  = 1: Dijkstra  = : Chaotic relaxation Picking an optimal  : – depends on graph and machine – Do experimentally A B C D E F G H  ∞

Abstraction of graph algorithms Operator formulation – Active elements: nodes or edges where there is work to be done – Operator: computation at active element Activity: application of operator to active element Neighborhood: graph elements read or written by activity – Ordering: order in which active elements must appear to have been processed Unordered algorithms: any order is fine (eg. chaotic relaxation) Ordered algorithms: algorithm- specific order (eg. Dijkstra) : active node : neighborhood

TAO analysis: algorithm abstraction : active node : neighborhood 15 Dijkstra SSSP: general graph, data-driven, ordered, local computation Chaotic relaxation SSSP: general graph, data-driven, unordered, local computation Bellman-Ford SSSP: general graph, topology-driven, unordered, local computation Delta-stepping SSSP: general graph, data-driven, ordered, localcomputation

Infrastructure for graph algorithms Concurrent data structures: – Concurrent graph data structure – Concurrent set/bag, priority queue – Can be very complex to implement One software architecture: – Exploit Wirth’s equation: Program = Algorithm + Data Structure Parallel program = Parallel algorithm + Parallel data structure = Operator + Schedule + Parallel data structure – Provide a library of concurrent data structures – Programmer specifies operator schedule for applying operator at different active elements This is the approach we use in the Galois project

Summary Graph algorithms are more complex than most computational science algorithms – Work may be created dynamically – Different orders of doing work may result in different amounts of work – Parallelism may not be known until runtime – Underlying graph structure may change dynamically SSSP algorithms illustrate most of this complexity so the SSSP problem is a good model problem for the study of parallel graph algorithms Operator formulation and TAO analysis are useful abstractions for understanding parallelism in algorithms Galois project: software architecture is based on these ideas – Library of concurrent data structures written by expert programmers – Joe programmer writes C++ code to specify operator and schedule