In discrete mathematics, and more specifically in graph theory, a **graph** is a structure amounting to a set of objects in which some pairs of the objects are in some sense "related". The objects correspond to mathematical abstractions called * vertices * (also called *nodes* or *points*) and each of the related pairs of vertices is called an *edge* (also called *link* or *line*).^{ [1] } Typically, a graph is depicted in diagrammatic form as a set of dots or circles for the vertices, joined by lines or curves for the edges. Graphs are one of the objects of study in discrete mathematics.

- Definitions
- Graph
- Directed graph
- Mixed graph
- Weighted graph
- Types of graphs
- Oriented graph
- Regular graph
- Complete graph
- Finite graph
- Connected graph
- Bipartite graph
- Path graph
- Planar graph
- Cycle graph
- Tree
- Polytree
- Advanced classes
- Properties of graphs
- Examples
- Graph operations
- Generalizations
- See also
- Notes
- References
- Further reading
- External links

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 graph is undirected because any person *A* can shake hands with a person *B* only if *B* also shakes hands with *A*. In contrast, if an edge from a person *A* to a person *B* means that *A* owes money to *B*, then this graph is directed, because owing money is not necessarily reciprocated.

Graphs are the basic subject studied by graph theory. The word "graph" was first used in this sense by J. J. Sylvester in 1878 due to a direct relation between mathematics and chemical structure (what he called a chemico-graphical image).^{ [2] }^{ [3] }

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

A **graph** (sometimes called an *undirected graph* to distinguish it from a directed graph, or a *simple graph* to distinguish it from a multigraph)^{ [4] }^{ [5] } is a pair *G* = (*V*, *E*), where V is a set whose elements are called *vertices* (singular: vertex), and E is a set of paired vertices, whose elements are called *edges* (sometimes *links* or *lines*).

The vertices x and y of an edge {*x*, *y*} are called the *endpoints* of the edge. The edge is said to *join*x and y and to be *incident* on x and y. A vertex may belong to no edge, in which case it is not joined to any other vertex.

A multigraph is a generalization that allows multiple edges to have the same pair of endpoints. In some texts, multigraphs are simply called graphs.^{ [6] }^{ [7] }

Sometimes, graphs are allowed to contain * loops *, which are edges that join a vertex to itself. To allow loops, the above definition must be changed by defining edges as multisets of two vertices instead of sets. Such generalized graphs are called *graphs with loops* or simply *graphs* when it is clear from the context that loops are allowed.

Generally, the set of vertices V is supposed to be finite; this implies that the set of edges is also finite. Infinite graphs are sometimes considered, but are more often viewed as a special kind of binary relation, as most results on finite graphs do not extend to the infinite case, or need a rather different proof.

An empty graph is a graph that has an empty set of vertices (and thus an empty set of edges). The *order* of a graph is its number of vertices |*V*|. The *size* of a graph is its number of edges |*E*|. However, in some contexts, such as for expressing the computational complexity of algorithms, the size is |*V*| + |*E*| (otherwise, a non-empty graph could have size 0). The *degree* or *valency* of a vertex is the number of edges that are incident to it; for graphs ^{ [1] }with loops, a loop is counted twice.

In a graph of order *n*, the maximum degree of each vertex is *n* − 1 (or *n* + 1 if loops are allowed, because a loop contributes 2 to the degree), and the maximum number of edges is *n*(*n* − 1)/2 (or *n*(*n* + 1)/2 if loops are allowed).

The edges of a graph define a symmetric relation on the vertices, called the *adjacency relation*. Specifically, two vertices x and y are *adjacent* if {*x*, *y*} is an edge. A graph may be fully specified by its adjacency matrix A, which is an *n* × *n* square matrix, with A_{ij} specifying the number of connections from vertex i to vertex j. For a simple graph, *A _{ij}* is either 0, indicating disconnection, or 1, indicating connection; moreover

A **directed graph** or **digraph** is a graph in which edges have orientations.

In one restricted but very common sense of the term,^{ [8] } a **directed graph** is a pair *G* = (*V*, *E*) comprising:

- V, a set of
*vertices*(also called*nodes*or*points*); - E, a set of
*edges*(also called*directed edges*,*directed links*,*directed lines*,*arrows*, or*arcs*), which are ordered pairs of distinct vertices: .

To avoid ambiguity, this type of object may be called precisely a **directed simple graph**.

