You are on page 1of 19

Instituto Universitario De Tecnologa De Administracin Industrial Extensin Regin Capital - Ampliacin Altos Mirandinos

Oswaldo Mrquez C.I.:18.233.645 Carrera: InformticaII

Estructura de datos lineales: arreglos, listas enlazadas, pilas y colas.


Comprender, definir y utilizar os conceptos de las estructuras lineales arreglos unidimensionales, bidimensionales y arreglos paralelos. Conocer y utilizar las operaciones ms usuales con arreglos unidimensionales y bidimensionales. Manejar los trminos punteros y arreglos de punteros. Definir una lista enlazada y conocer y hacer uso de las operaciones ms comunes Definir y diferenciar las estructuras de datos TAD pilas y colas. Utilizar cada una de estas estructuras en la codificacin de un algoritmo, utilizando el lenguaje de programacin C++.

Arreglos:
Es un conjunto de datos o una estructura de datos homogneos que se encuentran ubicados en forma consecutiva en la memoria RAM (sirve para almacenar datos en forma temporal). Un arreglo puede definirse como un grupo o una coleccin finita, homognea y ordenada de elementos. Los arreglos pueden ser de los siguientes tipos: De una dimensin. De dos dimensiones. De tres o ms dimensiones. Listas enlazada Simples. Dobles. Circulares. Multilistas.

Listas enlazadas lineales


Listas simples enlazadas
La lista enlazada bsica es la lista enlazada simple la cual tiene un enlace por nodo. Este enlace apunta al siguiente nodo en la lista, o al valor NULL o a la lista vaca, si es el ltimo nodo.

Lista Doblemente Enlazada


Un tipo de lista enlazada ms sofisticado es la lista doblemente enlazada o lista enlazadas de dos vas. Cada nodo tiene dos enlaces: uno apunta al nodo anterior, o apunta al valor si es el primer nodo; y otro que apunta al nodo siguiente, o apunta al valor NULL si es el ltimo nodo.

En algn lenguaje de muy bajo nivel, XOR-Linking ofrece una va para implementar listas doblemente enlazadas, usando una sola palabra para ambos enlaces, aunque el uso de esta tcnica no se suele utilizar.

Listas enlazadas circulares


En una lista enlazada circular, el primer y el ltimo nodo estn unidos juntos. Esto se puede hacer tanto para listas enlazadas simples como para las doblemente enlazadas. Para recorrer una lista enlazada circular podemos empezar por cualquier nodo y seguir la lista en cualquier direccin hasta que se regrese hasta el nodo original. Desde otro punto de vista, las listas enlazadas circulares pueden ser vistas como listas sin comienzo ni fin. Este tipo de listas es el ms usado para dirigir buffers para ingerir datos, y para visitar todos los nodos de una lista a partir de uno dado.

Una lista enlazada circular que contiene tres valores enteros

Listas enlazadas circulares simples


Cada nodo tiene un enlace, similar al de las listas enlazadas simples, excepto que el siguiente nodo del ltimo apunta al primero. Como en una lista enlazada simple, los nuevos nodos pueden ser solo eficientemente insertados despus de uno que ya tengamos referenciado. Por esta razn, es usual quedarse con una referencia solamente al ltimo elemento en una lista enlazada circular simple, esto nos permite rpidas inserciones al principio, y tambin permite accesos al primer nodo desde el puntero del ltimo nodo.

Clases para la implementacin de Listas.

Pilas.
Una pila (stack en ingls) es una lista ordinal o estructura de datos en la que el modo de acceso a sus elementos es de tipo LIFO (del ingls Last In First Out, ltimo en entrar, primero en salir) que permite almacenar y recuperar datos.

Se aplica en multitud de ocasiones en informtica debido a su simplicidad y ordenacin implcita en la propia estructura.

Tabla 15. Operadores asociados al TDA Pila. Operador Iniciar pila. Pila vaca. Funciones asociada a GQueue. GQueue* g_queue_new (void) gboolean g_queue_is_empty (GQueue* queue)

Consultar pila. gpointer g_queue_peek_head (GQueue* queue) Meter. Sacar. Vaciar pila. void g_queue_push_head (GQueue* queue, gpointer data) gpointer g_queue_pop_head (GQueue* queue) void g_queue_free (GQueue* queue)

