SlideShare a Scribd company logo
Lecture 10:
    Graph Data Structures
         Steven Skiena

Department of Computer Science
 State University of New York
 Stony Brook, NY 11794–4400

http://www.cs.sunysb.edu/∼skiena
Sort Yourselves
Sort yourselves in alphabetical order so I can return the
midterms efficiently!
Graphs
Graphs are one of the unifying themes of computer science.
A graph G = (V, E) is defined by a set of vertices V , and
a set of edges E consisting of ordered or unordered pairs of
vertices from V .
Road Networks
In modeling a road network, the vertices may represent the
cities or junctions, certain pairs of which are connected by
roads/edges.
                                  Stony Brook                 Green Port

                                                                                      Orient Point
              vertices - cities
                                                Riverhead
              edges - roads
                                                                     Shelter Island




                                                                                      Montauk
                                  Islip                     Sag Harbor
Electronic Circuits
In an electronic circuit, with junctions as vertices as
components as edges.
                                 vertices: junctions

                                 edges: components
Flavors of Graphs
The first step in any graph problem is determining which
flavor of graph you are dealing with.
Learning to talk the talk is an important part of walking the
walk.
The flavor of graph has a big impact on which algorithms are
appropriate and efficient.
Directed vs. Undirected Graphs
A graph G = (V, E) is undirected if edge (x, y) ∈ E implies
that (y, x) is also in E.



                   undirected     directed




Road networks between cities are typically undirected.
Street networks within cities are almost always directed
because of one-way streets.
Most graphs of graph-theoretic interest are undirected.
Weighted vs. Unweighted Graphs
In weighted graphs, each edge (or vertex) of G is assigned a
numerical value, or weight.
                                                          5
                                     7
                                                                  2
                                                  3
                                         9            3

                                 5                    4       7

                                             12

                    unweighted           weighted




The edges of a road network graph might be weighted with
their length, drive-time or speed limit.
In unweighted graphs, there is no cost distinction between
various edges and vertices.
Simple vs. Non-simple Graphs
Certain types of edges complicate the task of working with
graphs. A self-loop is an edge (x, x) involving only one
vertex.
An edge (x, y) is a multi-edge if it occurs more than once in
the graph.



                     simple        non−simple




Any graph which avoids these structures is called simple.
Sparse vs. Dense Graphs
Graphs are sparse when only a small fraction of the possible
number of vertex pairs actually have edges defined between
them.



                    sparse         dense




Graphs are usually sparse due to application-specific con-
straints. Road networks must be sparse because of road
junctions.
Typically dense graphs have a quadratic number of edges
while sparse graphs are linear in size.
Cyclic vs. Acyclic Graphs
An acyclic graph does not contain any cycles. Trees are
connected acyclic undirected graphs.




                   cyclic            acyclic




Directed acyclic graphs are called DAGs. They arise naturally
in scheduling problems, where a directed edge (x, y) indicates
that x must occur before y.
Implicit vs. Explicit Graphs
Many graphs are not explicitly constructed and then tra-
versed, but built as we use them.



                   explicit   implicit




A good example arises in backtrack search.
Embedded vs. Topological Graphs
A graph is embedded if the vertices and edges have been
assigned geometric positions.



                    embedded      topological




Example: TSP or Shortest path on points in the plane.
Example: Grid graphs.
Example: Planar graphs.
Labeled vs. Unlabeled Graphs
In labeled graphs, each vertex is assigned a unique name or
identifier to distinguish it from all other vertices.
                                       B                  D


                                A                     E
                                              C



                                G                 F

                    unlabeled       labeled




An important graph problem is isomorphism testing, deter-
mining whether the topological structure of two graphs are in
fact identical if we ignore any labels.
The Friendship Graph
Consider a graph where the vertices are people, and there is
an edge between two people if and only if they are friends.
                 Ronald Reagan                    Frank Sinatra




                 George Bush                      Nancy Reagan




                                 Saddam Hussain




This graph is well-defined on any set of people: SUNY SB,
New York, or the world.
What questions might we ask about the friendship graph?
If I am your friend, does that mean you are my
friend?
A graph is undirected if (x, y) implies (y, x). Otherwise the
graph is directed.
The “heard-of” graph is directed since countless famous
people have never heard of me!
The “had-sex-with” graph is presumably undirected, since it
requires a partner.
Am I my own friend?
An edge of the form (x, x) is said to be a loop.
If x is y’s friend several times over, that could be modeled
using multiedges, multiple edges between the same pair of
vertices.
A graph is said to be simple if it contains no loops and
multiple edges.
Am I linked by some chain of friends to the
President?
A path is a sequence of edges connecting two vertices. Since
Mel Brooks is my father’s-sister’s-husband’s cousin, there is
a path between me and him!

                 Steve   Dad   Aunt Eve   Uncle Lenny   Cousin Mel
