# Graph (mathematics)

{{#invoke:Hatnote|hatnote}}

In mathematics, and more specifically in graph theory, a **graph** is a representation of a set of objects where some pairs of objects are connected by links. The interconnected objects are represented by mathematical abstractions called *vertices*, and the links that connect some pairs of vertices are called *edges*.^{[1]} Typically, a graph is depicted in diagrammatic form as a set of dots for the vertices, joined by lines or curves for the edges. Graphs are one of the objects of study in discrete mathematics.

The edges may be directed or undirected. For example, if the vertices represent people at a party, and there is an edge between two people if they shake hands, then this is an undirected graph, because if person A shook hands with person B, then person B also shook hands with person A. In contrast, if there is an edge from person A to person B when person A knows of person B, then this graph is directed, because knowledge of someone is not necessarily a symmetric relation (that is, one person knowing another person does not necessarily imply the reverse; for example, many fans may know of a celebrity, but the celebrity is unlikely to know of all their fans). This latter type of graph is called a *directed* graph and the edges are called *directed edges* or *arcs*.

**Vertices** are also called *nodes* or *points*, and **edges** are also called *arcs* or *lines*. Graphs are the basic subject studied by graph theory. The word "graph" was first used in this sense by J.J. Sylvester in 1878.^{[2]}^{[3]}

## Contents

## Definitions

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

### Graph

In the most common sense of the term,^{[4]} a **graph** is an ordered pair *G* = (*V*, *E*) comprising a set *V* of **vertices** or **nodes** together with a set *E* of **edges** or **links**, which are 2-element subsets of *V* (i.e., an edge is related with two vertices, and the relation is represented as an unordered pair of the vertices with respect to the particular edge). To avoid ambiguity, this type of graph may be described precisely as undirected and simple**.**

Other senses of *graph* stem from different conceptions of the edge set. In one more generalized notion,^{[5]} *E* is a set together with a relation of **incidence** that associates with each edge two vertices. In another generalized notion, *E* is a multiset of unordered pairs of (not necessarily distinct) vertices. Many authors call this type of object a multigraph or pseudograph.

All of these variants and others are described more fully below.

The vertices belonging to an edge are called the **ends**, **endpoints**, or **end vertices** of the edge. A vertex may exist in a graph and not belong to an edge.

*V* and *E* are usually taken to be finite, 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. The **order** of a graph is (the number of vertices). A graph's **size** is , the number of edges. The **degree** of a vertex is the number of edges that connect to it, where an edge that connects to the vertex at both ends (a loop) is counted twice.

For an edge {*u*, *v*}, graph theorists usually use the somewhat shorter notation *uv*.

### Adjacency relation

The edges *E* of an undirected graph *G* induce a symmetric binary relation ~ on *V* that is called the **adjacency** relation of *G*. Specifically, for each edge {*u*, *v*} the vertices *u* and *v* are said to be **adjacent** to one another, which is denoted *u* ~ *v*.

## Types of graphs

### Distinction in terms of the main definition

As stated above, in different contexts it may be useful to define the term *graph* with different degrees of generality. Whenever it is necessary to draw a strict distinction, the following terms are used. Most commonly, in modern texts in graph theory, unless stated otherwise, *graph* means "undirected simple finite graph" (see the definitions below).

{{#invoke:Multiple image|render}}

#### Undirected graph

An undirected graph is one in which edges have no orientation. The edge (a, b) is identical to the edge (b, a), i.e., they are not ordered pairs, but sets {*u*, *v*} (or 2-multisets) of vertices. The maximum number of edges in an undirected graph without a self-loop is *n*(*n* - 1)/2.

#### Directed graph

{{#invoke:main|main}}
A **directed graph** or **digraph** is an ordered pair *D* = (*V*, *A*) with

*V*a set whose elements are called**vertices**or**nodes**, and*A*a set of ordered pairs of vertices, called**arcs**,**directed edges**, or**arrows**.

An arc *a* = (*x*, *y*) is considered to be directed **from** *x* **to** *y*; *y* is called the **head** and *x* is called the **tail** of the arc; *y* is said to be a **direct successor** of *x*, and *x* is said to be a **direct predecessor** of *y*. If a path leads from *x* to *y*, then *y* is said to be a **successor** of *x* and **reachable** from *x*, and *x* is said to be a **predecessor** of *y*. The arc (*y*, *x*) is called the arc (*x*, *y*) **inverted**.

A directed graph *D* is called **symmetric** if, for every arc in *D*, the corresponding inverted arc also belongs to *D*. A symmetric loopless directed graph *D* = (*V*, *A*) is equivalent to a simple undirected graph *G* = (*V*, *E*), where the pairs of inverse arcs in *A* correspond 1-to-1 with the edges in *E*; thus the edges in *G* number |*E*| = |*A*|/2, or half the number of arcs in *D*.

An **oriented graph** is a directed graph in which at most one of (*x*, *y*) and (*y*, *x*) may be arcs.

#### Mixed graph

{{#invoke:main|main}}
A **mixed graph** *G* is a graph in which some edges may be directed and some may be undirected.
It is written as an ordered triple *G* = (*V*, *E*, *A*) with *V*, *E*, and *A* defined as above.
Directed and undirected graphs are special cases.

#### Multigraph

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

The term "multigraph" is generally understood to mean 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,^{[6]} however, where graphs are defined so as to *disallow* loops and multiple edges, the term is often defined to mean a "graph" which can have both multiple edges *and* loops,^{[7]} although many use the term "pseudograph" for this meaning.^{[8]}

#### Quiver

A **quiver** or "multidigraph" is a directed graph which may have more than one arrow from a given source to a given target. A quiver may also have directed loops in it.

#### Simple graph

As opposed to a multigraph, a simple graph is an undirected graph that has no loops (edges connected at both ends to the same vertex) and no more than one edge between any two different vertices. In a simple graph the edges of the graph form a set (rather than a multiset) and each edge is a *distinct* pair of vertices. In a simple graph with *n* vertices, the degree of every vertex is at most *n-1*.

#### Weighted graph

A graph is a weighted graph if a number (weight) is assigned to each edge.^{[9]} Such weights might represent, for example, costs, lengths or capacities, etc. depending on the problem at hand. Some authors call such a graph a network.^{[10]}
Weighted correlation networks can be defined by soft-thresholding the pairwise correlations among variables (e.g. gene measurements).

#### Half-edges, loose edges

In certain situations it can be helpful to allow edges with only one end, called **half-edges**, or no ends (**loose edges**); see for example signed graphs and biased graphs.

### Important graph classes

#### Regular graph

{{#invoke:main|main}}
A regular graph is a graph where each vertex has the same number of neighbours, i.e., every vertex has the same degree or valency. A regular graph with vertices of degree *k* is called a *k*‑regular graph or regular graph of degree *k*.

#### Complete graph

{{#invoke:main|main}} Complete graphs have the feature that each pair of vertices has an edge connecting them.

#### Finite and infinite graphs

A finite graph is a graph *G* = (*V*, *E*) such that *V* and *E* are finite sets. An infinite graph is one with an infinite set of vertices or edges or both.

Most commonly in graph theory it is implied that the graphs discussed are finite. If the graphs are infinite, that is usually specifically stated.

#### Graph classes in terms of connectivity

{{#invoke:main|main}}

In an undirected graph *G*, two vertices *u* and *v* are called **connected** if *G* contains a path from *u* to *v*. Otherwise, they are called **disconnected**. A graph is called **connected** if every pair of distinct vertices in the graph is connected; otherwise, it is called **disconnected**.

A graph is called ** k-vertex-connected** or

**if no set of**

*k*-edge-connected*k-1*vertices (respectively, edges) exists that, when removed, disconnects the graph. A

*k*-vertex-connected graph is often called simply

**.**

*k*-connectedA directed graph is called **weakly connected** if replacing all of its directed edges with undirected edges produces a connected (undirected) graph. It is **strongly connected** or **strong** if it contains a directed path from *u* to *v* and a directed path from *v* to *u* for every pair of vertices *u*, *v*.

#### Category of all graphs

The category of all graphs is the slice category where is the functor taking a set to .

## Properties of graphs

{{#invoke:see also|seealso}}

Two edges of a graph are called **adjacent** if they share a common vertex. Two arrows of a directed graph are called **consecutive** if the head of the first one is at the tail of the second one. Similarly, two vertices are called **adjacent** if they share a common edge (**consecutive** if they are at the tail and at the head of an arrow), 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**. The graph with no vertices and no edges is sometimes called the **null graph** or **empty graph**, but the terminology is not consistent and 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). The same remarks apply to edges, so graphs with 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 *unlabeled*. (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 diagram at right 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}}.

- In category theory a small category can be represented by a directed multigraph in which the objects of the category represented as vertices and the morphisms as directed edges. Then, the functors between categories induce some, but not necessarily all, of the digraph morphisms of the graph.
- In computer science, directed graphs are used to represent knowledge (e.g., Conceptual graph), finite state machines, and many other discrete structures.
- A binary relation
*R*on a set*X*defines a directed graph. An element*x*of*X*is a direct predecessor of an element*y*of*X*iff*xRy*. - A directed edge can model information networks such as Twitter, with one user following another
^{[11]}

## Important graphs

Basic examples are:

- In a complete graph, each pair of vertices is joined by an edge; that is, the graph contains all possible edges.
- In a bipartite graph, the vertex set can be partitioned into two sets,
*W*and*X*, so that no two vertices in*W*are adjacent and no two vertices in*X*are adjacent. Alternatively, it is a graph with a chromatic number of 2. - In a complete bipartite graph, the vertex set is the union of two disjoint sets,
*W*and*X*, so that every vertex in*W*is adjacent to every vertex in*X*but there are no edges within*W*or*X*. - In a
*linear graph*or path graph of length*n*, the vertices can be listed in order,*v*_{0},*v*_{1}, ...,*v*_{n}, so that the edges are*v*_{i−1}*v*_{i}for each*i*= 1, 2, ...,*n*. If a linear graph occurs as a subgraph of another graph, it is a path in that graph. - In a cycle graph of length
*n ≥ 3*, vertices can be named*v*_{1}, ...,*v*_{n}so that the edges are*v*_{i−1}*v*for each_{i}*i*= 2,...,*n*in addition to*v*_{n}*v*_{1}. Cycle graphs can be characterized as connected 2-regular graphs. If a cycle graph occurs as a subgraph of another graph, it is a*cycle*or*circuit*in that graph. - A planar graph is a graph whose vertices and edges can be drawn in a plane such that no two of the edges intersect (i.e.,
*embedded*in a plane). - A tree is a connected graph with no cycles.
- A
*forest*is a graph with no cycles (i.e. the disjoint union of one or more*trees*).

More advanced kinds of graphs are:

- The Petersen graph and its generalizations
- Perfect graphs
- Cographs
- Chordal graphs
- Other graphs with large automorphism groups: vertex-transitive, arc-transitive, and distance-transitive graphs.
- Strongly regular graphs and their generalization distance-regular graphs.

## Operations on graphs

{{#invoke:main|main}}

There are several operations that produce new graphs from old ones, which might be classified into the following categories:

- Elementary operations, sometimes called "editing operations" on graphs, which create a new graph from the original one by a simple, local change, such as addition or deletion of a vertex or an edge, merging and splitting of vertices, etc.
- Graph rewrite operations replacing the occurrence of some pattern graph within the host graph by an instance of the corresponding replacement graph.
- Unary operations, which create a significantly new graph from the old one. Examples:
- Binary operations, which create new graph from two initial graphs. Examples:

## 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.

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, see continuous graph.

In computational biology, power graph analysis introduces power graphs as an alternative representation of undirected graphs.

In geographic information systems, geometric networks are closely modeled after graphs, and borrow many concepts from graph theory to perform spatial analysis on road networks or utility grids.

## See also

- Dual graph
- Glossary of graph theory
- Hypergraph
- Graph (data structure)
- Graph database
- Graph drawing
- Graph theory publications
- List of graph theory topics
- Network theory
- Bayesian network
- Webgraph
- Conceptual graph
- Sage Math (software)
- NetworkX (software)
- Mathematica (software)
- Graph Theory

## Notes

- ↑ {{#invoke:citation/CS1|citation |CitationClass=book }}
- ↑ See:
- J. J. Sylvester (February 7, 1878) "Chemistry and algebra,"
*Nature*,**17**: 284. From page 284: "Every invariant and covariant thus becomes expressible by a*graph*precisely identical with a Kekuléan diagram or chemicograph." - J. J. Sylvester (1878) "On an application of the new atomic theory to the graphical representation of the invariants and covariants of binary quantics, — with three appendices,"
*American Journal of Mathematics, Pure and Applied*,**1**(1) : 64-90. The term "graph" first appears in this paper on page 65.

- J. J. Sylvester (February 7, 1878) "Chemistry and algebra,"
- ↑ {{#invoke:citation/CS1|citation |CitationClass=book }}
- ↑ See, for instance, Iyanaga and Kawada,
**69 J**, p. 234 or Biggs, p. 4. - ↑ See, for instance, Graham et al., p. 5.
- ↑ For example, see Balakrishnan, p. 1, Gross (2003), p. 4, and Zwillinger, p. 220.
- ↑ For example, see. Bollobás, p. 7 and Diestel, p. 25.
- ↑ Gross (1998), p. 3, Gross (2003), p. 205, Harary, p.10, and Zwillinger, p. 220.
- ↑ {{#invoke:citation/CS1|citation |CitationClass=book }}
- ↑ {{#invoke:citation/CS1|citation |CitationClass=citation }}
- ↑ Pankaj Gupta, Ashish Goel, Jimmy Lin, Aneesh Sharma, Dong Wang, and Reza Bosagh Zadeh WTF: The who-to-follow system at Twitter, Proceedings of the 22nd international conference on World Wide Web

## References

- {{#invoke:citation/CS1|citation

|CitationClass=book }}

- {{#invoke:citation/CS1|citation

|CitationClass=book }} Translation: {{#invoke:citation/CS1|citation |CitationClass=book }}

- {{#invoke:citation/CS1|citation

|CitationClass=book }}

- {{#invoke:citation/CS1|citation

|CitationClass=book }}

- {{#invoke:citation/CS1|citation

|CitationClass=book }}

- {{#invoke:citation/CS1|citation

|CitationClass=book }}.

- {{#invoke:citation/CS1|citation

|CitationClass=book }}

- {{#invoke:citation/CS1|citation

|CitationClass=book }}

- {{#invoke:citation/CS1|citation

|CitationClass=book }}

- {{#invoke:citation/CS1|citation

|CitationClass=book }}

- {{#invoke:citation/CS1|citation

|CitationClass=book }}

- {{#invoke:citation/CS1|citation

|CitationClass=book }}

## Further reading

- {{#invoke:citation/CS1|citation

|CitationClass=book }}