Iniciar pila. El operador "iniciar pila" es el encargado de crear una nueva pila e inicializarla al estado de pila vaca. Ejemplo 30. Creando una nueva pila. GQueue* pila; Pila = g_queue_new (); Pila vaca. Este operador consulta si la pila est vaca. Es necesaria su utilizacin antes de realizar la operacin de sacar elementos de la pila. Ejemplo 31. Funcin que comprueba si una pila est vaca. gboolean pila_vacia (GQueue* pila) { return g_queue_is_empty (pila); } Consultar pila. Esta operacin, consulta el contenido de la cima de la pila sin sacarlo. Ejemplo 32. Funcin que consulta la cima de la pila. gpointer consultar pila (GQueue* pila) { return g_queue_peek_head (pila); }

Meter El operador "meter", introduce elementos en la cima de la pila. Ejemplo 33. Introducir un nuevo elemento en la pila. GQueue* meter pila (GQueue* pila, gpointer dato) { g_queue_push_head (pila, dato); return pila; } Sacar El operador sacar, saca elementos de la cima de la pila. Ejemplo 34. Saca un elemento de la pila. gpointer sacar pila (GQueue* pila) { gpointer dato; dato = g_queue_pop_head (pila); return dato; } Vaciar pila. Elimina el contenido de una pila inicializndola a una pila vaca. Ejemplo 35. Vaca la pila g_queue_free (pila); Archivos (Files) ________________________________________ Definiciones Los Archivos (Files) son una coleccin de Registros (Records), donde cada uno de ellos consiste de uno o ms Campos (Fields). Ejemplo: Empleados o Empleado Numero o Empleado Nombre o Empleado_Ocupacion o Empleado_Titulo o Empleado Sexo o Empleado_Direccion o Empleado_Estado_Civil o Empleado_Salario fig. 1: Ejemplo de datos para el Archivo de Empleados Registro Campos Claves Primarias Secundarias Employee Number (E#) S S S

Name

Occupation S Degree S

Sex

S S Location S

Marital Status (MS)

Salary

S S S Los Objetivos de la estructura de datos archivo son : Recuperar Registros Actualizar Registros o Insercin de nuevos registros o Actualizacin de algunos campos de registros existentes o Eliminacin de registros existentes Las Claves ( Keys ) son campos de los registros designados explcitamente como tales. Los Archivos pueden tener una clave o ms de una clave. Ejemplo : Archivo Empleados o Empleado Numero o Empleado_Ocupacion o Empleado Sexo o Empleado_Salario Los Valores de las Claves ( Key Values ) pueden tener las siguientes limitaciones : Los valores de las claves deben ser todos distintos. Los valores de las claves pueden estar repetidos. Los Modos de Recuperacin y Actualizacin ( Modo of Retrieval and Update ) son Tiempo Real ( Real Time ) Por Lotes ( Batched ) o Archivo de Transacciones ( Transaction File ) o Archivo Maestro ( Master File ) Las Consultas ( Queries ) son combinaciones de valores de campos claves. Los Tipos de Consultas ( Query Types ) son los siguientes : Consultas Simples. Cuando se especifica un valor de una clave simple. Ejemplo : Empleado_Sexo = M. Consultas Rangos. Cuando se especifica un rango de valores de una clave simple. Ejemplo : 10000 > Empleado_Salario > 9000. Consultas Funcionales. Cuando se especifica una funcin de los valores de una clave simple. Ejemplo : Promedio Empleado_Salario.

Consultas Booleanas. Cuando se especifica una combinacin de consultas simples, rangos o funcionales usando los operadores booleanos and, or, not. Ejemplo : ( Empleado_Sexo = M ) and ( Empleado_Ocupacion = Programador ) and ( Empleado_Salario > 3000 ) Query Tipo Q1 Sex = M Query Simple Q2 Salary > 9000 Query Rango Q3 Salary > salario promedio de todos los empleados Query Funcional Q4 (Sex = M and Occupation = Programmer) or (Employee Number > 700 and Sex = F ) Query Booleano Los Dispositivos de Almacenamiento Externo ( DAE ) ( External Storage Devices ( ESD ) ) permiten disponer los datos de un archivo en un medio externo y persistente. Ejemplos de ESD son los Dispositivos de Almacenamiento de Acceso Directo ( DAAD ) ( Direct Access Storage Devices ( DASD ) ), que son lo popularmente conocidos como Discos Magneticos, Disco Duro, Floppy Disk, Diskette o ZIPDisk. ________________________________________ Diferencias entre Tablas de Smbolos y Archivos Las Tablas de Smbolos son suficientemente pequenas para contenerlas en la memoria principal de la computadora, mientras que los Archivos son suficientemente grandes como para requerir un medio de almacenamiento externo para disponerlos. ________________________________________ Organizacines de Archivos ( File Organizations ) Las Organizaciones de Archivos ( File Organizations ) son formas de disponer fisicamente los registros de los archivos en los medios de almacenamiento externo. Existen las siguientes organizaciones de archivos : Organizacin Secuencial ( Sequential Organization ) Organizacin Azarosa ( Random Organization ) Organizacin Enlazada ( Linked Organization ) Organizacin Invertida ( Inverted Organization ) Organizacin Celular ( Cellular Organization ) Las Archivos se componen u organizan en dos partes, el Directorio ( Directory ) y los Datos ( Datas ). El Directorio de un Archivo es una coleccin de Indices. Un Directorio puede tener un ndice por cada clave o puede tener ndices para solamente algunas claves.

Colas. Una cola es una estructura de datos donde el primer elemento en entrar es el primero en salir, tambin denominadas estructuras FIFO (First In, First Out).

Esta estructura de datos se puede definir como una lista enlazada con acceso FIFO a la que slo se tiene acceso al final de la lista para meter elementos y al principio de esta para sacarlos. Los operadores asociados a este TDA y las funciones que los implementan en GLib son: Tabla 14. Operadores asociados al TDA Cola. Operador Iniciar cola. Cola vaca. Funciones asociada a GQueue. GQueue* g_queue_new (void) gboolean g_queue_is_empty (GQueue* queue)

Consultar frente cola. gpointer g_queue_peek_head (GQueue* queue) Consultar final cola. Meter Sacar Vaciar cola. gpointer g_queue_peek_tail (GQueue* queue) void g_queue_push_tail (GQueue* queue, gpointer data) gpointer g_queue_pop_head (GQueue* queue) void g_queue_free (GQueue* queue)

Iniciar cola. El operador "Iniciar cola" es el encargado de crear una nueva cola y ponerla en estado de cola vaca. Ejemplo 23. Creando una nueva cola. GQueue* cola; cola = g_queue_new (); Cola vaca. Este operador consulta si la cola est vaca. Es necesaria su utilizacin antes de realizar la operacin de "sacar elementos" de la cola. Ejemplo 24. Funcin que comprueba si una cola est vaca. gboolean cola_vacia (GQueue* cola) { return g_queue_is_empty (cola); } Consultar el frente. Esta operacin consulta el contenido del frente de la cola sin sacarlo. Ejemplo 25. Funcin que consulta el frente de la cola. gpointer consultar_frente (GQueue* cola) { return g_queue_peek_head (cola); } Consultar el final. Esta operacin consulta el contenido del final de la cola sin sacarlo. Ejemplo 26. Funcin que consulta el final de la cola. gpointer consultar_final (GQueue* cola) { return g_queue_peek_tail (cola); } Meter Este operador introduce elementos al final de la cola. Ejemplo 27. Introducir un nuevo elemento en la cola. GQueue* meter_cola (GQueue* cola, gpointer dato) { g_queue_push_tail (cola, dato);

return cola; } Sacar El operador "sacar" elimina elementos del frente de la cola. Ejemplo 28. Saca un elemento de la cola. gpointer sacar_cola (GQueue* cola) { gpointer dato; dato = g_queue_pop_head (cola); return dato; }

Vaciar cola.
Elimina el contenido de una cola inicializndola a una cola vaca. Ejemplo 29. Vaca la cola. g_queue_free (cola);

Estructura de datos no lineales: rboles y grafos. Diferenciar entre las estructuras rboles y grafos. Conocer la representacin en memoria de un rbol y de un grafo. rboles.

Estructuras de Datos No Lineales

rboles Un rbol es una estructura no lineal en la que cada nodo puede apuntar a uno o varios nodos. Tambin se suele dar una definicin recursiva: un rbol es una estructura en compuesta por un dato y varios rboles. Esto son definiciones simples. Pero las caractersticas que implican no lo son tanto.

rbol Definiremos varios conceptos. En relacin con otros nodos: Nodo hijo: cualquiera de los nodos apuntados por uno de los nodos del rbol. En el ejemplo, 'L' y 'M' son hijos de 'G'. Nodo padre: nodo que contiene un puntero al nodo actual. En el ejemplo, el nodo 'A' es padre de 'B', 'C' y 'D'. Los rboles con los que trabajaremos tienen otra caracterstica importante: cada nodo slo puede ser apuntado por otro nodo, es decir, cada nodo slo tendr un padre. Esto hace que estos rboles estn fuertemente jerarquizados, y es lo que en realidad les da la apariencia de rboles. En cuanto a la posicin dentro del rbol: Nodo raz: nodo que no tiene padre. Este es el nodo que usaremos para referirnos al rbol. En el ejemplo, ese nodo es el 'A'. Nodo hoja: nodo que no tiene hijos. En el ejemplo hay varios: 'F', 'H', 'I', 'K', 'L', 'M', 'N' y 'O'. Nodo rama: aunque esta definicin apenas la usaremos, estos son los nodos que no pertenecen a ninguna de las dos categoras anteriores. En el ejemplo: 'B', 'C', 'D', 'E', 'G' y 'J'. Otra caracterstica que normalmente tendrn nuestros rboles es que todos los nodos contengan el mismo nmero de punteros, es decir, usaremos la misma estructura para todos los nodos del rbol. Esto hace que la estructura sea ms sencilla, y por lo tanto tambin los programas para trabajar con ellos. Tampoco es necesario que todos los nodos hijos de un nodo concreto existan. Es decir, que pueden usarse todos, algunos o ninguno de los punteros de cada nodo. Un rbol en el que en cada nodo o bien todos o ninguno de los hijos existe, se llama rbol completo. En una cosa, los rboles se parecen al resto de las estructuras que hemos visto: dado un nodo cualquiera de la estructura, podemos considerarlo como una estructura independiente. Es decir, un nodo cualquiera puede ser considerado como la raz de un rbol completo. Existen otros conceptos que definen las caractersticas del rbol, en relacin a su tamao: Orden: es el nmero potencial de hijos que puede tener cada elemento de rbol. De este modo, diremos que un rbol en el que cada nodo puede apuntar a otros dos es de orden dos, si puede apuntar a tres ser de orden tres, etc. Grado: el nmero de hijos que tiene el elemento con ms hijos dentro del rbol. En el rbol del ejemplo, el grado es tres, ya que tanto 'A' como 'D' tienen tres hijos, y no existen elementos con ms de tres hijos. Nivel: se define para cada elemento del rbol como la distancia a la raz, medida en nodos. El nivel de la raz es cero y el de sus hijos uno. As sucesivamente. En el ejemplo, el nodo 'D' tiene nivel 1, el nodo 'G' tiene nivel 2, y el nodo 'N', nivel 3. Altura: la altura de un rbol se define como el nivel del nodo de mayor nivel. Como cada nodo de un rbol puede considerarse a su vez como la raz de un rbol, tambin podemos hablar de altura de ramas. El rbol del ejemplo tiene altura 3, la rama 'B' tiene altura 2, la rama 'G' tiene altura 1, la 'H' cero, etc. Los rboles de orden dos son bastante especiales, de hecho les dedicaremos varios captulos. Estos rboles se conocen tambin como rboles binarios. Frecuentemente, aunque tampoco es estrictamente necesario, para hacer ms fcil moverse a travs del rbol, aadiremos un puntero a cada nodo que apunte al nodo padre. De este modo podremos avanzar en direccin a la raz, y no slo hacia las hojas. Es importante conservar siempre el nodo raz ya que es el nodo a partir del cual se desarrolla el rbol, si perdemos este nodo, perderemos el acceso a todo el rbol.

El nodo tpico de un rbol difiere de los nodos que hemos visto hasta ahora para listas, aunque slo en el nmero de nodos. Veamos un ejemplo de nodo para crear rboles de orden tres: struct nodo { int dato; struct nodo *rama1; struct nodo *rama2; struct nodo *rama3; }; O generalizando ms: #define ORDEN 5 struct nodo { int dato; struct nodo *rama [ORDEN]; }; Tipos de arboles en C Para C, y basndonos en la declaracin de nodo que hemos visto ms arriba, trabajaremos con los siguientes tipos: typedef struct _nodo { int dato; struct _nodo *rama [ORDEN]; } tipo Nodo; typedef tipo Nodo *pNodo; typedef tipo Nodo *rbol; Al igual que hicimos con las listas que hemos visto hasta ahora, declaramos un tipo tipo Nodo para declarar nodos, y un tipo pNodo para es el tipo para declarar punteros a un nodo. rbol es el tipo para declarar rboles de orden ORDEN. rbol El movimiento a travs de rboles, salvo que implementemos punteros al nodo padre, ser siempre partiendo del nodo raz hacia un nodo hoja. Cada vez que lleguemos a un nuevo nodo podremos optar por cualquiera de los nodos a los que apunta para avanzar al siguiente nodo. En general, intentaremos que exista algn significado asociado a cada uno de los punteros dentro de cada nodo, los rboles que estamos viendo son abstractos, pero las aplicaciones no tienen por qu serlo. Un ejemplo de estructura en rbol es el sistema de directorios y ficheros de un sistema operativo. Aunque en este caso se trata de rboles con nodos de dos tipos, nodos directorio y nodos fichero, podramos considerar que los nodos hoja son ficheros y los nodos rama son directorios. Otro ejemplo podra ser la tabla de contenido de un libro, por ejemplo de este mismo curso, dividido en captulos, y cada uno de ellos en subcaptulos. Aunque el libro sea algo lineal, como una lista, en el que cada captulo sigue al anterior, tambin es posible acceder a cualquier punto de l a travs de la tabla de contenido. Tambin se suelen organizar en forma de rbol los organigramas de mando en empresas o en el ejrcito, y los rboles genealgicos.

Arboles Binarios

Se define un rbol binario como un conjunto finito de elementos (nodos) que bien est vaco o est formado por una raz con dos rboles binarios disjuntos, es decir, dos descendientes directos llamados subrbol izquierdo y subrbol derecho. Los rboles binarios (tambin llamados de grado 2) tienen una especial importancia. Las aplicaciones de los arboles binarios son muy variadas ya que se les puede utilizar para representar una estructura en la cual es posible tomar decisiones con dos opciones en distintos puntos. rbol binario de bsqueda. Los rboles binarios se utilizan frecuentemente para representar conjuntos de datos cuyos elementos se identifican por una clave nica. Si el rbol est organizado de tal manera que la clave de cada nodo es mayor que todas las claves su subrbol izquierdo, y menor que todas las claves del subrbol derecho se dice que este rbol es un rbol binario de bsqueda. Ejemplo:

Operaciones bsicas Una tarea muy comn a realizar con un rbol es ejecutar una determinada operacin con cada uno de los elementos del rbol. Esta operacin se considera entonces como un parmetro de una tarea ms general que es la visita de todos los nodos o, como se denomina usualmente, del recorrido del rbol. Si se considera la tarea como un proceso secuencial, entonces los nodos individuales se visitan en un orden especfico, y pueden considerarse como organizados segn una estructura lineal. De hecho, se simplifica considerablemente la descripcin de muchos algoritmos si puede hablarse del proceso del siguiente elemento en el rbol, segn un cierto orden subyacente. Hay dos formas bsicas de recorrer un rbol: El recorrido en amplitud y el recorrido en profundidad. Recorrido de un rbol Binario

Recorrido en amplitud Es aquel recorrido que recorre el rbol por niveles, en el ltimo ejemplo sera: 12 - 8,17 - 5, 9,15 Recorrido en profundidad Recorre el rbol por subrbols. Hay tres Pre orden, orden central y postorden. Hay tres formas: en inorden, pre orden y postorden. Cada una de ellas tiene una secuencia distinta para analizar el rbol como se puede ver a continuacin: 1. Inorden Recorrer el subrbol izquierdo en inorden. Examinar la raz. Recorrer el subrbol derecho en inorden. 2. Pre orden Examinar la raz.

Recorrer el subrbol izquierdo en pre orden. recorrer el subrbol derecho en pre orden. 3. Postorden Recorrer el subrbol izquierdo en postorden. Recorrer el subrbol derecho en postorden. Examinar la raz. A continuacin se muestra un ejemplo de los diferentes recorridos en un rbol binario. Inorden: GDBHEIACJKF Pre orden: ABDGEHICFJK Postorden: GDHIEBKJFCA Clasificacin de Arboles Binarios Existen cuatro tipos de rbol binario: rbol Binario Distinto. rbol Binario Similares. rbol Binario Equivalentes. rbol Binario Completos. A continuacin se har una breve descripcin de los diferentes tipos de rbol binario as como un ejemplo de cada uno de ellos. rbol Binario Distinto Se dice que dos rboles binarios son distintos cuando sus estructuras son diferentes. Ejemplo: rbol Binario Similar Dos rboles binarios son similares cuando sus estructuras son idnticas, pero la informacin que contienen sus nodos es diferente. Ejemplo: rbol Binario Equivalente Son aquellos arboles que son similares y que adems los nodos contienen la misma informacin. Ejemplo: rbol Binario Completo Son aquellos arboles en los que todos sus nodos excepto los del ltimo nivel, tiene dos hijos; el subrbol izquierdo y el subrbol derecho.

Terminologa La terminologa que por lo regular se utiliza para el manejo de arboles es la siguiente: Hijo: X es hijo de Y, s y solo s el nodo X es apuntado por Y. Tambin se dice que X es descendiente directo de Y. Padre: X es padre de Y s y solo s el nodo X apunta a Y. Tambin se dice que X es antecesor de Y. Hermano: Dos nodos sern hermanos si son descendientes directos de un mismo nodo. Hoja: Se le llama hoja o terminal a aquellos nodos que no tienen ramificaciones (hijos). Nodo anterior: Es un nodo que no es raz ni terminal. Grado: Es el nmero de descendientes directos de un determinado nodo.

Grado de un rbol: Es el mximo grado de todos los nodos del rbol. Nivel: Es el nmero de arcos que deben ser recorridos para llegar a un determinado nodo. Por definicin la raz tiene nivel 1. Altura: Es el mximo nmero de niveles de todos los nodos del rbol. Peso: Es el nmero de nodos del rbol sin contar la raz. Longitud de camino: Es el nmero de arcos que deben ser recorridos para llegar desde la raz al nodo X. Por definicin la raz tiene longitud de camino 1, y sus descendientes directos longitud de camino 2 y as sucesivamente.

GRAFOS Un grafo est formado por un conjunto de nodos(o vrtices) y un conjunto de arcos. Cada arco en un grafo se especifica por un par de nodos. El conjunto de nodos es {A, B, C, D, F, G, H} y el conjunto de arcos {(A, B), (A, D), (A, C), (C, D), (C, F), (E, G), (A, A)} para el siguiente grafo

Si los pares de nodos en los arcos dirigidos, el grafo se denomina grafo directo, dirigido o dgrafo. TERMINOLOGA *.-Al nmero de nodos del grafo se le llama orden del grafo. *.-Un grafo nulo es un grafo de orden 0 (cero). *.-Dos nodos son adyacentes si hay un arco que los une. *.-En un grafo dirigido, si A esa adyacente de B, no necesariamente B es adyacente de A *.-Camino es una secuencia de uno o ms arcos que conectan dos nodos. *.-Un grafo se denomina conectado cuando existe siempre un camino que une dos nodos cualesquiera y desconectado en caso contrario. *.-Un grafo es completo cuando cada nodo est conectado con todos y cada uno de los nodos restantes. *.-El camino de un nodo as mismo se llama ciclo.

MATRIZ DE ADYACENCIA

*.-Un grafo sin ciclos es un rbol. *.-El entregado de un nodo indica el nmero de arcos que llegan a ser nodo. *.-El fuera de grado de un nodo indica el nmero de arcos que salen de l. *.-Un grafo de N vrtices o nodos es un rbol si cumple las siguientes condiciones a) Tiene N-1 arcos b) Existe una trayectoria entre cada par de nodos. c) Esta mnimamente conectado.

*.-Un grafo esta etiquetado si sus arcos tiene valores asignados. Si este valor es numrico se dice que el grafo tiene peso.

Grafos.
Un grafo (especficamente, grafo simple no dirigido) es un par G D .V; E/ D .V .G/; V .E//, donde V es un conjunto finito no vaco de elementos llamados vrtices y E es un conjunto de pares desordenados de elementos distintos de V llamados aristas. Es decir, una arista e 2 E tiene la forma fu; vg, donde u; v 2 V y u 6D v. La terminologa en teora de grafos vara muchsimo: prcticamente no hay dos textos que adopten la misma. En particular, los vrtices de un grafo tambin reciben a veces el nombre de nodos, y las aristas arcos, ejes o lneas.