In the edge (*x*, *y*) directed from x to y, the vertices x and y are called the *endpoints* of the edge, x the *tail* of the edge and y the *head* of the edge. The edge is said to *join*x and y and to be *incident* on x and on y. A vertex may exist in a graph and not belong to an edge. The edge (*y*, *x*) is called the *inverted edge* of (*x*, *y*). * Multiple edges *, not allowed under the definition above, are two or more edges with both the same tail and the same head.

In one more general sense of the term allowing multiple edges,^{ [8] } a **directed graph** is an ordered triple *G* = (*V*, *E*, *ϕ*) comprising:

- V, a set of
*vertices*(also called*nodes*or*points*); - E, a set of
*edges*(also called*directed edges*,*directed links*,*directed lines*,*arrows*or*arcs*); - ϕ, an
*incidence function*mapping every edge to an ordered pair of vertices (that is, an edge is associated with two distinct vertices): .

To avoid ambiguity, this type of object may be called precisely a **directed multigraph**.

A * loop * is an edge that joins a vertex to itself. Directed graphs as defined in the two definitions above cannot have loops, because a loop joining a vertex to itself is the edge (for a directed simple graph) or is incident on (for a directed multigraph) which is not in . So to allow loops the definitions must be expanded. For directed simple graphs, the definition of should be modified to . For directed multigraphs, the definition of should be modified to . To avoid ambiguity, these types of objects may be called precisely a **directed simple graph permitting loops** and a **directed multigraph permitting loops** (or a * quiver *) respectively.

The edges of a directed simple graph permitting loops G is a homogeneous relation ~ on the vertices of G that is called the *adjacency relation* of G. Specifically, for each edge (*x*, *y*), its endpoints x and y are said to be *adjacent* to one another, which is denoted *x* ~ *y*.

