Un grafo en el ámbito de las ciencias de la computación es un tipo abstracto de datos (TAD), que consiste en un conjunto de nodos (también llamados vértices) y un conjunto de arcos (aristas) que establecen relaciones entre los nodos. El concepto de grafo TAD desciende directamente del concepto matemático de grafo.
Formalmente, un grafo se define como , siendo V un conjunto cuyos elementos son los vértices del grafo y A un conjunto cuyos elementos son las aristas, las cuales son pares (ordenados si el grafo es dirigido) de elementos en V.
Existen diferentes implementaciones del tipo grafo: con una matriz de adyacencias (forma acotada) y con listas y multilistas de adyacencia (no acotadas).
Crear un grafo vacío: Devuelve un grafo vacío.
Añadir una arista: Dado un grafo, añade una relación entre dos nodos de dicho grafo.
Añadir un nodo: Dado un grafo, incluye un nodo en él, en caso en el que no exista previamente.
Borrar nodo: Devuelve un grafo sin un nodo y las aristas relacionadas con él. Si dicho nodo no existe se devuelve el grafo inicial.
Borrar arista: Devuelve un grafo sin la arista indicada. En caso de que la arista no exista devuelve el grafo inicial.
Grafo Vacío: Comprueba si un grafo no tiene ningún nodo.
Contener Nodo: Comprueba si un nodo pertenece a un grafo.
Adyacentes: Comprueba si dos nodos tienen una arista que los relacione.
Para la especificación de un grafo dirigido tenemos que modificar algunas de las ecuaciones de las operaciones borrarArista y añadirArista para que no se considere el caso de aristas bidireccionales.
Y sustituir la operación adyacentes por: