# Graph (mathematics)

*This article presents the essential definitions. For a more complete account see*graph theory*. For another use of the term "graph" in mathematics, see*graph of a function*. For the more general concept of the graph of a relation, see*relation*.*

In mathematics and computer science, a **graph** is the basic object of study in graph theory. Informally speaking, a graph is a set of objects called *points* or *vertices* connected by links called *lines* or *edges*. In a graph proper, which is by default *undirected*, a line from point *A* to point *B* is considered to be the same thing as a line from point *B* to point *A*. In a *digraph*, short for *directed graph*, the two directions are counted as being distinct *arcs* or *directed edges*. Typically, a graph is depicted in diagrammatic form as a set of dots (for the points, vertices, or nodes), joined by curves (for the lines or edges).

## Definitions

Definitions in graph theory vary in the literature. The following are some of the more basic ways of defining graphs and related structures.

### Graph

A **graph** or **undirected graph** *G* is an ordered pair *G* := (*V*, *E*) that is subject to the following conditions:

*V*is a set of**vertices**or**nodes**,*E*is a set of unordered pairs of distinct vertices, called**edges**or**lines**.- The vertices belonging to an edge are called the
**ends**,**endpoints**, or**end vertices**of the edge.

*V* (and hence *E*) are usually taken to be finite sets, and many of the well-known results are not true (or are rather different) for **infinite graphs** because many of the arguments fail in the infinite case.

### Directed graph

A **directed graph** or **digraph** *G* is an ordered pair *G*:=(*V*, *A*) with

*V*, a set of**vertices**or**nodes**,*A*, a set of ordered pairs of vertices, called**directed edges**,**arcs**, or**arrows**. An edge*e*= (*x*,*y*) is considered to be directed**from***x***to***y*;*y*is called the**head**and*x*is called the**tail**of the edge.

A variation on this definition is the **oriented graph**, which is a graph (or multigraph; see below) with an orientation or direction assigned to each of its edges. A distinction between a directed graph and an oriented *simple* graph is that if *x* and *y* are vertices, a directed graph allows both (*x*, *y*) and (*y*, *x*) as edges, while only one is permitted in an oriented graph. A more fundamental difference is that, in a directed graph (or multigraph), the directions are fixed, but in an oriented graph (or multigraph), only the underlying graph is fixed, while the orientation may vary.

A directed acyclic graph, also called a **dag** or **DAG**, is a directed graph with no directed cycles.

A **quiver** is sometimes said to be simply a directed graph, but in practice it is a directed graph with vector spaces attached to the vertices and linear transformations attached to the arcs.

### Mixed graph

A **mixed graph** *G* is an ordered triple *G* := (*V*,*E*,*A*) with *V*, *E* and *A* defined as above.

### Variations in the definitions

As defined above, edges of undirected graphs have two distinct ends, and *E* and *A* are sets (with distinct elements, like all sets). Many applications require more general possibilities, but terminology varies.

A loop is an edge (directed or undirected) with both ends the same; these may be permitted or not permitted according to the application. In this context, an edge with two different ends is called a **link**.

Sometimes *E* and *A* are allowed to be multisets, so that there can be more than one edge (called multiple edges) between the same two vertices. Another way to allow multiple edges is to make *E* a set, independent of *V*, and to specify the endpoints of an edge by an incidence relation between *V* and *E*. The same applies to a directed edge set *A*, except that there must be two incidence relations, one for the head and one for the tail of each edge.

A **simple graph** is always understood to mean a "graph" which contains no loops or multiple edges. However, the unqualified term "graph" might allow or disallow loops and multiple edges in the literature, according to the preferences of the author and the requirements of the particular topic.

The term "multigraph" is used to indicate that multiple edges (and sometimes loops) are allowed. Where graphs are defined so as to *allow* loops and multiple edges, a multigraph is often defined to mean a graph without loops, however, where graphs are defined so as to *disallow* loops and mutiple edges, the term is often defined to mean a "graph" which can have loops or multiple edges.

Sometimes the term "pseudograph" is used to indicate that both multiple edges and loops are allowed. In exceptional situations it is even necessary to have edges with only one end, called **halfedges**, or no ends (**loose edges**); see for example signed graphs.

## Properties of graphs

*For more definitions see Glossary of graph theory.*

Two edges of a graph are called **adjacent** (sometimes **coincident**) if they share a common vertex. Similarly, two vertices are called **adjacent** if they share a common edge, in which case the common edge is said to **join** the two vertices. An edge and a vertex on that edge are called **incident**.

The graph with only one vertex and no edges is called the **trivial graph**. A graph with only vertices and no edges is known as an **edgeless graph**, **empty graph**, or **null graph** (there is no consistency in the literature). The graph with no vertices and no edges is sometimes called the **null graph** or **empty graph**, but not all mathematicians allow this object.

