User:David Eppstein/Graph Algorithms

Graph Algorithms

Graph Algorithms

edit
Introduction
Graph theory
Glossary of graph theory
Undirected graphs
Directed graphs
Directed acyclic graphs
Computer representations of graphs
Adjacency list
Adjacency matrix
Implicit graph
Graph exploration and vertex ordering
Depth-first search
Breadth-first search
Lexicographic breadth-first search
Iterative deepening depth-first search
Topological sorting
Application: Dependency graphs
Connectivity of undirected graphs
Connected components
Edge connectivity
Vertex connectivity
Menger's theorems on edge and vertex connectivity
Ear decomposition
Algorithms for 2-edge-connected components
Algorithms for 2-vertex-connected components
Algorithms for 3-vertex-connected components
Karger's algorithm for general vertex connectivity
Connectivity of directed graphs
Strongly connected components
Tarjan's strongly connected components algorithm
Path-based strong component algorithm
Kosaraju's strongly connected components algorithm
Reachability
Transitive closure
Transitive reduction
Application: 2-satisfiability
Shortest paths
Shortest path problem
Dijkstra's algorithm for single-source shortest paths with positive edge lengths
Bellman–Ford algorithm for single-source shortest paths allowing negative edge lengths
Johnson's algorithm for all-pairs shortest paths in sparse graphs
Floyd–Warshall algorithm for all-pairs shortest paths in dense graphs
Suurballe's algorithm for two shortest disjoint paths
Bidirectional search
A* search algorithm
Longest path problem
Widest path problem
Canadian traveller problem
K shortest path routing
Application: Centrality analysis of social networks
Application: Schulze voting system
Minimum spanning trees
Minimum spanning tree
Borůvka's algorithm
Kruskal's algorithm
Prim's algorithm
Edmonds's algorithm for directed minimum spanning trees
Degree-constrained spanning tree
Maximum-leaf spanning tree
K-minimum spanning tree
Capacitated minimum spanning tree
Application: Single-linkage clustering
Application: Maze generation
Cliques, independent sets, and coloring
Clique problem
Bron–Kerbosch algorithm for listing all maximal cliques
Independent set problem
Maximal independent set
Graph coloring
Bipartite graph
Greedy coloring
Application: Register allocation
Covering and domination
Vertex cover
Dominating set
Feedback vertex set
Feedback arc set
Tours
Eulerian path
Hamiltonian path
Hamiltonian path problem
Travelling salesman problem
Bottleneck traveling salesman problem
Christofides' heuristic for the TSP
Chinese postman problem
Matching
Matching
Hopcroft–Karp algorithm for maximum matching in bipartite graphs
Edmonds's algorithm for maximum matching in non-bipartite graphs
Assignment problem
Hungarian algorithm for the assignment problem
FKT algorithm for counting matchings in planar graphs
Stable marriage problem
Stable roommates problem
Permanent
Computing the permanent
Network flow
Maximum flow problem
Max-flow min-cut theorem
Ford–Fulkerson algorithm for maximum flows
Edmonds–Karp algorithm for maximum flows
Dinic's algorithm for maximum flows
Push–relabel maximum flow algorithm
Closure problem
Minimum-cost flow problem
Graph drawing and planar graphs
Planar graph
Dual graph
Fáry's theorem
Steinitz's theorem
Planarity testing
Left-right planarity test
Graph drawing
Force-directed graph drawing
Layered graph drawing
Upward planar drawing
Graph embedding
Application: Sociograms
Application: Concept maps
Special classes of graphs
Interval graph
Chordal graph
Perfect graph
Intersection graph
Unit disk graph
Line graph
Claw-free graph
Median graph
Graph isomorphism
Graph isomorphism
Graph isomorphism problem
Graph canonization
Subgraph isomorphism problem
Color-coding
Induced subgraph isomorphism problem
Maximum common induced subgraph
Maximum common edge subgraph
Graph decomposition and graph minors
Graph partition
Kernighan–Lin algorithm
Tree decomposition
Branch-decomposition
Path decomposition
Planar separator theorem
Graph minors
Courcelle's theorem
Robertson–Seymour theorem
Bidimensionality