In computer science, a graph is an abstract data type that is meant to implement the undirected graph and directed graph concepts from mathematics.
A graph data structure consists of a finite (and possibly mutable) set of vertices or nodes or points, together with a set of unordered pairs of these vertices for an undirected graph or a set of ordered pairs for a directed graph. These pairs are known as edges, arcs, or lines for an undirected graph and as arrows, directed edges, directed arcs, or directed lines for a directed graph. The vertices may be part of the graph structure, or may be external entities represented by integer indices or references.
A graph data structure may also associate to each edge some edge value, such as a symbolic label or a numeric attribute (cost, capacity, length, etc.).
The basic operations provided by a graph data structure G usually include:
adjacent
(G, x, y): tests whether there is an edge from the vertices x to y;neighbors
(G, x): lists all vertices y such that there is an edge from the vertices x to y;