How close is my link to the President?
If I were trying to impress you with how tight I am with Mel
Brooks, I would be much better off saying that Uncle Lenny
knows him than to go into the details of how connected I am
to Uncle Lenny.
Thus we are often interested in the shortest path between two
nodes.
Is there a path of friends between any two
people?
A graph is connected if there is a path between any two
vertices.
A directed graph is strongly connected if there is a directed
path between any two vertices.
Who has the most friends?
The degree of a vertex is the number of edges adjacent to it.
Data Structures for Graphs: Adjacency Matrix
There are two main data structures used to represent graphs.
We assume the graph G = (V, E) contains n vertices and m
edges.
We can represent G using an n × n matrix M , where element
M [i, j] is, say, 1, if (i, j) is an edge of G, and 0 if it isn’t. It
may use excessive space for graphs with many vertices and
relatively few edges, however.
Can we save space if (1) the graph is undirected? (2) if the
graph is sparse?
Adjacency Lists
An adjacency list consists of a N × 1 array of pointers, where
the ith element points to a linked list of the edges incident on
vertex i.
             1        2
                                    1   2   3

                                    2   1   5   3   4
                             3      3   2   4

                                    4   2   5   3

             5        4             5   4   1   2




To test if edge (i, j) is in the graph, we search the ith list for
j, which takes O(di ), where di is the degree of the ith vertex.
Note that di can be much less than n when the graph is sparse.
If necessary, the two copies of each edge can be linked by a
pointer to facilitate deletions.
Tradeoffs Between Adjacency Lists and
Adjacency Matrices

               Comparison                                         Winner
               Faster to test if (x, y) exists?                  matrices
               Faster to find vertex degree?                           lists
               Less memory on small graphs?       lists (m + n) vs. (n2)
               Less memory on big graphs?           matrices (small win)
               Edge insertion or deletion?                  matrices O(1)
               Faster to traverse the graph?           lists m + n vs. n2
               Better for most problems?                              lists



Both representations are very useful and have different
properties, although adjacency lists are probably better for
most problems.
Adjancency List Representation

#define MAXV 100

typedef struct {
      int y;
      int weight;
      struct edgenode *next;
} edgenode;
Edge Representation

typedef struct {
      edgenode *edges[MAXV+1];
      int degree[MAXV+1];
      int nvertices;
      int nedges;
      bool directed;
} graph;


The degree field counts the number of meaningful entries for
the given vertex. An undirected edge (x, y) appears twice in
any adjacency-based graph structure, once as y in x’s list, and
once as x in y’s list.
Initializing a Graph

initialize graph(graph *g, bool directed)
{
       int i;

      g − > nvertices = 0;
      g − > nedges = 0;
      g − > directed = directed;

      for (i=1; i<=MAXV; i++) g− >degree[i] = 0;
      for (i=1; i<=MAXV; i++) g− >edges[i] = NULL;
}
Reading a Graph
A typical graph format consists of an initial line featuring
the number of vertices and edges in the graph, followed by
a listing of the edges at one vertex pair per line.
read graph(graph *g, bool directed)
{     int i;
      int m;
      int x, y;

      initialize graph(g, directed);

      scanf(”%d %d”,&(g− >nvertices),&m);

      for (i=1; i<=m; i++) {
             scanf(”%d %d”,&x,&y);
             insert edge(g,x,y,directed);
      }
}
Inserting an Edge

insert edge(graph *g, int x, int y, bool directed)
{
       edgenode *p;

      p = malloc(sizeof(edgenode));

      p− >weight = NULL;
      p− >y = y;
      p− >next = g− >edges[x];

      g− >edges[x] = p;

      g− >degree[x] ++;

      if (directed == FALSE)
             insert edge(g,y,x,TRUE);
      else
             g− >nedges ++;
}

More Related Content

What's hot

Graphs In Data Structure
Graphs In Data StructureGraphs In Data Structure
Graphs In Data Structure
Anuj Modi
 
introduction to graph theory
introduction to graph theoryintroduction to graph theory
introduction to graph theory
Chuckie Balbuena
 

What's hot (20)

Trees
TreesTrees
Trees
 
