From charlesreid1

 
(14 intermediate revisions by the same user not shown)
Line 1: Line 1:
Graphs are mathematical objects consisting of nodes and edges. The original inventor of graph theory was Leonhard Euler, who used it to solve the Seven Bridges of Königsberg problem.
Graphs are mathematical objects consisting of vertices and edges.  
 
The original inventor of graph theory was (arguably) Leonhard Euler, who used it to solve the Seven Bridges of Königsberg problem.


=Notes=
=Notes=
Line 7: Line 9:
The Goodrich book is less extensive, less mathematical, and more practical. The focus is on graph implementations, not on graph theory.
The Goodrich book is less extensive, less mathematical, and more practical. The focus is on graph implementations, not on graph theory.


See [[Graphs/Data Structures]]
===Data Structures===
 
Goodrich begins Chapter 12 by covering data structures common in storing graphs: [[Graphs/Data Structures]]
* Edge list (two linked lists, one for vertices, one for edges)
* Adjacency list (one linked list for vertices, storing references to edges)
* Adjacency map (map that stores vertices as keys, other vertices and the edge that links them to the key vertex as values)
* Adjacency matrix (N x N matrix, where N is number of vertices, with entry (i,j) indicating an edge connecting vertex i to vertex j)
 
===Graph Traversals===
 
{{Main|Graphs/Traversal}}
 
This is arguably the most important graph algorithm, as many, many graph algorithms are based on the traversal procedure.
 
Depth first search and traversals on graphs: [[Graphs/Depth First Traversal]]
 
Breadth first search and traversals on graphs: [[Graphs/Breadth First Traversal]]
 
Euler tours on graphs: [[Graphs/Euler Tour]]
 
===Transitive Closure===
 
Transitive closure graphs: [[Graphs/Transitive Closure]]
 
Floyd Warshall algorithm: [[Graphs/Floyd Warshall]]
 
===Directed Acyclic Graphs===
 
Directed acyclic graphs are graphs that are both directed and that do not contain cycle.
 
Detecting cycles: [[Graphs/Cycles]]
 
Directed acyclic graphs: [[Graphs/DAGs]]
 
Topographical sort of directed acyclic graphs: [[Graphs/Topological Sort]]
 
===Shortest Paths===
 
Dijkstra's algorithm:
 
===Minimum Spanning Trees===
 
Minimum spanning trees:


==Diestel - Graph Theory==
==Diestel - Graph Theory==
[[:Category:Diestel]]


Link to book: http://www.cs.unibo.it/babaoglu/courses/cas00-01/tutorials/GraphTheory.pdf
Link to book: http://www.cs.unibo.it/babaoglu/courses/cas00-01/tutorials/GraphTheory.pdf
Line 25: Line 67:
{{Main|Graphs/Matching}}
{{Main|Graphs/Matching}}


Chapter 2 introduces wave after wave of new terms and notation, so it's hard to follow. It essentially covers the concept of finding a set of edges that can connect all vertices between two subsets of vertices on a graph.
Chapter 2 introduces wave after wave of new terms and notation, and is a bit hard to follow. It covers the concept of finding a set of edges that can connect all vertices between two subsets of vertices on a graph.
 
It starts with the (easier) bipartite graph case, where we wish to find the minimum or maximum set of edges that connect every vertex in vertex set A with every vertex in vertex set B.
 
Then it moves on to the k-partite graph case, covering several "useful" theorems. I've no idea how any of this is actually useful, since there's no discussion of practical consequences.


===Chapter 3: Connectivity===
===Chapter 3: Connectivity===

Latest revision as of 11:11, 9 September 2017

Graphs are mathematical objects consisting of vertices and edges.

The original inventor of graph theory was (arguably) Leonhard Euler, who used it to solve the Seven Bridges of Königsberg problem.

Notes

Goodrich - Data Structures - Chapter 12

The Goodrich book is less extensive, less mathematical, and more practical. The focus is on graph implementations, not on graph theory.

Data Structures

Goodrich begins Chapter 12 by covering data structures common in storing graphs: Graphs/Data Structures

  • Edge list (two linked lists, one for vertices, one for edges)
  • Adjacency list (one linked list for vertices, storing references to edges)
  • Adjacency map (map that stores vertices as keys, other vertices and the edge that links them to the key vertex as values)
  • Adjacency matrix (N x N matrix, where N is number of vertices, with entry (i,j) indicating an edge connecting vertex i to vertex j)

Graph Traversals

This is arguably the most important graph algorithm, as many, many graph algorithms are based on the traversal procedure.

Depth first search and traversals on graphs: Graphs/Depth First Traversal

Breadth first search and traversals on graphs: Graphs/Breadth First Traversal

Euler tours on graphs: Graphs/Euler Tour

Transitive Closure

Transitive closure graphs: Graphs/Transitive Closure

Floyd Warshall algorithm: Graphs/Floyd Warshall

Directed Acyclic Graphs

Directed acyclic graphs are graphs that are both directed and that do not contain cycle.

Detecting cycles: Graphs/Cycles

Directed acyclic graphs: Graphs/DAGs

Topographical sort of directed acyclic graphs: Graphs/Topological Sort

Shortest Paths

Dijkstra's algorithm:

Minimum Spanning Trees

Minimum spanning trees:

Diestel - Graph Theory

Link to book: http://www.cs.unibo.it/babaoglu/courses/cas00-01/tutorials/GraphTheory.pdf

Chapter 1: Basics

Chapter 1 is a litany of definitions, concepts, and theorems important to laying the groundwork for discussing graph theory.

Chapter 2: Matching

Chapter 2 introduces wave after wave of new terms and notation, and is a bit hard to follow. It covers the concept of finding a set of edges that can connect all vertices between two subsets of vertices on a graph.

Chapter 3: Connectivity

Chapter 3 covers k-connectedness on graphs. Being k-connected means any two of its vertices can be joined by k independent paths.

Remaining Chapters

Reading this book is like trying to eat cardboard. No real insight or learning here.

Flags