In a **weighted** graph or digraph, each edge is associated with some value, variously called its *cost*, *weight*, *length* or other term depending on the application; such graphs arise in many contexts, for example in optimal routing problems such as the traveling salesman problem.

Normally, the vertices of a graph, by their nature as elements of a set, are distinguishable. This kind of graph may be called **vertex-labeled**. However, for many questions it is better to treat vertices as indistinguishable; then the graph may be called **unlabeled**. (Of course, the vertices may be still distinguishable by the properties of the graph itself, e.g., by the numbers of incident edges). If vertices are indistinguishable they may be distinguished by giving each vertex a *label*, hence the name *vertex-labeled* graph. The same remarks apply to edges, so that graphs which have labeled edges are called **edge-labeled** graphs. Graphs with labels attached to edges or vertices are more generally designated as **labeled**. Consequently, graphs in which vertices are indistinguishable and edges are indistinguishable are called *unlabelled*. (Note that in the literature the term *labeled* may apply to other kinds of labeling, besides that which serves only to distinguish different vertices or edges.)

## Examples

The picture is a graphic representation of the following graph

*V*:={1,2,3,4,5,6}*E*:={{1,2},{1,5},{2,3},{2,5},{3,4},{4,5},{4,6}}

The fact that vertex 1 is adjacent to vertex 2 is sometimes denoted by 1 ~ 2.

- In category theory a category can be considered a directed multigraph with the objects as vertices and the morphisms as directed edges. The functors between categories induce then some, but not necessarily all, of the digraph morphisms.
- In computer science directed graphs are used to represent finite state machines and many other discrete structures.
- A binary relation
*R*on a set*X*is a simple directed graph. Two edges*x*,*y*of*X*are connected by an arrow if*xRy*.

## Important graphs

- In a complete graph each pair of vertices is joined by an edge, that is, the graph contains all possible edges.
- A planar graph can be drawn in a plane (embedded in a plane) with no crossing edges.
- A tree is a connected graph with no cycles.
- Bipartite graphs
- Perfect graphs
- Cographs
- Cayley graphs
- The Petersen graph and its generalizations

## Operations on graphs

There are several operations that produce new graphs from old ones.

### Unary operations

### Binary operations

- Cartesian product of graphs
- Tensor product of graphs
- Strong product of graphs
- Lexicographic product of graphs
- Zig-zag product of graphs

## Generalizations

In a hypergraph, an edge can join more than two vertices.

An undirected graph can be seen as a simplicial complex consisting of 1-simplices (the edges) and 0-simplices (the vertices). As such, complexes are generalizations of graphs since they allow for higher-dimensional simplices.

Every graph gives rise to a matroid, but in general the graph cannot be recovered from its matroid, so matroids are not truly generalizations of graphs.

In model theory, a graph is just a structure. But in that case, there is no limitation on the number of edges: it can be any cardinal number.

## References

- Balakrishnan, V.K. (1997),
*Graph Theory*, McGraw-Hill.

- Bollobas, Bela (2002),
*Modern Graph Theory*, Springer, ISBN 0387984887.

- Diestel, Reinhard (2000),
*Graph Theory*, 2nd edition, Springer, ISBN 0387989765.

- Gross, Jonathon L, and Yellen, Jay (2005),
*Graph Theory and Its Applications*, 2nd edition, Chapman and Hall (CRC), ISBN 158488505X.

- Gross, Jonathon L, and Yellen, Jay; (eds., 2003),
*Handbook of Graph Theory*, CRC, ISBN 1584880902.

- Zwillinger, Daniel (2002),
*CRC Standard Mathematical Tables and Formulae*, ; 31st edition, Chapman and Hall (CRC), ISBN 1584882913.

## See also

- Polygon
- Tiling
- Glossary of graph theory
- List of graph theory topics
- Graph (data structure)
- Graph drawing
- Important publications in graph theory
- Dual graph

## External links

- Graph Theory online textbook
- Graph theory tutorial
- Some graph theory algorithm animations
*Step through the algorithm to understand it.*

- The compendium of algorithm visualisation sites
- Challenging Benchmarks for Maximum Clique, Maximum Independent Set, Minimum Vertex Cover and Vertex Coloring
- Image gallery no.1: Some real-life networks
- Image gallery no.2: More real-life graphs
- Graph links collection
- Grafos Spanish copyleft software
- Source code for computing neighbor shells in particle systems under periodic boundary conditions
- Edge Addition Planarity Algorithm — Online version of a paper that describes the Boyer-Myrvold planarity algorithm.
- Edge Addition Planarity Algorithm Source Code — Free C source code for reference implementation of Boyer-Myrvold planarity algorithm, which provides both a combinatorial planar embedder and Kuratowski subgraph isolator.
- Weisstein, Eric W.,
*Graph*at MathWorld.

## Document history

Portions of the above article were adapted from the following sources under the GNU Free Documentation License, under other applicable licenses, or by permission of the copyright holders.