Graph theory
Graph  theoryGraph  theory
Graph theory
 
Dijkstra
DijkstraDijkstra
Dijkstra
 
Chapter 5 Graphs (1).ppt
Chapter 5 Graphs (1).pptChapter 5 Graphs (1).ppt
Chapter 5 Graphs (1).ppt
 
Data structure - Graph
Data structure - GraphData structure - Graph
Data structure - Graph
 
Introduction to Hypergraphs
Introduction to HypergraphsIntroduction to Hypergraphs
Introduction to Hypergraphs
 
Dijkstra’S Algorithm
Dijkstra’S AlgorithmDijkstra’S Algorithm
Dijkstra’S Algorithm
 
Graph traversals in Data Structures
Graph traversals in Data StructuresGraph traversals in Data Structures
Graph traversals in Data Structures
 
CS6702 graph theory and applications notes pdf book
CS6702 graph theory and applications notes pdf bookCS6702 graph theory and applications notes pdf book
CS6702 graph theory and applications notes pdf book
 
Graph Theory
Graph TheoryGraph Theory
Graph Theory
 
Graph Data Structure
Graph Data StructureGraph Data Structure
Graph Data Structure
 
Connectivity of graphs
Connectivity of graphsConnectivity of graphs
Connectivity of graphs
 
Spanning trees
Spanning treesSpanning trees
Spanning trees
 
Graph theory
Graph theoryGraph theory
Graph theory
 
Cs6702 graph theory and applications 2 marks questions and answers
Cs6702 graph theory and applications 2 marks questions and answersCs6702 graph theory and applications 2 marks questions and answers
Cs6702 graph theory and applications 2 marks questions and answers
 
Graph theory
Graph theoryGraph theory
Graph theory
 
Graphs In Data Structure
Graphs In Data StructureGraphs In Data Structure
Graphs In Data Structure
 
Graph Data Structure
Graph Data StructureGraph Data Structure
Graph Data Structure
 
introduction to graph theory
introduction to graph theoryintroduction to graph theory
introduction to graph theory
 
Single linked list
Single linked listSingle linked list
Single linked list
 

Viewers also liked

Graph representation
Graph representationGraph representation
Graph representation
Tech_MX
 
Basic Mathematics (PPISMP) - representing data into bar graph
Basic Mathematics (PPISMP) - representing data into bar graphBasic Mathematics (PPISMP) - representing data into bar graph
Basic Mathematics (PPISMP) - representing data into bar graph
T-ah Atirah
 
Parallel Algorithms for Geometric Graph Problems (at Stanford)
Parallel Algorithms for Geometric Graph Problems (at Stanford)Parallel Algorithms for Geometric Graph Problems (at Stanford)
Parallel Algorithms for Geometric Graph Problems (at Stanford)
Grigory Yaroslavtsev
 
Skiena algorithm 2007 lecture12 topological sort connectivity
Skiena algorithm 2007 lecture12 topological sort connectivitySkiena algorithm 2007 lecture12 topological sort connectivity
Skiena algorithm 2007 lecture12 topological sort connectivity
zukun
 
Simple algorithm & hopcroft karp for bipartite graph
Simple algorithm & hopcroft karp for bipartite graphSimple algorithm & hopcroft karp for bipartite graph
Simple algorithm & hopcroft karp for bipartite graph
Miguel Pereira
 
Minimum Spanning Tree
Minimum Spanning TreeMinimum Spanning Tree
Minimum Spanning Tree
zhaokatherine
 
Spanning trees & applications
Spanning trees & applicationsSpanning trees & applications
Spanning trees & applications
Tech_MX
 
Matrix Representation Of Graph
Matrix Representation Of GraphMatrix Representation Of Graph
Matrix Representation Of Graph
Abhishek Pachisia
 
Graph data structure
Graph data structureGraph data structure
Graph data structure
Tech_MX
 

Viewers also liked (20)

Graph algorithm
Graph algorithmGraph algorithm
Graph algorithm
 
Algorithms of graph
Algorithms of graphAlgorithms of graph
Algorithms of graph
 
Ch18
Ch18Ch18
Ch18
 
Graph representation
Graph representationGraph representation
Graph representation
 
Graph in data structure
Graph in data structureGraph in data structure
Graph in data structure
 
Basic Mathematics (PPISMP) - representing data into bar graph
Basic Mathematics (PPISMP) - representing data into bar graphBasic Mathematics (PPISMP) - representing data into bar graph
Basic Mathematics (PPISMP) - representing data into bar graph
 
02 newton-raphson
02 newton-raphson02 newton-raphson
02 newton-raphson
 
Parallel Algorithms for Geometric Graph Problems (at Stanford)
Parallel Algorithms for Geometric Graph Problems (at Stanford)Parallel Algorithms for Geometric Graph Problems (at Stanford)
Parallel Algorithms for Geometric Graph Problems (at Stanford)
 
Spark MLlib - Training Material
Spark MLlib - Training Material Spark MLlib - Training Material
Spark MLlib - Training Material
 
Skiena algorithm 2007 lecture12 topological sort connectivity
Skiena algorithm 2007 lecture12 topological sort connectivitySkiena algorithm 2007 lecture12 topological sort connectivity
Skiena algorithm 2007 lecture12 topological sort connectivity
 
Simple algorithm & hopcroft karp for bipartite graph
Simple algorithm & hopcroft karp for bipartite graphSimple algorithm & hopcroft karp for bipartite graph
Simple algorithm & hopcroft karp for bipartite graph
 
Minimum spanning tree
Minimum spanning treeMinimum spanning tree
Minimum spanning tree
 
Minimum spanning Tree
Minimum spanning TreeMinimum spanning Tree
Minimum spanning Tree
 
Minimum Spanning Tree
Minimum Spanning TreeMinimum Spanning Tree
Minimum Spanning Tree
 
My presentation minimum spanning tree
My presentation minimum spanning treeMy presentation minimum spanning tree
My presentation minimum spanning tree
 
Spanning trees & applications
Spanning trees & applicationsSpanning trees & applications
Spanning trees & applications
 
Prim's Algorithm on minimum spanning tree
Prim's Algorithm on minimum spanning treePrim's Algorithm on minimum spanning tree
Prim's Algorithm on minimum spanning tree
 
Matrix Representation Of Graph
Matrix Representation Of GraphMatrix Representation Of Graph
Matrix Representation Of Graph
 
Graph data structure
Graph data structureGraph data structure
Graph data structure
 
Lecture8 data structure(graph)
Lecture8 data structure(graph)Lecture8 data structure(graph)
Lecture8 data structure(graph)
 

Similar to Skiena algorithm 2007 lecture10 graph data strctures

Lecture 5b graphs and hashing
Lecture 5b graphs and hashingLecture 5b graphs and hashing
Lecture 5b graphs and hashing
Victor Palmar
 
Graph terminology and algorithm and tree.pptx
Graph terminology and algorithm and tree.pptxGraph terminology and algorithm and tree.pptx
Graph terminology and algorithm and tree.pptx
asimshahzad8611
 
On algorithmic problems concerning graphs of higher degree of symmetry
On algorithmic problems concerning graphs of higher degree of symmetryOn algorithmic problems concerning graphs of higher degree of symmetry
On algorithmic problems concerning graphs of higher degree of symmetry
graphhoc
 
Discrete-Chapter 11 Graphs Part I
Discrete-Chapter 11 Graphs Part IDiscrete-Chapter 11 Graphs Part I
Discrete-Chapter 11 Graphs Part I
Wongyos Keardsri
 
Unit II_Graph.pptxkgjrekjgiojtoiejhgnltegjte
Unit II_Graph.pptxkgjrekjgiojtoiejhgnltegjteUnit II_Graph.pptxkgjrekjgiojtoiejhgnltegjte
Unit II_Graph.pptxkgjrekjgiojtoiejhgnltegjte
pournima055
 

Similar to Skiena algorithm 2007 lecture10 graph data strctures (20)

Lecture 5b graphs and hashing
Lecture 5b graphs and hashingLecture 5b graphs and hashing
Lecture 5b graphs and hashing
 
FREQUENT SUBGRAPH MINING ALGORITHMS - A SURVEY AND FRAMEWORK FOR CLASSIFICATION
FREQUENT SUBGRAPH MINING ALGORITHMS - A SURVEY AND FRAMEWORK FOR CLASSIFICATIONFREQUENT SUBGRAPH MINING ALGORITHMS - A SURVEY AND FRAMEWORK FOR CLASSIFICATION
FREQUENT SUBGRAPH MINING ALGORITHMS - A SURVEY AND FRAMEWORK FOR CLASSIFICATION
 
Graph theory concepts complex networks presents-rouhollah nabati
Graph theory concepts   complex networks presents-rouhollah nabatiGraph theory concepts   complex networks presents-rouhollah nabati
Graph theory concepts complex networks presents-rouhollah nabati
 
Spanningtreesppt
SpanningtreespptSpanningtreesppt
Spanningtreesppt
 
Data Structures and Agorithm: DS 21 Graph Theory.pptx
Data Structures and Agorithm: DS 21 Graph Theory.pptxData Structures and Agorithm: DS 21 Graph Theory.pptx
Data Structures and Agorithm: DS 21 Graph Theory.pptx
 
Graph Databases: Trends in the Web of Data
Graph Databases: Trends in the Web of DataGraph Databases: Trends in the Web of Data
Graph Databases: Trends in the Web of Data
 
Graph Introduction.ppt
Graph Introduction.pptGraph Introduction.ppt
Graph Introduction.ppt
 
ON ALGORITHMIC PROBLEMS CONCERNING GRAPHS OF HIGHER DEGREE OF SYMMETRY
ON ALGORITHMIC PROBLEMS CONCERNING GRAPHS OF HIGHER DEGREE OF SYMMETRYON ALGORITHMIC PROBLEMS CONCERNING GRAPHS OF HIGHER DEGREE OF SYMMETRY
ON ALGORITHMIC PROBLEMS CONCERNING GRAPHS OF HIGHER DEGREE OF SYMMETRY
 
Problem-Solving using Graph Traversals: Searching, Scoring, Ranking, and Reco...
Problem-Solving using Graph Traversals: Searching, Scoring, Ranking, and Reco...Problem-Solving using Graph Traversals: Searching, Scoring, Ranking, and Reco...
Problem-Solving using Graph Traversals: Searching, Scoring, Ranking, and Reco...
 
Graph terminology and algorithm and tree.pptx
Graph terminology and algorithm and tree.pptxGraph terminology and algorithm and tree.pptx
Graph terminology and algorithm and tree.pptx
 
26 spanning
26 spanning26 spanning
26 spanning
 
Graph
GraphGraph
Graph
 
On algorithmic problems concerning graphs of higher degree of symmetry
On algorithmic problems concerning graphs of higher degree of symmetryOn algorithmic problems concerning graphs of higher degree of symmetry
On algorithmic problems concerning graphs of higher degree of symmetry
 
Discrete-Chapter 11 Graphs Part I
Discrete-Chapter 11 Graphs Part IDiscrete-Chapter 11 Graphs Part I
Discrete-Chapter 11 Graphs Part I
 
Unit II_Graph.pptxkgjrekjgiojtoiejhgnltegjte
Unit II_Graph.pptxkgjrekjgiojtoiejhgnltegjteUnit II_Graph.pptxkgjrekjgiojtoiejhgnltegjte
Unit II_Graph.pptxkgjrekjgiojtoiejhgnltegjte
 
Graphs
GraphsGraphs
Graphs
 
Graceful labelings
Graceful labelingsGraceful labelings
Graceful labelings
 
Lecture 2.3.1 Graph.pptx
Lecture 2.3.1 Graph.pptxLecture 2.3.1 Graph.pptx
Lecture 2.3.1 Graph.pptx
 
Unit-6 Graph.ppsx ppt
Unit-6 Graph.ppsx                                       pptUnit-6 Graph.ppsx                                       ppt
Unit-6 Graph.ppsx ppt
 
Graph
GraphGraph
Graph
 

More from zukun

My lyn tutorial 2009
My lyn tutorial 2009My lyn tutorial 2009
My lyn tutorial 2009
zukun
 
ETHZ CV2012: Tutorial openCV
ETHZ CV2012: Tutorial openCVETHZ CV2012: Tutorial openCV
ETHZ CV2012: Tutorial openCV
zukun
 
ETHZ CV2012: Information
ETHZ CV2012: InformationETHZ CV2012: Information
ETHZ CV2012: Information
zukun
 
Siwei lyu: natural image statistics
Siwei lyu: natural image statisticsSiwei lyu: natural image statistics
Siwei lyu: natural image statistics
zukun
 
Lecture9 camera calibration
Lecture9 camera calibrationLecture9 camera calibration
Lecture9 camera calibration
zukun
 
Brunelli 2008: template matching techniques in computer vision
Brunelli 2008: template matching techniques in computer visionBrunelli 2008: template matching techniques in computer vision
Brunelli 2008: template matching techniques in computer vision
zukun
 
Modern features-part-4-evaluation
Modern features-part-4-evaluationModern features-part-4-evaluation
Modern features-part-4-evaluation
zukun
 
Modern features-part-3-software
Modern features-part-3-softwareModern features-part-3-software
Modern features-part-3-software
zukun
 
Modern features-part-2-descriptors
Modern features-part-2-descriptorsModern features-part-2-descriptors
Modern features-part-2-descriptors
zukun
 
Modern features-part-1-detectors
Modern features-part-1-detectorsModern features-part-1-detectors
Modern features-part-1-detectors
zukun
 
Modern features-part-0-intro
Modern features-part-0-introModern features-part-0-intro
Modern features-part-0-intro
zukun
 
Lecture 02 internet video search
Lecture 02 internet video searchLecture 02 internet video search
Lecture 02 internet video search
zukun
 
Lecture 01 internet video search
Lecture 01 internet video searchLecture 01 internet video search
Lecture 01 internet video search
zukun
 
Lecture 03 internet video search
Lecture 03 internet video searchLecture 03 internet video search
Lecture 03 internet video search
zukun
 
Icml2012 tutorial representation_learning
Icml2012 tutorial representation_learningIcml2012 tutorial representation_learning
Icml2012 tutorial representation_learning
zukun
 
Advances in discrete energy minimisation for computer vision
Advances in discrete energy minimisation for computer visionAdvances in discrete energy minimisation for computer vision
Advances in discrete energy minimisation for computer vision
zukun
 
Gephi tutorial: quick start
Gephi tutorial: quick startGephi tutorial: quick start
Gephi tutorial: quick start
zukun
 
EM algorithm and its application in probabilistic latent semantic analysis
EM algorithm and its application in probabilistic latent semantic analysisEM algorithm and its application in probabilistic latent semantic analysis
EM algorithm and its application in probabilistic latent semantic analysis
zukun
 
Object recognition with pictorial structures
Object recognition with pictorial structuresObject recognition with pictorial structures
Object recognition with pictorial structures
zukun
 
Iccv2011 learning spatiotemporal graphs of human activities
Iccv2011 learning spatiotemporal graphs of human activities Iccv2011 learning spatiotemporal graphs of human activities
Iccv2011 learning spatiotemporal graphs of human activities
zukun
 

More from zukun (20)

My lyn tutorial 2009
My lyn tutorial 2009My lyn tutorial 2009
My lyn tutorial 2009
 
ETHZ CV2012: Tutorial openCV
ETHZ CV2012: Tutorial openCVETHZ CV2012: Tutorial openCV
ETHZ CV2012: Tutorial openCV
 
ETHZ CV2012: Information
ETHZ CV2012: InformationETHZ CV2012: Information
ETHZ CV2012: Information
 
Siwei lyu: natural image statistics
Siwei lyu: natural image statisticsSiwei lyu: natural image statistics
Siwei lyu: natural image statistics
 
Lecture9 camera calibration
Lecture9 camera calibrationLecture9 camera calibration
Lecture9 camera calibration
 
Brunelli 2008: template matching techniques in computer vision
Brunelli 2008: template matching techniques in computer visionBrunelli 2008: template matching techniques in computer vision
Brunelli 2008: template matching techniques in computer vision
 
Modern features-part-4-evaluation
Modern features-part-4-evaluationModern features-part-4-evaluation
Modern features-part-4-evaluation
 
Modern features-part-3-software
Modern features-part-3-softwareModern features-part-3-software
Modern features-part-3-software
 
Modern features-part-2-descriptors
Modern features-part-2-descriptorsModern features-part-2-descriptors
Modern features-part-2-descriptors
 
Modern features-part-1-detectors
Modern features-part-1-detectorsModern features-part-1-detectors
Modern features-part-1-detectors
 
Modern features-part-0-intro
Modern features-part-0-introModern features-part-0-intro
Modern features-part-0-intro
 
Lecture 02 internet video search
Lecture 02 internet video searchLecture 02 internet video search
Lecture 02 internet video search
 
Lecture 01 internet video search
Lecture 01 internet video searchLecture 01 internet video search
Lecture 01 internet video search
 
Lecture 03 internet video search
Lecture 03 internet video searchLecture 03 internet video search
Lecture 03 internet video search
 
Icml2012 tutorial representation_learning
Icml2012 tutorial representation_learningIcml2012 tutorial representation_learning
Icml2012 tutorial representation_learning
 
Advances in discrete energy minimisation for computer vision
Advances in discrete energy minimisation for computer visionAdvances in discrete energy minimisation for computer vision
Advances in discrete energy minimisation for computer vision
 