A *mixed graph* is a graph in which some edges may be directed and some may be undirected. It is an ordered triple *G* = (*V*, *E*, *A*) for a *mixed simple graph* and *G* = (*V*, *E*, *A*, *ϕ _{E}*,

A *weighted graph* or a *network*^{ [9] }^{ [10] } is a graph in which a number (the weight) is assigned to each edge.^{ [11] } Such weights might represent for example costs, lengths or capacities, depending on the problem at hand. Such graphs arise in many contexts, for example in shortest path problems such as the traveling salesman problem.

One definition of an *oriented graph* is that it is a directed graph in which at most one of (*x*, *y*) and (*y*, *x*) may be edges of the graph. That is, it is a directed graph that can be formed as an orientation of an undirected (simple) graph.

Some authors use "oriented graph" to mean the same as "directed graph". Some authors use "oriented graph" to mean any orientation of a given undirected graph or multigraph.

A *regular graph* is a graph in which each vertex has the same number of neighbours, i.e., every vertex has the same degree. A regular graph with vertices of degree *k* is called a *k*‑regular graph or regular graph of degree *k*.

A *complete graph* is a graph in which each pair of vertices is joined by an edge. A complete graph contains all possible edges.

A *finite graph* is a graph in which the vertex set and the edge set are finite sets. Otherwise, it is called an *infinite graph*.

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

In an undirected graph, an unordered pair of vertices {*x*, *y*} is called *connected* if a path leads from *x* to *y*. Otherwise, the unordered pair is called *disconnected*.

A *connected graph* is an undirected graph in which every unordered pair of vertices in the graph is connected. Otherwise, it is called a *disconnected graph*.

In a directed graph, an ordered pair of vertices (*x*, *y*) is called *strongly connected* if a directed path leads from *x* to *y*. Otherwise, the ordered pair is called *weakly connected* if an undirected path leads from *x* to *y* after replacing all of its directed edges with undirected edges. Otherwise, the ordered pair is called *disconnected*.

A *strongly connected graph* is a directed graph in which every ordered pair of vertices in the graph is strongly connected. Otherwise, it is called a *weakly connected graph* if every ordered pair of vertices in the graph is weakly connected. Otherwise it is called a *disconnected graph*.

A * k-vertex-connected graph * or * k-edge-connected graph * is a graph in which no set of *k* − 1 vertices (respectively, edges) exists that, when removed, disconnects the graph. A *k*-vertex-connected graph is often called simply a *k-connected graph*.

A * bipartite graph * is a simple graph in which the vertex set can be partitioned into two sets, *W* and *X*, so that no two vertices in *W* share a common edge and no two vertices in *X* share a common edge. 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*.

A *path graph* or *linear graph* of order *n* ≥ 2 is a graph in which the vertices can be listed in an order *v*_{1}, *v*_{2}, …, *v*_{n} such that the edges are the {*v*_{i}, *v*_{i+1}} where *i* = 1, 2, …, *n* − 1. Path graphs can be characterized as connected graphs in which the degree of all but two vertices is 2 and the degree of the two remaining vertices is 1. If a path graph occurs as a subgraph of another graph, it is a path 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.

A *cycle graph* or *circular graph* of order *n* ≥ 3 is a graph in which the vertices can be listed in an order *v*_{1}, *v*_{2}, …, *v*_{n} such that the edges are the {*v*_{i}, *v*_{i+1}} where *i* = 1, 2, …, *n* − 1, plus the edge {*v*_{n}, *v*_{1}}. Cycle graphs can be characterized as connected graphs in which the degree of all vertices is 2. If a cycle graph occurs as a subgraph of another graph, it is a cycle or circuit in that graph.

A *tree* is an undirected graph in which any two vertices are connected by *exactly one* path, or equivalently a connected acyclic undirected graph.

A *forest* is an undirected graph in which any two vertices are connected by *at most one* path, or equivalently an acyclic undirected graph, or equivalently a disjoint union of trees.

A *polytree* (or *directed tree* or *oriented tree* or *singly connected network*) is a directed acyclic graph (DAG) whose underlying undirected graph is a tree.

A *polyforest* (or *directed forest* or *oriented forest*) is a directed acyclic graph whose underlying undirected graph is a forest.

More advanced kinds of graphs are:

- 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 generalizations distance-regular graphs.

Two edges of a graph are called *adjacent* if they share a common vertex. Two edges of a directed graph are called *consecutive* if the head of the first one is the tail of the second one. Similarly, two vertices are called *adjacent* if they share a common edge (*consecutive* if the first one is the tail and the second one is the head of an 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*. 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.

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. (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 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*. (In the literature, the term *labeled* may apply to other kinds of labeling, besides that which serves only to distinguish different vertices or edges.)

The category of all graphs is the comma category Set ↓ *D* where *D*: Set → Set is the functor taking a set *s* to *s* × *s*.

- The diagram is a schematic representation of the graph with vertices and edges
- 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*if and only if*xRy*. - A directed graph can model information networks such as Twitter, with one user following another.
^{ [12] }^{ [13] } - Particularly regular examples of directed graphs are given by the Cayley graphs of finitely-generated groups, as well as Schreier coset graphs
- In category theory, every small category has an underlying directed multigraph whose vertices are the objects of the category, and whose edges are the arrows of the category. In the language of category theory, one says that there is a forgetful functor from the category of small categories to the category of quivers.

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

*unary operations*, which create a new graph from an initial one, such as:*binary operations*, which create a new graph from two initial ones, such as:

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.

- 1 2 Trudeau, Richard J. (1993).
*Introduction to Graph Theory*(Corrected, enlarged republication. ed.). New York: Dover Pub. p. 19. ISBN 978-0-486-67870-2 . Retrieved 8 August 2012.A graph is an object consisting of two sets called its

*vertex set*and its*edge set*. - ↑ See:
- J. J. Sylvester (February 7, 1878) "Chemistry and algebra,"
*Nature*,*17*: 284. doi : 10.1038/017284a0. 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. doi : 10.2307/2369436. JSTOR 2369436. The term "graph" first appears in this paper on page 65.

- J. J. Sylvester (February 7, 1878) "Chemistry and algebra,"
- ↑ Gross, Jonathan L.; Yellen, Jay (2004).
*Handbook of graph theory*. CRC Press. p. 35. ISBN 978-1-58488-090-5. - ↑ Bender & Williamson 2010, p. 148.
- ↑ See, for instance, Iyanaga and Kawada,
*69 J*, p. 234 or Biggs, p. 4. - ↑ Bender & Williamson 2010, p. 149.
- ↑ Graham et al., p. 5.
- 1 2 Bender & Williamson 2010, p. 161.
- ↑ Strang, Gilbert (2005),
*Linear Algebra and Its Applications*(4th ed.), Brooks Cole, ISBN 978-0-03-010567-8 - ↑ Lewis, John (2013),
*Java Software Structures*(4th ed.), Pearson, p. 405, ISBN 978-0133250121 - ↑ Fletcher, Peter; Hoyle, Hughes; Patty, C. Wayne (1991).
*Foundations of Discrete Mathematics*(International student ed.). Boston: PWS-KENT Pub. Co. p. 463. ISBN 978-0-53492-373-0.A

*weighted graph*is a graph in which a number*w*(*e*), called its*weight*, is assigned to each edge*e*. - ↑ Grandjean, Martin (2016). "A social network analysis of Twitter: Mapping the digital humanities community".
*Cogent Arts & Humanities*.**3**(1): 1171458. doi: 10.1080/23311983.2016.1171458 . - ↑ 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*. doi : 10.1145/2488388.2488433.

In mathematics, **graph theory** is the study of *graphs*, which are mathematical structures used to model pairwise relations between objects. A graph in this context is made up of *vertices* which are connected by *edges*. A distinction is made between **undirected graphs**, where edges link two vertices symmetrically, and **directed graphs**, where edges link two vertices asymmetrically. Graphs are one of the principal objects of study in discrete mathematics.

In graph theory, a **tree** is an undirected graph in which any two vertices are connected by *exactly one* path, or equivalently a connected acyclic undirected graph. A **forest** is an undirected graph in which any two vertices are connected by *at most one* path, or equivalently an acyclic undirected graph, or equivalently a disjoint union of trees.

In graph theory, a **cycle** in a graph is a non-empty trail in which only the first and last vertices are equal. A **directed cycle** in a directed graph is a non-empty directed trail in which only the first and last vertices are equal.

In mathematics, a **hypergraph** is a generalization of a graph in which an edge can join any number of vertices. In contrast, in an ordinary graph, an edge connects exactly two vertices.

In graph theory and computer science, an **adjacency matrix** is a square matrix used to represent a finite graph. The elements of the matrix indicate whether pairs of vertices are adjacent or not in the graph.

In graph theory, a **component** of an undirected graph is a connected subgraph that is not part of any larger connected subgraph. The components of any graph partition its vertices into disjoint sets, and are the induced subgraphs of those sets. A graph that is itself connected has exactly one component, consisting of the whole graph. Components are sometimes called **connected components**.

This is a **glossary of graph theory**. Graph theory is the study of graphs, systems of nodes or vertices connected in pairs by lines or edges.

In graph theory, an **Eulerian trail** is a trail in a finite graph that visits every edge exactly once. Similarly, an **Eulerian circuit** or **Eulerian cycle** is an Eulerian trail that starts and ends on the same vertex. They were first discussed by Leonhard Euler while solving the famous Seven Bridges of Königsberg problem in 1736. The problem can be stated mathematically like this:

In mathematics, an **incidence matrix** is a logical matrix that shows the relationship between two classes of objects, usually called an incidence relation. If the first class is *X* and the second is *Y*, the matrix has one row for each element of *X* and one column for each element of *Y*. The entry in row *x* and column *y* is 1 if *x* and *y* are related and 0 if they are not. There are variations; see below.

In the mathematical field of graph theory, a **spanning tree***T* of an undirected graph *G* is a subgraph that is a tree which includes all of the vertices of *G*. In general, a graph may have several spanning trees, but a graph that is not connected will not contain a spanning tree. If all of the edges of *G* are also edges of a spanning tree *T* of *G*, then *G* is a tree and is identical to *T*.

In graph theory, a **path** in a graph is a finite or infinite sequence of edges which joins a sequence of vertices which, by most definitions, are all distinct. A **directed path** in a directed graph is a finite or infinite sequence of edges which joins a sequence of distinct vertices, but with the added restriction that the edges be all directed in the same direction.

In graph theory, the **degree** of a vertex of a graph is the number of edges that are incident to the vertex; in a multigraph, a loop contributes 2 to a vertex's degree, for the two ends of the edge. The degree of a vertex is denoted or . The **maximum degree** of a graph , denoted by , and the **minimum degree** of a graph, denoted by , are the maximum and minimum of its vertices' degrees. In the multigraph shown on the right, the maximum degree is 5 and the minimum degree is 0.

In the mathematical discipline of graph theory, a **graph labelling** is the assignment of labels, traditionally represented by integers, to edges and/or vertices of a graph.

In mathematics and computer science, **connectivity** is one of the basic concepts of graph theory: it asks for the minimum number of elements that need to be removed to separate the remaining nodes into two or more isolated subgraphs. It is closely related to the theory of network flow problems. The connectivity of a graph is an important measure of its resilience as a network.

In mathematics, and more specifically in graph theory, a **multigraph** is a graph which is permitted to have multiple edges, that is, edges that have the same end nodes. Thus two vertices may be connected by more than one edge.

In the mathematical discipline of graph theory, the **dual graph** of a plane graph G is a graph that has a vertex for each face of G. The dual graph has an edge for each pair of faces in G that are separated from each other by an edge, and a self-loop when the same face appears on both sides of an edge. Thus, each edge e of G has a corresponding dual edge, whose endpoints are the dual vertices corresponding to the faces on either side of e. The definition of the dual depends on the choice of embedding of the graph G, so it is a property of plane graphs rather than planar graphs. For planar graphs generally, there may be multiple dual graphs, depending on the choice of planar embedding of the graph.

In the mathematical field of graph theory, the **Rado graph**, **Erdős–Rényi graph**, or **random graph** is a countably infinite graph that can be constructed by choosing independently at random for each pair of its vertices whether to connect the vertices by an edge. The names of this graph honor Richard Rado, Paul Erdős, and Alfréd Rényi, mathematicians who studied it in the early 1960s; it appears even earlier in the work of Wilhelm Ackermann (1937). The Rado graph can also be constructed non-randomly, by symmetrizing the membership relation of the hereditarily finite sets, by applying the BIT predicate to the binary representations of the natural numbers, or as an infinite Paley graph that has edges connecting pairs of prime numbers congruent to 1 mod 4 that are quadratic residues modulo each other.

In graph theory, a **pseudoforest** is an undirected graph in which every connected component has at most one cycle. That is, it is a system of vertices and edges connecting pairs of vertices, such that no two cycles of consecutive edges share any vertex with each other, nor can any two cycles be connected to each other by a path of consecutive edges. A **pseudotree** is a connected pseudoforest.

In mathematics, and more specifically in graph theory, a **directed graph** is a graph that is made up of a set of vertices connected by directed edges, often called **arcs**.

In the mathematical discipline of graph theory, a graph C is a **covering graph** of another graph G if there is a **covering map** from the vertex set of C to the vertex set of G. A covering map f is a surjection and a local isomorphism: the neighbourhood of a vertex v in C is mapped bijectively onto the neighbourhood of in G.

- Balakrishnan, V. K. (1997).
*Graph Theory*(1st ed.). McGraw-Hill. ISBN 978-0-07-005489-9. - Bang-Jensen, J.; Gutin, G. (2000).
*Digraphs: Theory, Algorithms and Applications*. Springer. - Bender, Edward A.; Williamson, S. Gill (2010).
*Lists, Decisions and Graphs. With an Introduction to Probability*. - Berge, Claude (1958).
*Théorie des graphes et ses applications*(in French). Paris: Dunod. - Biggs, Norman (1993).
*Algebraic Graph Theory*(2nd ed.). Cambridge University Press. ISBN 978-0-521-45897-9. - Bollobás, Béla (2002).
*Modern Graph Theory*(1st ed.). Springer. ISBN 978-0-387-98488-9. - Diestel, Reinhard (2005).
*Graph Theory*(3rd ed.). Berlin, New York: Springer-Verlag. ISBN 978-3-540-26183-4. - Graham, R.L.; Grötschel, M.; Lovász, L. (1995).
*Handbook of Combinatorics*. MIT Press. ISBN 978-0-262-07169-7. - Gross, Jonathan L.; Yellen, Jay (1998).
*Graph Theory and Its Applications*. CRC Press. ISBN 978-0-8493-3982-0. - Gross, Jonathan L.; Yellen, Jay (2003).
*Handbook of Graph Theory*. CRC. ISBN 978-1-58488-090-5. - Harary, Frank (1995).
*Graph Theory*. Addison Wesley Publishing Company. ISBN 978-0-201-41033-4. - Iyanaga, Shôkichi; Kawada, Yukiyosi (1977).
*Encyclopedic Dictionary of Mathematics*. MIT Press. ISBN 978-0-262-09016-2. - Zwillinger, Daniel (2002).
*CRC Standard Mathematical Tables and Formulae*(31st ed.). Chapman & Hall/CRC. ISBN 978-1-58488-291-6.

- Trudeau, Richard J. (1993).
*Introduction to Graph Theory*(Corrected, enlarged republication. ed.). New York: Dover Publications. ISBN 978-0-486-67870-2 . Retrieved 8 August 2012.

Library resources about Graph(mathematics) |

- Media related to Graph (discrete mathematics) at Wikimedia Commons
- Weisstein, Eric W. "Graph".
*MathWorld*.

This page is based on this Wikipedia article

Text is available under the CC BY-SA 4.0 license; additional terms may apply.

Images, videos and audio are available under their respective licenses.

Text is available under the CC BY-SA 4.0 license; additional terms may apply.

Images, videos and audio are available under their respective licenses.