IMD - Arboles y Grafos
IMD - Arboles y Grafos
IMD - Arboles y Grafos
Grafos
Definiciones básicas y su representación
En primera instancia debemos entender que es un grafo. Un grafo es una composición de un conjunto de
objetos conocidos como nodos que se relacionan con otros nodos a través de un conjunto de conexiones
conocidas como aristas.
Los grafos permiten estudiar las relaciones que existen entre unidades que interactúan con otras.
Podemos representar diversas situaciones o elementos con grafos. Estos son extraordinariamente útiles en
situaciones complejas, es por esto, que es común conseguir la implementación de análisis de grafos en estudios
de ciencias exactas, ciencias sociales y en aplicaciones informáticas.
Existen definiciones que debemos conocer a profundidad, para entender las amplias posibilidades que nos
brindan los grafos para estudiar relaciones entre diferentes tipos de información. En primer lugar, debemos
conocer es la composición exacta de un grafo y algunos conceptos asociados.
Un grafo en su totalidad es un par ordenado compuesto por vértices (v) y aristas (e); donde en la gran mayoría
de los casos los vértices son de cuantificación finita. El número de vértices que componen al grafo, son las que
conocemos como orden. Existe también el concepto de grado que se corresponde al número de arcos al que
pertenecen de forma externa y en cuanto a las aristas también conseguimos el concepto de bucle que no es más
que una arista relacionada de diversas formas con el mismo nodo.
Un grafo dirigido conocido también como dígrafo consta de un conjunto de vértices y aristas donde cada arista
se asocia de forma unidireccional a través de una flecha con otro.
Las aristas dependiendo de su salida o ingreso reciben la calificación de entrante o saliente, la condición común,
es que siempre tienen un destino hacia un nodo.
No dirigidos:
Los grafos no dirigidos son aquellos que constan un conjunto de vértices que están conectados a un conjunto de
aristas de forma no direccional.
Esto significa que una arista puede indistintamente recorrerse desde cualquiera de sus puntos y en cualquier
dirección.
En teoría de grafos, un grafo ponderado, valorado o con pesos es un grafo en el que las aristas tienen un valor o
peso asociado. En análisis de redes sociales y ciencia de redes, este tipo de grafos sirven para representar redes
sociales o redes complejas con relaciones valoradas.
Un paseo en una gráfica G es una secuencia de vértices (u1, u2,...,un) tal que para cada uno 1≤ i≤n−1 , tenemos
ui ui+1 . (Es decir, los vértices consecutivos en la caminata deben ser adyacentes). Un u−v paseo G es un paseo
con u1=u y un=v. (Es decir, una caminata que comienza en u y termina en v.)
Circuitos (Ciclos):
Es un camino del nodo w al nodo w, esto es, un camino que regresa al mismo nodo de donde salió.
Circuitos de Euler:
Es aquel ciclo que recorre todos los nodos pasando por todas las aristas solamente una vez.
Un grafo tiene un Circuito de Euler si y solo si es conexo y todos sus nodos tienen valencia par.
Paseo Hamiltoniano
Paseo que atraviesa cada uno de los vértices solo una vez y
no es cerrado.
Representaciones Matriciales
Matriz de Adyacencia: Matriz cuadrada A, donde aij, es el número de aristas que unen el vértice vi con el vj, o el
número de arcos que van desde vi hasta vj.
• En grafos no dirigidos es una matriz simétrica, y los bucles cuentan por 2. Además, la suma de los
elementos de cada columna i o de cada fila i son el grado del vértice vi.
• En grafos dirigidos la suma de los elementos de la fila i es el grado de salida del vértice vi, mientras que
la suma de los elementos de una columna j es el grado de entrada del vértice vj.
Al elevar la matriz A a r, se obtiene Ar, otra matriz cuadrada cuyos elementos aij son el número de cadenas de
longitud r que van desde vi hasta vj.
Matriz de Incidencia: Cada fila corresponde a un vértice y cada columna a un arco o arista.
• En grafos no dirigidos, el elemento mij puede ser: 0 si vi no es incidene con ej; 1 si vi es incidene con ej; y
2 si en vi, ej forma un bucle.
• En grafos dirigidos, el elemento mij puede ser: 0 si vi no es incidene con ej; 1 si vi es vértice inicial de ej; -
1 si vi es vértice final de ej; y 2 si en vi, ej forma un bucle.
Isomorfismo de grafos
En teoría de grafos, un isomorfismo de grafos es una biyección de los vértices de un grafo sobre otro, de modo
que se preserva la adyacencia de los vértices. Más formalmente, el isomorfismo entre dos grafos G y H es una
biyección f entre los conjuntos de sus vértices : V(G) → V(H) que preserva la relación de adyacencia.1 Es decir,
cualquier par de vértices u y v de G son adyacentes si y solo si lo son sus imágenes, f(u) y f(v), en H.
A pesar de su diferente aspecto, los dos grafos que se muestran a continuación son isomorfos:
Grafo G Grafo H Un isomorfismo entre
GyH
(a) = 1
(b) = 6
(c) = 8
(d) = 3
(g) = 5
(h) = 2
(i) = 4
(j) = 7
Dos grafos con matrices de adyacencia respectivas A y B serán isomorfos si y solo si existe una matriz
permutación P tal que B = P A Pᵗ
Grafos aplánales
Este tipo de grafos, además de aparecer con mucha frecuencia también cuentan con muchas propiedades
interesante. Se analizarán algunas de las más importantes.
Diremos que un grafo es aplanable si puede ser dibujado sobre un plano de tal manera tal que ninguna arista se
cruce con otra excepto, desde luego, en los vértices comunes. El siguiente es un grafo aplanable:
• Padre: Si v es un vértice en T, que no necesariamente es la raíz, el padre de v es el vértice único u tal que
existe un arco directo, v es un hijo de u.
• Hermanos, son vértices que tiene el mismo padre.
• Los ancestros de un vértice, son los vértices en la ruta desde la raíz hasta ese vértice, excluyendo el
vértice mismo e incluyendo la raíz.
• Un vértice de un árbol enraizado es llamado hoja, si esta no tiene
hijos.
• Los vértices que tienen hijos son llamados vértices internos. La raíz
es un vértice interno a menos que está sea el único vértice en el
grafo, en cuyo caso es una hoja.
• Si a es un vértice en un árbol, el subárbol con a como raíz es el
subgrafo del árbol que consiste de a y sus descendientes y todos
los arcos incidentes a esos descendientes.
Ejemplo:
Ejemplo:
Ejemplo:
A partir de un árbol binario dado, podemos obtener directamente un código de prefijos binario. Primero
etiquetamos las aristas con 0 y 1. Las aristas que corresponden al subárbol izquierdo se etiquetan con 0 y las
derechas con 1.
Es evidente que el conjunto de sucesiones asignadas a las hojas de cualquier árbol binario es un código de
prefijos. El código de prefijos obtenido es {000, 001, 01, 10, 11}.
• Sea x un nodo en un árbol de búsqueda binaria. Si y es un nodo del sub-árbol izquierdo de x, entonces la
clave de y ≤ clave de x. Si y es un nodo del subárbol derecho de x, entonces la clave de x ≤ clave de y.
• Por ejemplo, dos árboles de búsqueda binaria son:
• La propiedad del árbol de búsqueda nos permite imprimir o recorrer sus nodos en el orden de sus claves
haciendo uso de un simple algoritmo recursivo. Árboles generadores y Conjuntos de
corte
Sean G un grafo conexo donde los vértices representan edificios y las aristas túneles de conexión entre los
edificios. Se quiere determinar un subconjunto de túneles que debieran mantenerse que pudiéramos alcanzar
un edifico desde otro a través de estos túneles. También se desea determinar los subconjuntos de túneles que el
ser obstruidos separarían a algunos edificios de otros (subconjunto de aristas de conexión y subconjunto de
aristas de no conexión de un grafo).
Definición:
Un árbol de un grafo es un subgrafo del grafo que es un árbol. Un árbol generador de un grafo conexo es un
subgrafo generador que es un árbol.
Un grafo conexo siempre contiene un árbol generador. Si un grafo es conexo y no contiene circuitos entonces es
un árbol. Si el grafo contiene uno o más circuitos, podemos eliminar una arista de los circuitos y aún tener un
subgrafo conexo.
Un grafo generador es un subgrafo mínimo conexo de un grafo conexo en el sentido de que a partir de un
subgrafo conexo el cual no sea un árbol generador, una o más de sus aristas pueden eliminarse, de manera que
el grafo resultante aún sea un subgrafo conexo y, por otra parte, ninguna arista puede eliminarse de un árbol
generador de manera que el subgrafo resultante aún sea un subgrafo conexo.
Para un grafo conexo con e aristas y v vértices, existen v - 1 ramas en cualquier árbol
generador. Entonces, en relación con cualquier árbol generador, existen e - v + 1
cuerdas.
Para este grafo el conjunto de aristas {e1, e5, e6, e7, e4} es un conjunto de corte, ya
que su eliminación dejará un subgrafo no conexo como el siguiente.
Para este grafo el conjunto de aristas {e1, e5, e6, e7, e4} es un conjunto de corte, ya que su
eliminación dejará un subgrafo no conexo como el siguiente.
Un procedimiento para resolver este problema se base en la observación de que, entre todas las aristas en un
circuito, la arista con mayor peso no está en el árbol generador mínimo. Sea "C" un circuito en un grafo pesado,
y "E" la arista con el mayor peso en "C". Supongamos que "E" es una rama de un árbol generador de T. Sea del
conjunto de corte correspondiente a la rama a la rama "E" como el circuito C y el conjunto de corte d deben
tener un numero par de aristas en común además de la arista "E" deberán existir al menos una o más aristas que
estén tanto en C como en D. Sea F una de estas aristas. Observemos que F es una cuerda del árbol generador t
debido a que D es un conjunto de corte.
Agreguemos la arista F al árbol generador T y denotemos el subgrafo resultante como U. Es obvio que U es un
subgrafo generador que contiene exactamente un circuito, el circuito correspondiente a F. Si eliminamos E de U,
obtenemos un árbol generador cuyo peso es menor que T.
Construiremos un subgrafo del grafo pesado paso por paso, al ir examinando cada arista en orden creciente de
pesos. Se agregará una arista al subgrafo parcialmente construido si no origina un circuito, y será descartada en
caso contrario. La constricción termina cuando todas las aristas han sido examinadas. Es claro que nuestra
construcción de origen a un subgrafo que no contiene un circuito. El subgrafo también es conexo. Así el subgrafo
construido es un árbol.
Además, este es un árbol generador debido a que el grafo original es conexo. Finalmente, el árbol generador es
mínimo porque en el proceso de construcción una arista era excluida a favor de las aristas de pesos mayores
solo si se sabía que la arista excluida no podía estar en un árbol generador mínimo. En otras palabras, las v - 1
aristas en el subgrafo son efectivamente las v - 1 aristas con los pesos menores que pueden ser incluidas en un
árbol generador mínimo.
Aplicaciones
1. Gracias a la teoría de grafos se pueden resolver diversos problemas como por ejemplo la síntesis
de circuitos secuenciales, contadores o sistemas de apertura. Se utiliza para diferentes áreas, por
ejemplo, Dibujo computacional, en todas las áreas de Ingeniería.
2. Los grafos se utilizan también para modelar trayectos como el de una línea de autobús a través
de las calles de una ciudad, en el que podemos obtener caminos óptimos para el trayecto
aplicando diversos algoritmos como puede ser el algoritmo de Floyd.
3. Se emplea en problemas de control de producción, para proyectar redes de ordenadores, para
diseñar módulos electrónicos modernos y proyectar sistemas físicos con parámetros localizados
(mecánicos, acústicos y eléctricos).
4. Para la administración de proyectos, utilizamos técnicas como técnica de revisión y evaluación de
programas (PERT) en las que se modelan los mismos utilizando grafos y optimizando los tiempos
para concretar los mismos.
5. Los grafos son importantes en el estudio de la biología y hábitat. El vértice representa un hábitat
y las aristas (o "edges" en inglés) representa los senderos de los animales o las migraciones. Con
esta información, los científicos pueden entender cómo esto puede cambiar o afectar a las
especies en su hábitat.
Ejemplos: