From charlesreid1

 
(30 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=


==Diestel - Graph Theory==
==Goodrich - Data Structures - Chapter 12==


Link: http://www.cs.unibo.it/babaoglu/courses/cas00-01/tutorials/GraphTheory.pdf
The Goodrich book is less extensive, less mathematical, and more practical. The focus is on graph implementations, not on graph theory.


===Chapter 1: Basics===
===Data Structures===


Outline:
Goodrich begins Chapter 12 by covering data structures common in storing graphs: [[Graphs/Data Structures]]
* Definitions (graph, degree, path, cycle, connectivity, tree, forest, k-partite, contraction, Euler tours)
* 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 definitions====
===Graph Traversals===


A '''graph''' G consist of a set of nodes (vertices) V and edges E, denoted <math>G(V,E)</math>
{{Main|Graphs/Traversal}}


'''Vertex set''' on graph G is denoted <math>V(G)</math>
This is arguably the most important graph algorithm, as many, many graph algorithms are based on the traversal procedure.


'''Edge set''' on graph G is denoted <math>E(G)</math>
Depth first search and traversals on graphs: [[Graphs/Depth First Traversal]]


Number of vertices in a graph is called the '''order''' and is denoted <math>|G|</math>
Breadth first search and traversals on graphs: [[Graphs/Breadth First Traversal]]


Number of edges in a graph is denoted <math>||G||</math>
Euler tours on graphs: [[Graphs/Euler Tour]]


Vertex <math>v \in V</math> and edge <math>e \in E</math> are '''incident''' if the edge connects to the vertex.
===Transitive Closure===


Set of all edges at a particular vertex v is denoted <math>E(v)</math>
Transitive closure graphs: [[Graphs/Transitive Closure]]


Two vertices x, y are '''adjacent''' on a graph if there is an edge with endpoints x and y
Floyd Warshall algorithm: [[Graphs/Floyd Warshall]]


If all vertices are pairwise adjacent, the graph is '''complete'''
===Directed Acyclic Graphs===


For two graphs <math>G = (V,E)</math> and <math>G' = (V',E')</math>, the graphs are isomorphic if there exists a biijection from G to G'.  
Directed acyclic graphs are graphs that are both directed and that do not contain cycle.


If we have two graphs G and G', we say that G' is a subgraph of G if all V' subset of V and all E' subset of E
Detecting cycles: [[Graphs/Cycles]]


A subgraph G' is a '''spanning subgraph''' of G if all V' span all of G (if V' = V)
Directed acyclic graphs: [[Graphs/DAGs]]


====Degree definitions====
Topographical sort of directed acyclic graphs: [[Graphs/Topological Sort]]


Set of neighbors of a vertex v is denoted <math>N(v)</math>
===Shortest Paths===


Degree of a vertex v is denoted <math>d(v)</math> and is equal to the number of edges <math>|E(v)|</math> at v
Dijkstra's algorithm:


Vertex of degree 0 is '''isolated'''
===Minimum Spanning Trees===


The vertex on the graph with the smallest degree <math>\delta(G) = \min \left( d(v) | v \in V \right)</math> is the '''minimum degree of G'''
Minimum spanning trees:


The vertex on the graph with the largest degree <math>\Delta(G) = \max \left( d(v) | v \in V \right)</math> is the '''maximum degree of G'''
==Diestel - Graph Theory==


The average degree of G is given by the expression <math>d(G) = \dfrac{1}{|V|} \sum_{v \in V} d(v)</math>
Link to book: http://www.cs.unibo.it/babaoglu/courses/cas00-01/tutorials/GraphTheory.pdf


Ratio of edges to vertices on a graph is <math>\epsilon(G) = \dfrac{|E|}{|V|}</math>
===Chapter 1: Basics===


If we define edges as having two endpoints, then adding up the degrees of all vertices will lead to twice the number of edges. Mathematically: <math>|E| = \dfrac{1}{2} \sum_{v \in V} d(v) = \dfrac{1}{2} d(G) |V|</math>
{{Main|Graphs/Definitions}}


This leads to the identity <math> \epsilon(G) = \dfrac{1}{2} d(G)</math> and the theorem that the number of vertices of odd degree in a graph must always be even. Contrawise proof: if the number of vertices of odd degree is odd, the number of edges is not be an integer.
Chapter 1 is a litany of definitions, concepts, and theorems important to laying the groundwork for discussing graph theory.


===Chapter 2: Matching===
===Chapter 2: Matching===


Bipartite graph matching
{{Main|Graphs/Matching}}
 
k-partite graph matching
 
===Chapter 3: Connectivity===
 
2-connected graphs
 
3-connected graphs
 
Menger's Theorem
 
Mader's Theorem
 
Spanning trees (and edge-disjoint spanning trees)
 
===Chapter 4: Planar Graphs===
 
Topology
 
Plane graphs
 
Algebraic criteria
 
===Chapter 5: Coloring===
 
Coloring vertices
 
Coloring edges
 
===Chapter 6: Flows===
 
Circulations
 
Flows in networks
 
k-flows
 
Flow coloring
 
Tutte's flow conjectures
 
===Chapter 7 and 8: Substructures===
 
Subgraphs
 
Regularity lemma
 
Hadwigen's theorem
 
===Chapter 9: Ramsey Theory===
 
===Chapter 10: Hamilton Cycles===
 
 
 
==Wallis - Beginner's Guide to Graph Theory==
 
===Chapter 1: Graphs===


===Chapter 2: Walks, Paths, Cycles===
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: Connectivity===


===Chapter 4: Trees===
{{Main|Graphs/Connectivity}}
 
===Chapter 5: Linear Spaces===
 
===Chapter 6: Factorizations===
 
===Chapter 7: Coloring====
 
===Chapter 8: Planarity===
 
===Chapter 10: Ramsey Theory===
 
===Chapter 13: Network flows===
 
 


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=


[[Category:CS]]
{{GraphsFlag}}
[[Category:Math]]
[[Category:Graphs]]

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