Gephi tutorial: quick start
Gephi tutorial: quick startGephi tutorial: quick start
Gephi tutorial: quick start
 
EM algorithm and its application in probabilistic latent semantic analysis
EM algorithm and its application in probabilistic latent semantic analysisEM algorithm and its application in probabilistic latent semantic analysis
EM algorithm and its application in probabilistic latent semantic analysis
 
Object recognition with pictorial structures
Object recognition with pictorial structuresObject recognition with pictorial structures
Object recognition with pictorial structures
 
Iccv2011 learning spatiotemporal graphs of human activities
Iccv2011 learning spatiotemporal graphs of human activities Iccv2011 learning spatiotemporal graphs of human activities
Iccv2011 learning spatiotemporal graphs of human activities
 

Recently uploaded

Recently uploaded (20)

"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
Agentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdfAgentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdf
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara Laskowska
 
In-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT ProfessionalsIn-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT Professionals
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John Staveley
 
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsPLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. Startups
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
 
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
 
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCustom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
 

Skiena algorithm 2007 lecture10 graph data strctures

  • 1. Lecture 10: Graph Data Structures Steven Skiena Department of Computer Science State University of New York Stony Brook, NY 11794–4400 http://www.cs.sunysb.edu/∼skiena
  • 2. Sort Yourselves Sort yourselves in alphabetical order so I can return the midterms efficiently!
  • 3. Graphs Graphs are one of the unifying themes of computer science. A graph G = (V, E) is defined by a set of vertices V , and a set of edges E consisting of ordered or unordered pairs of vertices from V .
  • 4. Road Networks In modeling a road network, the vertices may represent the cities or junctions, certain pairs of which are connected by roads/edges. Stony Brook Green Port Orient Point vertices - cities Riverhead edges - roads Shelter Island Montauk Islip Sag Harbor
  • 5. Electronic Circuits In an electronic circuit, with junctions as vertices as components as edges. vertices: junctions edges: components
  • 6. Flavors of Graphs The first step in any graph problem is determining which flavor of graph you are dealing with. Learning to talk the talk is an important part of walking the walk. The flavor of graph has a big impact on which algorithms are appropriate and efficient.
  • 7. Directed vs. Undirected Graphs A graph G = (V, E) is undirected if edge (x, y) ∈ E implies that (y, x) is also in E. undirected directed Road networks between cities are typically undirected. Street networks within cities are almost always directed because of one-way streets. Most graphs of graph-theoretic interest are undirected.
  • 8. Weighted vs. Unweighted Graphs In weighted graphs, each edge (or vertex) of G is assigned a numerical value, or weight. 5 7 2 3 9 3 5 4 7 12 unweighted weighted The edges of a road network graph might be weighted with their length, drive-time or speed limit. In unweighted graphs, there is no cost distinction between various edges and vertices.
  • 9. Simple vs. Non-simple Graphs Certain types of edges complicate the task of working with graphs. A self-loop is an edge (x, x) involving only one vertex. An edge (x, y) is a multi-edge if it occurs more than once in the graph. simple non−simple Any graph which avoids these structures is called simple.
  • 10. Sparse vs. Dense Graphs Graphs are sparse when only a small fraction of the possible number of vertex pairs actually have edges defined between them. sparse dense Graphs are usually sparse due to application-specific con- straints. Road networks must be sparse because of road junctions. Typically dense graphs have a quadratic number of edges while sparse graphs are linear in size.
  • 11. Cyclic vs. Acyclic Graphs An acyclic graph does not contain any cycles. Trees are connected acyclic undirected graphs. cyclic acyclic Directed acyclic graphs are called DAGs. They arise naturally in scheduling problems, where a directed edge (x, y) indicates that x must occur before y.
  • 12. Implicit vs. Explicit Graphs Many graphs are not explicitly constructed and then tra- versed, but built as we use them. explicit implicit A good example arises in backtrack search.
  • 13. Embedded vs. Topological Graphs A graph is embedded if the vertices and edges have been assigned geometric positions. embedded topological Example: TSP or Shortest path on points in the plane. Example: Grid graphs. Example: Planar graphs.
  • 14. Labeled vs. Unlabeled Graphs In labeled graphs, each vertex is assigned a unique name or identifier to distinguish it from all other vertices. B D A E C G F unlabeled labeled An important graph problem is isomorphism testing, deter- mining whether the topological structure of two graphs are in fact identical if we ignore any labels.
  • 15. The Friendship Graph Consider a graph where the vertices are people, and there is an edge between two people if and only if they are friends. Ronald Reagan Frank Sinatra George Bush Nancy Reagan Saddam Hussain This graph is well-defined on any set of people: SUNY SB, New York, or the world. What questions might we ask about the friendship graph?
  • 16. If I am your friend, does that mean you are my friend? A graph is undirected if (x, y) implies (y, x). Otherwise the graph is directed. The “heard-of” graph is directed since countless famous people have never heard of me! The “had-sex-with” graph is presumably undirected, since it requires a partner.
  • 17. Am I my own friend? An edge of the form (x, x) is said to be a loop. If x is y’s friend several times over, that could be modeled using multiedges, multiple edges between the same pair of vertices. A graph is said to be simple if it contains no loops and multiple edges.
  • 18. Am I linked by some chain of friends to the President? A path is a sequence of edges connecting two vertices. Since Mel Brooks is my father’s-sister’s-husband’s cousin, there is a path between me and him! Steve Dad Aunt Eve Uncle Lenny Cousin Mel
  • 19. How close is my link to the President? If I were trying to impress you with how tight I am with Mel Brooks, I would be much better off saying that Uncle Lenny knows him than to go into the details of how connected I am to Uncle Lenny. Thus we are often interested in the shortest path between two nodes.
  • 20. Is there a path of friends between any two people? A graph is connected if there is a path between any two vertices. A directed graph is strongly connected if there is a directed path between any two vertices.
  • 21. Who has the most friends? The degree of a vertex is the number of edges adjacent to it.
  • 22. Data Structures for Graphs: Adjacency Matrix There are two main data structures used to represent graphs. We assume the graph G = (V, E) contains n vertices and m edges. We can represent G using an n × n matrix M , where element M [i, j] is, say, 1, if (i, j) is an edge of G, and 0 if it isn’t. It may use excessive space for graphs with many vertices and relatively few edges, however. Can we save space if (1) the graph is undirected? (2) if the graph is sparse?
  • 23. Adjacency Lists An adjacency list consists of a N × 1 array of pointers, where the ith element points to a linked list of the edges incident on vertex i. 1 2 1 2 3 2 1 5 3 4 3 3 2 4 4 2 5 3 5 4 5 4 1 2 To test if edge (i, j) is in the graph, we search the ith list for j, which takes O(di ), where di is the degree of the ith vertex. Note that di can be much less than n when the graph is sparse. If necessary, the two copies of each edge can be linked by a pointer to facilitate deletions.
  • 24. Tradeoffs Between Adjacency Lists and Adjacency Matrices Comparison Winner Faster to test if (x, y) exists? matrices Faster to find vertex degree? lists Less memory on small graphs? lists (m + n) vs. (n2) Less memory on big graphs? matrices (small win) Edge insertion or deletion? matrices O(1) Faster to traverse the graph? lists m + n vs. n2 Better for most problems? lists Both representations are very useful and have different properties, although adjacency lists are probably better for most problems.
  • 25. Adjancency List Representation #define MAXV 100 typedef struct { int y; int weight; struct edgenode *next; } edgenode;
  • 26. Edge Representation typedef struct { edgenode *edges[MAXV+1]; int degree[MAXV+1]; int nvertices; int nedges; bool directed; } graph; The degree field counts the number of meaningful entries for the given vertex. An undirected edge (x, y) appears twice in any adjacency-based graph structure, once as y in x’s list, and once as x in y’s list.
  • 27. Initializing a Graph initialize graph(graph *g, bool directed) { int i; g − > nvertices = 0; g − > nedges = 0; g − > directed = directed; for (i=1; i<=MAXV; i++) g− >degree[i] = 0; for (i=1; i<=MAXV; i++) g− >edges[i] = NULL; }
  • 28. Reading a Graph A typical graph format consists of an initial line featuring the number of vertices and edges in the graph, followed by a listing of the edges at one vertex pair per line. read graph(graph *g, bool directed) { int i; int m; int x, y; initialize graph(g, directed); scanf(”%d %d”,&(g− >nvertices),&m); for (i=1; i<=m; i++) { scanf(”%d %d”,&x,&y); insert edge(g,x,y,directed); } }
  • 29. Inserting an Edge insert edge(graph *g, int x, int y, bool directed) { edgenode *p; p = malloc(sizeof(edgenode)); p− >weight = NULL; p− >y = y; p− >next = g− >edges[x]; g− >edges[x] = p; g− >degree[x] ++; if (directed == FALSE) insert edge(g,y,x,TRUE); else g− >nedges ++; }