SlideShare una empresa de Scribd logo
1 de 24
2013
LICENCIATURA EN INFORMATICA
27/05/2013
GRAFOS
INTRODUCCIÓN
En esta investigación les estaremos dedicándonos al estudio de las graficas o como se le
conoce en el mundo de las ciencias matemáticas e informáticas grafos.
Considerando que las graficas o grafos son estructuras de datos no lineales donde cada
componente puede tener uno o más predecesores y sucesores. En una grafica se distinguen
dos elementos: los nodos, mejor conocidos como vértices, y los arcos, llamados aristas, que
conectan un vértice con otro. Los vértices almacenan información y las aristas representan
relaciones entre dicha información.
Estas estructuras tienen aplicaciones en diferentes dominios, entre ellos transporte terrestre,
aéreo y marítimo, redes de computadoras, mapas, ubicación geográficas de varias ciudades,
asignación de tareas, etc.
Recordemos que existen diferencias sustanciales entre grafos y arboles y entre ellas tenemos
que los arboles son una estructura jerárquica aplicada sobre una colección de nodos en
donde uno de los nodos es la raíz, mientras que en grafos existen varios caminos entre un
nodo u otro, tomando en cuenta también que el árbol establece un único camino desde el
nodo raíz hasta un nodo cualquiera del árbol, diferenciándose del grafo que se encarga de
estudiar las relaciones de unidades que interactúan unas con otras.
DEFINICIÓN
Una grafica G consta de dos conjuntos: V(G) y A(G). El primero lo integran elementos
llamados nodos o vértices; el segundo, arcos o aristas. Por lo tanto, podemos denotar una
grafica G como:
G= (V,A)
Donde V representa el conjunto de vértices de G y A el conjunto de aristas de G. Si no se
hace ninguna especificación, los conjuntos V y A son finitos.
Cada arista esta identificada por un único par de nodos del conjunto de vértices, que puede o
no estar ordenado. Una arista que va del vértice u al v se denota mediante la expresión a= (u,
v), donde u y v son vértices adyacentes y los extremos de a. En este caso, u y v están
conectados por a y se dice que es incidente en u y v.
CONCEPTOS BÁSICOS.
 Grado de un vértice: El grado de un vértice v, escrito como grado (v), es el número de
aristas que contienen a v; es decir, que tienen a v como extremo. Si el grado (v) = 0 (v
no tiene aristas), se dice que v es un nodo aislado.
 Lazo o Bucle: Un lazo o bucle es una arista que conecta a un vértice consigo mismo;
es decir, a= (u, u).
 Camino: Un camino P de longitud n se define como la secuencia de n vértices que se
debe seguir para llegar del vértice v1 (vértice de origen), al vértice vn, (vértice de
destino).
 Camino Cerrado: El camino P es cerrado si el primero y ultimo vértices son iguales; es
decir, si v1 = vn.
 Camino Simple: El camino es simple si todos sus nodos so distintos, con excepción
del primero y del ultimo, que pueden ser iguales; es decir, P es simple si v1, v2,…., son
distintos.
 Ciclo: Un ciclo es un camino simple cerrado de longitud 3 o mayor. Un ciclo de longitud
k se llama k-ciclo.
 Grafo Conexo: Se dice que un grafo es conexo si existe un camino simple entre
cualesquiera dos de sus nodos.
 Grafo árbol: Se dice que un grafo G es del tipo árbol o árbol libre si G es una grafica
conexa sin ciclos.
 Grafo completo: Se dice que un grafo es completo si cada vértice v de G es
adyacente a todos los demás vértices de G. Una grafica completa de n vértices tendrá
n (n – 1)/2 aristas.
 Grafo etiquetado: Se dice que un grafo G esta etiquetada si sus aristas tienen
asignado un valor. Es decir, si cada arista a tiene un valor numérico no negativo c(a),
llamado costo, peso o longitud de a, entonces G tiene peso o esta etiquetado. En este
caso, cada camino P de G tendrá asociado un peso o longitud que será la suma de los
pesos de las aristas que forman el camino P.
 Multígrafo: Un grafo se denomina multígrafo si al menos dos de sus vértices están
conectados entre si por medio de dos aristas. En este caso, las aristas reciben el
nombre de aristas múltiples o paralelas.
GRAFOS DIRIGIDOS
Se caracterizan porque sus aristas tienen asociadas una dirección; es decir, son pares
ordenados. Los vértices se utilizan para representar información, mientras que las aristas
representan una relación con dirección o jerarquía entre aquellos.
Un grafo dirigido G, también es llamado dígrafo, se caracteriza porque cada arista a tiene una
dirección asignada; es decir, cada arista esta asociada a un par ordenado (u, v) de vértice G.
Una arista dirigida a= (u, v) se llama arco, y generalmente se expresa u v. Para las aristas
de los dígrafos se aplica la siguiente terminología:
 a empieza en v.
 u es el origen o punto inicial de a, y v es el destino o punto terminal de a.
 u es un predecesor de v y v es un sucesor o vecino de u.
 u es adyacente hacia v y v es adyacente desde u.
REPRESENTACIÓN DE GRAFOS DIRIGIDOS
Los dígrafos son estructuras de datos abstractas; por lo tanto, los lenguajes de programación
no cuentan con herramientas que permitan su manejo. Para su representación se requiere
usar otras estructuras de datos. Existes varias opciones para realizar esto ultimo; la elección
de la mas adecuada depende del uso que se le vaya dar a la información almacenada en los
vértices y en las aristas.
Las representaciones más utilizadas son las matrices y listas de adyacencia, que se
describirán mas adelante. Es importante señalar que algunos lenguajes de programación,
como LISP o SCHEME, no utilizan arreglos bidimensionales (matrices) como estructura de
datos estándar; por lo tanto, se usan arboles o listas para la representación de dígrafos.
 Ejemplo: N = {a,b,c}, A = {(a,b), (b,c), (c,a)}
Las representaciones más comunes son:
 Listas de adyacencia
 Matriz de adyacencia
GRAFOS NO DIRIGIDOS
Su característica principal es que sus aristas son pares no ordenados de vértices. Es decir, si
existe un camino del vértice i al j, será exactamente el mismo camino del vértice j al i.
Estos grafos se utilizan para modelar relaciones simétricas entre diferentes objetos, que se
representan por medio de los vértices, mientras que las aristas se usan para indicar las
relaciones entre ellos. Por ejemplo, el costo de un boleto de avión para ir de la ciudad de
Panama a Bocas del Toro será el mismo en cualquiera de las direcciones que se realice el
viaje.
Un grafo no dirigido G= (V, A) consta de un conjunto finito de vértices V y de otro finito de
aristas A. Se diferencia de una grafica dirigida en que cada arista en A es un par no ordenado
de vértices. Si (u, v) es una arista no dirigida, entonces (u, v) = (v, u).
REPRESENTACIÓN DE GRAFOS NO DIRIGIDOS
Los grafos no dirigidos so estructuras de datos abstractos; por lo tanto, se deben apoyar en
otras estructuras para su representación en memoria. Las dos representaciones más
utilizadas matriz de adyacencia y lista de adyacencia.
Considerando la simetría de las relaciones entre los elementos de los grafos, se requiere
cambiar cada arista no dirigida entre u y v por dos aristas dirigidas, una de u a v y otra de v a
u; por lo tanto, la matriz de adyacencia resultara una matriz simétrica, y en la lista de
adyacencia el vértice u estará en la lista de adyacencia del vértice v, y viceversa.
Una posibilidad es definir dos hechos por cada arista:
arista(a,b). a b
arista(b,a).
arista(b,c).
arista(c,b).
arista(c,a).
arista(a,c).
c
MATRIZ DE ADYACENCIA
Una matriz de adyacencia es una matriz booleana, de orden n, donde n, indica el numero de
vértices de G. Los renglones y columnas de la matriz representan a los vértices y su contenido
la existencia o no de arco entre ellos. Por lo tanto, cada elemento i, j de la matriz almacena un
1, o un 0, dependiendo de si existe o no un arco entre los vértices i y j.
Para generar la matriz de adyacencia correspondiente a un dígrafo se le da un orden arbitrario
a sus vértices, y se asigna a los renglones y a las columnas de una matriz el mismo orden. Un
elemento de la matriz será 1 si los vértices correspondientes al renglón y a la columna están
unidos por una arista (son adyacentes), y 0 en caso contrario.
Una ventaja de las matrices de adyacencia es que el tiempo de acceso al elemento requerido
es independiente del tamaño de V y A. El tiempo de búsqueda es del orden de 0(n). Sin
embargo, su principal desventaja es que requiere un espacio de almacenamiento de n2
posiciones, aunque el número de arcos de G no sobrepase ese numero.
La matriz de adyacencia es útil en los algoritmos diseñados para conocer si existe una arista
entre dos nodos.
Como variante de la matriz de adyacencia tenemos la matriz de adyacencia etiquetada, en
donde M[i, j] representa la etiqueta o costo asociado al arco. Si la arista no existe, entonces el
valor de M[i, j] será cero. Estas matrices también se denominan matrices de costos o
distancias.
Desventaja principal: el espacio que requieren para almacenar la información.
Como alternativa para esa desventaja: es la utilización de lista de adyacencia.
LISTA DE ADYACENCIA
Una lista de adyacencia para el vértice a es una lista ordenada de todos los vértices
adyacentes de a. Por lo tanto, una lista de adyacencia para representar un grafo dirigido esta
formado por tantas listas como vértices que tenga G. Para guardar los vértices de G se puede
utilizar otra lista o un arreglo.
Este tipo de representación se recomienda cuando el número de arista es menor a n2. El uso
de lista de adyacencia permite ahorrar espacio de almacenamiento. Sin embargo, usar una
lista en lugar de una matriz tiene la desventaja de que el tiempo de búsqueda de las arista
puede ser mayor, ya que se pierde el acceso directo que permite la matriz. La operación de
búsqueda será del orden de 0(n).
OBTENCIÓN DE CAMINOS
Al buscar una estructura de datos que se ajuste a las características de un problema, se
busca también que sobre dicha estructura se pueda realizar operaciones que faciliten el
manejo de la información almacenada en ella.
Para el caso de las graficas dirigidas, generalmente resulta de interés encontrar los caminos,
directos o indirectos, entre sus vértices. A su vez al trabajar con dígrafos etiquetados se
requiere encontrar el camino mas corto entre dos vértices dados o entre todos sus vértices. Es
decir, interesan aquellos caminos que nos permitan desde un vértice origen a un vértice
destino recorriendo la menor distancia o con el menor costo.
Los algoritmos mas usados para este fin son: Dijkstra, Floyd y Warsall. Los tres algoritmos
utilizan una matriz de adyacencia etiquetada, donde:
M[i, j] = 0 si i = j.
M[i, j] = infinito si no existe un camino de i a j, donde i es diferente a j.
M[i, j] = costo de ir del vértice i al vértice j, si existe a(i, j)
A partir de este punto, la matriz de adyacencia etiquetada la llamaremos matriz de distancias
o matriz de costos.
ALGORITMO DE DIJKSTRA
Este algoritmo se caracteriza por encontrar el camino mas corto de un vértice elegido a
cualquier otro vértice del dígrafo, donde la longitud de un camino es la suma de los pesos de
las aristas que lo forman. Las aristas deben tener un peso no negativo.
El algoritmo de Dijkstra, también llamado algoritmo de caminos mínimos,
es un algoritmo para la determinación del camino más corto dado
un vértice origen al resto de vértices en un grafo con pesos en cada arista
Una posible aplicación de este algoritmo se presenta cuando se desea encontrar la ruta mas
corta entre dos ciudades; cada vértice representa una ciudad y el peso de las aristas indica la
duración del vuelo.
Para el siguiente ejemplo se buscará la ruta mas corta o el camino de menor longitud que
existe desde a hasta z considerando lo siguiente:
 Vértice[s], es un arreglo formado por los vértices de los cuales ya conocemos la
distancia mínima entre ellos y el origen. Este arreglo inicialmente solo almacena al
nodo origen.
 Paso 1, 2, 3….. es un arreglo formado por la distancia del vértice origen a cada uno de
los otros. Es decir este arreglo almacena o guarda la menor distancia o costo, entre el
origen y el vértice repetido o iterado.
 Ejemplo:
Vértice[s] Paso1 Paso2 Paso3 Paso Paso5 Paso6 Paso7 Paso
A [0, a] * * * * * * *
B [16,a] [16,a] [11,c] [11,c] * * * *
C [10,a] [9,d] [9,d] * * * * *
D [5,a] [5,a] * * * * * *
E ---- [20,d] [19,c] [19,c] [18,f] [18,f] [18,f] *
F ---- ---- [21,c] [15,b] [15,b] * * *
G ---- ---- ---- [17,b] [17,b ] [17,b] * *
Z ---- ---- ---- ---- [31,f] [31,f] [23,e] [23,e]
Con este ejemplo encontramos que la ruta mas corta o camino de menor longitud que existe
entre “a” que para este problema es nuestro punto de partida y “z”, nuestro destino final es: {a,
d, c, b, f, e, z}
Leyenda:
Rojo: Aristas y vértices pertenecientes a la solución momentánea.
Azul: Aristas y vértices candidatos.
Paso 1:
En este primer paso, podemos apreciar que hay tres candidatos: Los vértices b, c y d. En este
caso, hacemos el camino desde el vértice a, hasta el vértice d, ya que es el camino más corto
de los tres.
Solución momentánea: Camino: AD, Distancia:5
Paso 2:
Ahora, vemos que se añade un nuevo candidato, el vértice e, y el vértice c, pero esta vez a
través del d. Pero el camino mínimo surge al añadir el vértice c.
Solución momentánea:
Camino: ADC
Distancia:9
Paso 3:
En este paso se añade como candidato el vértice f. En este caso el camino mínimo hallado es
el siguiente:
Solución momentánea:
Camino: ADCB
Distancia:11
Paso 4
Como podemos comprobar, se han añadido un candidato nuevo, el vértice g, a través del
vértice b. El mínimo camino hallado en todo el grafo hasta ahora es el siguiente:
Solución momentánea:
Camino: ADCBF
Distancia:15
Paso 5
En este antepenúltimo paso, se añaden tres vértices candidatos, los vértices g, z y e. Este
último ya estaba pero en esta ocasión aparece a través del vértice f. En este caso el camino
mínimo, que cambia un poco con respecto al anterior, es:
Solución momentánea:
Camino: ADCBG
Distancia:17
Paso 6:
En el penúltimo paso, vuelve a aparecer otro candidato: el vértice e, pero esta vez a través del
vértice f. De todas formas, el camino mínimo vuelve a cambiar para retomar el camino que
venía siguiendo en los pasos anteriores:
Solución momentánea:
Camino: ADCBFE
Distancia:18
Paso 7:
Por fin, llegamos al último paso, en el que sólo se añade un candidato, el vértice z a través del
e. El camino mínimo y final obtenido es nada más y nada menos k:
Solución Final:
Camino: ADCBFEZ
Distancia:23
ALGORITMO DE FLOYD
El algoritmo de Floyd encuentra el camino mas corto entre todos los vértices de la digráfica.
Se la grafica dirigida G= (V, A) donde cada arco u v, tiene asociado un peso. El algoritmo
de Floyd permitirá encontrar el camino mas corto entre cada par ordenado u y v.
Encuentra todos los caminos más cortos en un grafo, iniciando en
cualquier nodo.
La matriz de distancias sirve como punto de partida para este algoritmo. Se realizan k
iteraciones sobre la matriz buscando el camino mas corto; por lo tanto, en la K-ésima
iteración, M[i, j] tendrá el camino de menor costo para llegar de i a j, pasando por un numero
de vértices menor a k, el cual se calculara según la siguiente expresión:
M k-1 [i, j]
Mk [i, j]mín= M k-1[i, k] + M k-1[k, j]
Se elegirá el camino mas corto entre el valor obtenido en la iteración (k – 1) y el que resulta de
pasar por el vértice k. En el algoritmo se usa la matriz de costos, M, donde M[i, j] será igual al
costo de ir de i a j, a un valor muy grande (infinito) sino existe camino de i a j, o a cero si i = j.
 Ejemplo:
• C: matriz de costos.
• A: matriz de costos de los caminos más cortos.
• n: número de nodos en el grafo.
• Eficiencia: O(n3)
A ← C
for k=1 to n
for i=1 to n
for j=1 to n
A[i,j] ← min(A[i,j],A[i,k]+A[k,j])
 Otro ejemplo de este algoritmo aplicando una tabla de matrices puede ser la siguiente:
4 6
2
3 3
6
11
5
K
JI
a
b
c
e
d
0 4 11 --- ---
--- 0 --- 6 2
--- 3 0 6 ---
--- --- --- 0 ---
--- --- 5 3 0
--- --- 5 3 0
a
b
c
d
e
a b c d e
0 4 11 10 6
--- 0 --- 6 2
--- 3 0 6 5
--- --- --- 0 -
--
--- --- 5 3 0
--- --- 5 3 0
a b c d e
a
b
c
d
e
a)
b)
Usando “a” como vértice de
pivote o vértice intermedio:
Estado inicial del algoritmo,
matríz de adyacencias.
Usando “b” como vértice de pivote o
vértice intermedio.
 En este paso ya “a” puede llegar a
“d ” por medio del pivote “b” (con
distancia igual a 10)
 También “a” alcanza llegar a “e”
por medio de “b” (con distancia
igual a 6).
 Por ultimo “c” alcanza llegar a “e”
por medio del pivote “b” (con
distancia igual a 5)
0 4 11 10 6
--- 0 --- 6 2
--- 3 0 6 5
--- --- --- 0 ---
--- 8 5 3 0
--- --- 5 3 0
a
b
c
d
e
a b c d e
Usando “c” como vértice de pivote o
vértice intermedio:
 En este paso ya se ha encontrado
un nuevo camino que pasa desde
“e”, luego “c”, hasta llegar a “b”,
cosa que anteriormente no se
había logrado.
0 4 11 10 6
--- 0 --- 6 2
--- 3 0 6 5
--- --- --- 0 ---
--- 8 5 3 0
--- --- 5 3 0
a b c d e
a
b
c
d
e
Usando “d” como vértice de pivote o
vértice intermedio:
 Usando “d” como pivote o
intermedio ningún camino puede
se encontrado o mejorado por lo
que la matriz de distancias se
mantiene igual como la anterior.
Usando “b” como vértice de pivote o
vértice intermedio:
 Se logra encontrar el camino de
“a” a “d”(con distancia igual a 10).
 También se encuentra el camino
de “a” a “e”, (con distancia igual a
6.
 Lo mismo sucede de “c” a “e”,
(con distancia igual a 5)
c)
d)
 como resultado tenemos:
El estado final de matriz almacena las distancias mínimas entre cada uno de los vértices de la
digráfica dada.
Si además de obtener la menor distancia entre todos los vértices de la grafica dirigida se
requiere conocer la trayectoria encontrada para cada vértice, se deberá ir guardando dicha
trayectoria ---vertices intermedios---. Esta variante del algoritmo de Floyd utiliza un arreglo
auxiliar (T) de N X N elementos, donde T[i, j] será igual a k si k es un nodo intermedio entre i y
j.
 Ejemplo #2:
A continuación se presenta un ejemplo de aplicación del algoritmo de
Floyd_guarda_vertices. Como resultado se obtiene una matriz con las distancias
0 4 11 9 6
--- 0 7 5 2
--- 3 0 6 5
--- --- --- 0 ---
--- 8 5 3 0
--- --- 5 3 0
a
b
c
d
e
a b c d e
Por ultimo usamos el vértice “e” como vértice de pivote o vértice intermedio:
 Usando “e” como pivote o intermedio, se encontraron nuevos o mejores caminos
para un par de vértices, mejorando la distancia en el re acorrido de “a” a “d”(con
distancia igual a 9), pasando a-b-e-d.
 Se encuentra un camino de “b” a “c” (anteriormente inexistente), (con distancia
igual a 5), recorriendo b-e-c.
 Por ultimo se mejora la distancia del recorrido de “b” a “d”, (con distancia de 5),
pasando los vértices b-e-d.
mínimas entre todos los vértices de una grafica dirigida y los vértices intermedios
utilizados para alcanzar esas distancias.
a) b) c)
d) e)
ALGORITMO DE WARSHALL
El algoritmo de Warshall encuentra, si es posible un camino entre cada uno de los vértices de
la grafica dirigida. Es decir, la solución encontrada por el algoritmo no presenta las distancias
entre los vértices, solo muestra si hay un camino o no entre ellos.
El algoritmo de Warshall se basa en un concepto llamado cerradura transitiva de la matriz de
adyacencia. Sea la grafica dirigida G(V, A) y su matriz de adyacencia M, donde M[i, j]=1 si hay
un arco de i a j, y 0 si no lo hay. La cerradura transitiva de M es la matriz C tal que C[i, j]=1 si
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
* * * b b
* * * * *
* * * * B
* * * * *
* * * * *
* * * b b
* * * * *
* * * * b
* * * * *
* c * * *
* * * e b
* * e e *
* * * * b
* * * * *
* c * * *
* * * b b
* * * * *
* * * * b
* * * * *
* c * * *
a
b
c
d
e
a b c d e a b c d e
a
b
c
d
e
a b c d e
a
b
c
d
e
a b c d e
a
b
c
d
e
a b c d e
a
b
c
d
e
hay camino de longitud mayor o igual que 1 de i a j, o 0 en otro caso. Para generar la Matriz C
se establece que existe un camino del vértice i a j que no pasa por un número de vértices
mayor que k si:
a) Ya existe un camino de i a j que no pasa por un número de vértices mayor que K – 1, y
hay un camino de k a j que no pasa por un número de vértices mayor que k – 1.
 Ejemplo: Este ejemplo del algoritmo de Warshall es usado con el mismo grafo
empleado para el algoritmo de Floyd.
0 1 1 0 0
0 0 0 1 1
0 1 0 1 0
0 0 0 0 0
0 0 1 1 0
--- --- 5 3 0
a b c d e
a
b
c
d
e
0 1 1 1 1
0 0 0 1 1
0 1 0 1 1
0 0 0 0 0
0 0 1 1 0
--- --- 5 3 0
a b c d e
a
b
c
d
e
0 1 1 1
1
0 0 0 1
1
0 1 0 1
1
0 0 0 0
0
0 1 1 1
1
--- --- 5 3
a b c d e
a
b
c
d
e
1 1 1 1 1
0 1 1 1 1
0 1 1 1 1
0 0 0 0 0
0 1 1 1 1
--- --- 5 3 0
a b c d e
a
b
c
d
e
a) b)
c)
e)

Más contenido relacionado

La actualidad más candente (20)

TEORÍA DE GRAFOS
TEORÍA DE GRAFOSTEORÍA DE GRAFOS
TEORÍA DE GRAFOS
 
Bucket sort
Bucket sortBucket sort
Bucket sort
 
Estructuras lineales
Estructuras linealesEstructuras lineales
Estructuras lineales
 
Grafos
GrafosGrafos
Grafos
 
Teoria de grafos
Teoria de grafosTeoria de grafos
Teoria de grafos
 
Detección y Corrección de errores
Detección y Corrección de erroresDetección y Corrección de errores
Detección y Corrección de errores
 
Arboles y grafos
Arboles y grafosArboles y grafos
Arboles y grafos
 
Listas de adyacencia
Listas de adyacenciaListas de adyacencia
Listas de adyacencia
 
Proyecto matemática discreta.
Proyecto matemática discreta.Proyecto matemática discreta.
Proyecto matemática discreta.
 
Unidad 6 grafos
Unidad 6  grafosUnidad 6  grafos
Unidad 6 grafos
 
Teoria de Grafos. Conceptos básicos.
Teoria de Grafos. Conceptos básicos.Teoria de Grafos. Conceptos básicos.
Teoria de Grafos. Conceptos básicos.
 
Alu 74LS181
Alu 74LS181Alu 74LS181
Alu 74LS181
 
Mapa conceptual
Mapa conceptualMapa conceptual
Mapa conceptual
 
Transformar modelo entidad relacion a modelo logico
Transformar modelo entidad relacion a modelo logicoTransformar modelo entidad relacion a modelo logico
Transformar modelo entidad relacion a modelo logico
 
Mapa Conceptual de Grafos
Mapa Conceptual de GrafosMapa Conceptual de Grafos
Mapa Conceptual de Grafos
 
Ejercicio no 9
Ejercicio no 9Ejercicio no 9
Ejercicio no 9
 
Arboles
ArbolesArboles
Arboles
 
Árboles
ÁrbolesÁrboles
Árboles
 
Tipos de gramatica y arboles de derivacion
Tipos de gramatica y arboles de derivacionTipos de gramatica y arboles de derivacion
Tipos de gramatica y arboles de derivacion
 
ecuaciones parametricas
ecuaciones parametricasecuaciones parametricas
ecuaciones parametricas
 

Destacado

Matematicas discretas para la computacion
Matematicas discretas para la computacionMatematicas discretas para la computacion
Matematicas discretas para la computacionWilliam DS
 
array
arrayarray
arraymario
 
Estructura de Datos - árboles y grafos
Estructura de Datos - árboles y grafosEstructura de Datos - árboles y grafos
Estructura de Datos - árboles y grafosMiguel Rodríguez
 
Algoritmos de ordenamiento
Algoritmos de ordenamientoAlgoritmos de ordenamiento
Algoritmos de ordenamientoOrlando Torres
 

Destacado (6)

Matematicas discretas para la computacion
Matematicas discretas para la computacionMatematicas discretas para la computacion
Matematicas discretas para la computacion
 
grafos estructura de datos
grafos estructura de datosgrafos estructura de datos
grafos estructura de datos
 
array
arrayarray
array
 
Estructura de Datos - árboles y grafos
Estructura de Datos - árboles y grafosEstructura de Datos - árboles y grafos
Estructura de Datos - árboles y grafos
 
Algoritmos de ordenamiento
Algoritmos de ordenamientoAlgoritmos de ordenamiento
Algoritmos de ordenamiento
 
Grafos
GrafosGrafos
Grafos
 

Similar a Grafos y sus representaciones

Trabajo estructura de_datos_subir
Trabajo estructura de_datos_subirTrabajo estructura de_datos_subir
Trabajo estructura de_datos_subirvicmz
 
Trabajo estructura de_datos
Trabajo estructura de_datosTrabajo estructura de_datos
Trabajo estructura de_datosvicmz
 
Trabajo estructura de_datos
Trabajo estructura de_datosTrabajo estructura de_datos
Trabajo estructura de_datosvictormagana
 
Trabajo estructura de_datos2
Trabajo estructura de_datos2Trabajo estructura de_datos2
Trabajo estructura de_datos2vicmz
 
TRABAJO DE GRAFOS
TRABAJO DE GRAFOSTRABAJO DE GRAFOS
TRABAJO DE GRAFOSOsirysRock
 
Programación 3: Grafos, representación y operaciones
Programación 3: Grafos, representación y operacionesProgramación 3: Grafos, representación y operaciones
Programación 3: Grafos, representación y operacionesAngel Vázquez Patiño
 
Grafos (angel)[1]
Grafos (angel)[1]Grafos (angel)[1]
Grafos (angel)[1]ozilricardo
 
Teoria sobre arboles y grafos, presentacion clave sobre las bases de la intel...
Teoria sobre arboles y grafos, presentacion clave sobre las bases de la intel...Teoria sobre arboles y grafos, presentacion clave sobre las bases de la intel...
Teoria sobre arboles y grafos, presentacion clave sobre las bases de la intel...BasterLyEsupian
 
MATEMATICA_DISCRETA_UNIDAD.pptx
MATEMATICA_DISCRETA_UNIDAD.pptxMATEMATICA_DISCRETA_UNIDAD.pptx
MATEMATICA_DISCRETA_UNIDAD.pptxalan477391
 

Similar a Grafos y sus representaciones (20)

Trabajo estructura de_datos_subir
Trabajo estructura de_datos_subirTrabajo estructura de_datos_subir
Trabajo estructura de_datos_subir
 
Trabajo estructura de_datos
Trabajo estructura de_datosTrabajo estructura de_datos
Trabajo estructura de_datos
 
Trabajo estructura de_datos
Trabajo estructura de_datosTrabajo estructura de_datos
Trabajo estructura de_datos
 
Trabajo estructura de_datos2
Trabajo estructura de_datos2Trabajo estructura de_datos2
Trabajo estructura de_datos2
 
Grafos
GrafosGrafos
Grafos
 
TRABAJO DE GRAFOS
TRABAJO DE GRAFOSTRABAJO DE GRAFOS
TRABAJO DE GRAFOS
 
Grafos
GrafosGrafos
Grafos
 
Programación 3: Grafos, representación y operaciones
Programación 3: Grafos, representación y operacionesProgramación 3: Grafos, representación y operaciones
Programación 3: Grafos, representación y operaciones
 
Grafos
GrafosGrafos
Grafos
 
Grafos (angel)[1]
Grafos (angel)[1]Grafos (angel)[1]
Grafos (angel)[1]
 
Grafos
GrafosGrafos
Grafos
 
Grafos
GrafosGrafos
Grafos
 
Grafo
GrafoGrafo
Grafo
 
Teoria sobre arboles y grafos, presentacion clave sobre las bases de la intel...
Teoria sobre arboles y grafos, presentacion clave sobre las bases de la intel...Teoria sobre arboles y grafos, presentacion clave sobre las bases de la intel...
Teoria sobre arboles y grafos, presentacion clave sobre las bases de la intel...
 
Aplicaciones de los árboles y grafos
Aplicaciones de los árboles y grafosAplicaciones de los árboles y grafos
Aplicaciones de los árboles y grafos
 
Geraldo escalona
Geraldo escalonaGeraldo escalona
Geraldo escalona
 
MATEMATICA_DISCRETA_UNIDAD.pptx
MATEMATICA_DISCRETA_UNIDAD.pptxMATEMATICA_DISCRETA_UNIDAD.pptx
MATEMATICA_DISCRETA_UNIDAD.pptx
 
Catedra grafos
Catedra grafosCatedra grafos
Catedra grafos
 
Catedra grafos
Catedra grafosCatedra grafos
Catedra grafos
 
Catedra grafos
Catedra grafosCatedra grafos
Catedra grafos
 

Más de Yo no soy perfecta pero soy mejor que tu (10)

Programa donde suma las filass de las dos columna y ordena el resultado de l...
Programa donde suma  las filass de las dos columna y ordena el resultado de l...Programa donde suma  las filass de las dos columna y ordena el resultado de l...
Programa donde suma las filass de las dos columna y ordena el resultado de l...
 
Mi primer programa en c++
Mi primer programa en c++Mi primer programa en c++
Mi primer programa en c++
 
C++ y sus librerias
C++ y sus libreriasC++ y sus librerias
C++ y sus librerias
 
Los bios original
Los bios originalLos bios original
Los bios original
 
sistema operativo
sistema operativo sistema operativo
sistema operativo
 
Evolución del windows
Evolución del windowsEvolución del windows
Evolución del windows
 
Tarjeta Madre
Tarjeta Madre Tarjeta Madre
Tarjeta Madre
 
tarjeta MT 805
tarjeta MT 805tarjeta MT 805
tarjeta MT 805
 
Elemento de pc.
Elemento de pc.Elemento de pc.
Elemento de pc.
 
Elemento de la computadora
Elemento de la computadoraElemento de la computadora
Elemento de la computadora
 

Último

SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxlclcarmen
 
Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteJuan Hernandez
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfMaryRotonda1
 
Herramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfHerramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfMARIAPAULAMAHECHAMOR
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para eventoDiegoMtsS
 
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docxCeciliaGuerreroGonza1
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFAROJosé Luis Palma
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxdanalikcruz2000
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPELaura Chacón
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...JAVIER SOLIS NOYOLA
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticosisabeltrejoros
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleJonathanCovena1
 

Último (20)

SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
 
Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parte
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdf
 
Unidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDIUnidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDI
 
Herramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfHerramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdf
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para evento
 
La Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdfLa Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdf
 
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
Unidad 4 | Teorías de las Comunicación | MCDI
Unidad 4 | Teorías de las Comunicación | MCDIUnidad 4 | Teorías de las Comunicación | MCDI
Unidad 4 | Teorías de las Comunicación | MCDI
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPE
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticos
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo Sostenible
 

Grafos y sus representaciones

  • 2. INTRODUCCIÓN En esta investigación les estaremos dedicándonos al estudio de las graficas o como se le conoce en el mundo de las ciencias matemáticas e informáticas grafos. Considerando que las graficas o grafos son estructuras de datos no lineales donde cada componente puede tener uno o más predecesores y sucesores. En una grafica se distinguen dos elementos: los nodos, mejor conocidos como vértices, y los arcos, llamados aristas, que conectan un vértice con otro. Los vértices almacenan información y las aristas representan relaciones entre dicha información. Estas estructuras tienen aplicaciones en diferentes dominios, entre ellos transporte terrestre, aéreo y marítimo, redes de computadoras, mapas, ubicación geográficas de varias ciudades, asignación de tareas, etc. Recordemos que existen diferencias sustanciales entre grafos y arboles y entre ellas tenemos que los arboles son una estructura jerárquica aplicada sobre una colección de nodos en donde uno de los nodos es la raíz, mientras que en grafos existen varios caminos entre un nodo u otro, tomando en cuenta también que el árbol establece un único camino desde el nodo raíz hasta un nodo cualquiera del árbol, diferenciándose del grafo que se encarga de estudiar las relaciones de unidades que interactúan unas con otras.
  • 3. DEFINICIÓN Una grafica G consta de dos conjuntos: V(G) y A(G). El primero lo integran elementos llamados nodos o vértices; el segundo, arcos o aristas. Por lo tanto, podemos denotar una grafica G como: G= (V,A) Donde V representa el conjunto de vértices de G y A el conjunto de aristas de G. Si no se hace ninguna especificación, los conjuntos V y A son finitos. Cada arista esta identificada por un único par de nodos del conjunto de vértices, que puede o no estar ordenado. Una arista que va del vértice u al v se denota mediante la expresión a= (u, v), donde u y v son vértices adyacentes y los extremos de a. En este caso, u y v están conectados por a y se dice que es incidente en u y v.
  • 4. CONCEPTOS BÁSICOS.  Grado de un vértice: El grado de un vértice v, escrito como grado (v), es el número de aristas que contienen a v; es decir, que tienen a v como extremo. Si el grado (v) = 0 (v no tiene aristas), se dice que v es un nodo aislado.  Lazo o Bucle: Un lazo o bucle es una arista que conecta a un vértice consigo mismo; es decir, a= (u, u).  Camino: Un camino P de longitud n se define como la secuencia de n vértices que se debe seguir para llegar del vértice v1 (vértice de origen), al vértice vn, (vértice de destino).  Camino Cerrado: El camino P es cerrado si el primero y ultimo vértices son iguales; es decir, si v1 = vn.  Camino Simple: El camino es simple si todos sus nodos so distintos, con excepción del primero y del ultimo, que pueden ser iguales; es decir, P es simple si v1, v2,…., son distintos.
  • 5.  Ciclo: Un ciclo es un camino simple cerrado de longitud 3 o mayor. Un ciclo de longitud k se llama k-ciclo.  Grafo Conexo: Se dice que un grafo es conexo si existe un camino simple entre cualesquiera dos de sus nodos.  Grafo árbol: Se dice que un grafo G es del tipo árbol o árbol libre si G es una grafica conexa sin ciclos.
  • 6.  Grafo completo: Se dice que un grafo es completo si cada vértice v de G es adyacente a todos los demás vértices de G. Una grafica completa de n vértices tendrá n (n – 1)/2 aristas.  Grafo etiquetado: Se dice que un grafo G esta etiquetada si sus aristas tienen asignado un valor. Es decir, si cada arista a tiene un valor numérico no negativo c(a), llamado costo, peso o longitud de a, entonces G tiene peso o esta etiquetado. En este caso, cada camino P de G tendrá asociado un peso o longitud que será la suma de los pesos de las aristas que forman el camino P.
  • 7.  Multígrafo: Un grafo se denomina multígrafo si al menos dos de sus vértices están conectados entre si por medio de dos aristas. En este caso, las aristas reciben el nombre de aristas múltiples o paralelas.
  • 8. GRAFOS DIRIGIDOS Se caracterizan porque sus aristas tienen asociadas una dirección; es decir, son pares ordenados. Los vértices se utilizan para representar información, mientras que las aristas representan una relación con dirección o jerarquía entre aquellos. Un grafo dirigido G, también es llamado dígrafo, se caracteriza porque cada arista a tiene una dirección asignada; es decir, cada arista esta asociada a un par ordenado (u, v) de vértice G. Una arista dirigida a= (u, v) se llama arco, y generalmente se expresa u v. Para las aristas de los dígrafos se aplica la siguiente terminología:  a empieza en v.  u es el origen o punto inicial de a, y v es el destino o punto terminal de a.  u es un predecesor de v y v es un sucesor o vecino de u.  u es adyacente hacia v y v es adyacente desde u. REPRESENTACIÓN DE GRAFOS DIRIGIDOS Los dígrafos son estructuras de datos abstractas; por lo tanto, los lenguajes de programación no cuentan con herramientas que permitan su manejo. Para su representación se requiere usar otras estructuras de datos. Existes varias opciones para realizar esto ultimo; la elección de la mas adecuada depende del uso que se le vaya dar a la información almacenada en los vértices y en las aristas. Las representaciones más utilizadas son las matrices y listas de adyacencia, que se describirán mas adelante. Es importante señalar que algunos lenguajes de programación, como LISP o SCHEME, no utilizan arreglos bidimensionales (matrices) como estructura de datos estándar; por lo tanto, se usan arboles o listas para la representación de dígrafos.
  • 9.  Ejemplo: N = {a,b,c}, A = {(a,b), (b,c), (c,a)} Las representaciones más comunes son:  Listas de adyacencia  Matriz de adyacencia GRAFOS NO DIRIGIDOS Su característica principal es que sus aristas son pares no ordenados de vértices. Es decir, si existe un camino del vértice i al j, será exactamente el mismo camino del vértice j al i. Estos grafos se utilizan para modelar relaciones simétricas entre diferentes objetos, que se representan por medio de los vértices, mientras que las aristas se usan para indicar las relaciones entre ellos. Por ejemplo, el costo de un boleto de avión para ir de la ciudad de Panama a Bocas del Toro será el mismo en cualquiera de las direcciones que se realice el viaje. Un grafo no dirigido G= (V, A) consta de un conjunto finito de vértices V y de otro finito de aristas A. Se diferencia de una grafica dirigida en que cada arista en A es un par no ordenado de vértices. Si (u, v) es una arista no dirigida, entonces (u, v) = (v, u).
  • 10. REPRESENTACIÓN DE GRAFOS NO DIRIGIDOS Los grafos no dirigidos so estructuras de datos abstractos; por lo tanto, se deben apoyar en otras estructuras para su representación en memoria. Las dos representaciones más utilizadas matriz de adyacencia y lista de adyacencia. Considerando la simetría de las relaciones entre los elementos de los grafos, se requiere cambiar cada arista no dirigida entre u y v por dos aristas dirigidas, una de u a v y otra de v a u; por lo tanto, la matriz de adyacencia resultara una matriz simétrica, y en la lista de adyacencia el vértice u estará en la lista de adyacencia del vértice v, y viceversa. Una posibilidad es definir dos hechos por cada arista: arista(a,b). a b arista(b,a). arista(b,c). arista(c,b). arista(c,a). arista(a,c). c
  • 11. MATRIZ DE ADYACENCIA Una matriz de adyacencia es una matriz booleana, de orden n, donde n, indica el numero de vértices de G. Los renglones y columnas de la matriz representan a los vértices y su contenido la existencia o no de arco entre ellos. Por lo tanto, cada elemento i, j de la matriz almacena un 1, o un 0, dependiendo de si existe o no un arco entre los vértices i y j. Para generar la matriz de adyacencia correspondiente a un dígrafo se le da un orden arbitrario a sus vértices, y se asigna a los renglones y a las columnas de una matriz el mismo orden. Un elemento de la matriz será 1 si los vértices correspondientes al renglón y a la columna están unidos por una arista (son adyacentes), y 0 en caso contrario. Una ventaja de las matrices de adyacencia es que el tiempo de acceso al elemento requerido es independiente del tamaño de V y A. El tiempo de búsqueda es del orden de 0(n). Sin embargo, su principal desventaja es que requiere un espacio de almacenamiento de n2 posiciones, aunque el número de arcos de G no sobrepase ese numero. La matriz de adyacencia es útil en los algoritmos diseñados para conocer si existe una arista entre dos nodos. Como variante de la matriz de adyacencia tenemos la matriz de adyacencia etiquetada, en donde M[i, j] representa la etiqueta o costo asociado al arco. Si la arista no existe, entonces el valor de M[i, j] será cero. Estas matrices también se denominan matrices de costos o distancias. Desventaja principal: el espacio que requieren para almacenar la información. Como alternativa para esa desventaja: es la utilización de lista de adyacencia.
  • 12. LISTA DE ADYACENCIA Una lista de adyacencia para el vértice a es una lista ordenada de todos los vértices adyacentes de a. Por lo tanto, una lista de adyacencia para representar un grafo dirigido esta formado por tantas listas como vértices que tenga G. Para guardar los vértices de G se puede utilizar otra lista o un arreglo. Este tipo de representación se recomienda cuando el número de arista es menor a n2. El uso de lista de adyacencia permite ahorrar espacio de almacenamiento. Sin embargo, usar una lista en lugar de una matriz tiene la desventaja de que el tiempo de búsqueda de las arista puede ser mayor, ya que se pierde el acceso directo que permite la matriz. La operación de búsqueda será del orden de 0(n).
  • 13. OBTENCIÓN DE CAMINOS Al buscar una estructura de datos que se ajuste a las características de un problema, se busca también que sobre dicha estructura se pueda realizar operaciones que faciliten el manejo de la información almacenada en ella. Para el caso de las graficas dirigidas, generalmente resulta de interés encontrar los caminos, directos o indirectos, entre sus vértices. A su vez al trabajar con dígrafos etiquetados se requiere encontrar el camino mas corto entre dos vértices dados o entre todos sus vértices. Es decir, interesan aquellos caminos que nos permitan desde un vértice origen a un vértice destino recorriendo la menor distancia o con el menor costo. Los algoritmos mas usados para este fin son: Dijkstra, Floyd y Warsall. Los tres algoritmos utilizan una matriz de adyacencia etiquetada, donde: M[i, j] = 0 si i = j. M[i, j] = infinito si no existe un camino de i a j, donde i es diferente a j. M[i, j] = costo de ir del vértice i al vértice j, si existe a(i, j) A partir de este punto, la matriz de adyacencia etiquetada la llamaremos matriz de distancias o matriz de costos.
  • 14. ALGORITMO DE DIJKSTRA Este algoritmo se caracteriza por encontrar el camino mas corto de un vértice elegido a cualquier otro vértice del dígrafo, donde la longitud de un camino es la suma de los pesos de las aristas que lo forman. Las aristas deben tener un peso no negativo. El algoritmo de Dijkstra, también llamado algoritmo de caminos mínimos, es un algoritmo para la determinación del camino más corto dado un vértice origen al resto de vértices en un grafo con pesos en cada arista Una posible aplicación de este algoritmo se presenta cuando se desea encontrar la ruta mas corta entre dos ciudades; cada vértice representa una ciudad y el peso de las aristas indica la duración del vuelo. Para el siguiente ejemplo se buscará la ruta mas corta o el camino de menor longitud que existe desde a hasta z considerando lo siguiente:  Vértice[s], es un arreglo formado por los vértices de los cuales ya conocemos la distancia mínima entre ellos y el origen. Este arreglo inicialmente solo almacena al nodo origen.  Paso 1, 2, 3….. es un arreglo formado por la distancia del vértice origen a cada uno de los otros. Es decir este arreglo almacena o guarda la menor distancia o costo, entre el origen y el vértice repetido o iterado.  Ejemplo:
  • 15. Vértice[s] Paso1 Paso2 Paso3 Paso Paso5 Paso6 Paso7 Paso A [0, a] * * * * * * * B [16,a] [16,a] [11,c] [11,c] * * * * C [10,a] [9,d] [9,d] * * * * * D [5,a] [5,a] * * * * * * E ---- [20,d] [19,c] [19,c] [18,f] [18,f] [18,f] * F ---- ---- [21,c] [15,b] [15,b] * * * G ---- ---- ---- [17,b] [17,b ] [17,b] * * Z ---- ---- ---- ---- [31,f] [31,f] [23,e] [23,e] Con este ejemplo encontramos que la ruta mas corta o camino de menor longitud que existe entre “a” que para este problema es nuestro punto de partida y “z”, nuestro destino final es: {a, d, c, b, f, e, z} Leyenda: Rojo: Aristas y vértices pertenecientes a la solución momentánea. Azul: Aristas y vértices candidatos. Paso 1: En este primer paso, podemos apreciar que hay tres candidatos: Los vértices b, c y d. En este caso, hacemos el camino desde el vértice a, hasta el vértice d, ya que es el camino más corto de los tres. Solución momentánea: Camino: AD, Distancia:5
  • 16. Paso 2: Ahora, vemos que se añade un nuevo candidato, el vértice e, y el vértice c, pero esta vez a través del d. Pero el camino mínimo surge al añadir el vértice c. Solución momentánea: Camino: ADC Distancia:9 Paso 3: En este paso se añade como candidato el vértice f. En este caso el camino mínimo hallado es el siguiente: Solución momentánea: Camino: ADCB Distancia:11
  • 17. Paso 4 Como podemos comprobar, se han añadido un candidato nuevo, el vértice g, a través del vértice b. El mínimo camino hallado en todo el grafo hasta ahora es el siguiente: Solución momentánea: Camino: ADCBF Distancia:15 Paso 5 En este antepenúltimo paso, se añaden tres vértices candidatos, los vértices g, z y e. Este último ya estaba pero en esta ocasión aparece a través del vértice f. En este caso el camino mínimo, que cambia un poco con respecto al anterior, es: Solución momentánea: Camino: ADCBG Distancia:17 Paso 6:
  • 18. En el penúltimo paso, vuelve a aparecer otro candidato: el vértice e, pero esta vez a través del vértice f. De todas formas, el camino mínimo vuelve a cambiar para retomar el camino que venía siguiendo en los pasos anteriores: Solución momentánea: Camino: ADCBFE Distancia:18 Paso 7: Por fin, llegamos al último paso, en el que sólo se añade un candidato, el vértice z a través del e. El camino mínimo y final obtenido es nada más y nada menos k: Solución Final: Camino: ADCBFEZ Distancia:23
  • 19. ALGORITMO DE FLOYD El algoritmo de Floyd encuentra el camino mas corto entre todos los vértices de la digráfica. Se la grafica dirigida G= (V, A) donde cada arco u v, tiene asociado un peso. El algoritmo de Floyd permitirá encontrar el camino mas corto entre cada par ordenado u y v. Encuentra todos los caminos más cortos en un grafo, iniciando en cualquier nodo. La matriz de distancias sirve como punto de partida para este algoritmo. Se realizan k iteraciones sobre la matriz buscando el camino mas corto; por lo tanto, en la K-ésima iteración, M[i, j] tendrá el camino de menor costo para llegar de i a j, pasando por un numero de vértices menor a k, el cual se calculara según la siguiente expresión: M k-1 [i, j] Mk [i, j]mín= M k-1[i, k] + M k-1[k, j] Se elegirá el camino mas corto entre el valor obtenido en la iteración (k – 1) y el que resulta de pasar por el vértice k. En el algoritmo se usa la matriz de costos, M, donde M[i, j] será igual al costo de ir de i a j, a un valor muy grande (infinito) sino existe camino de i a j, o a cero si i = j.  Ejemplo: • C: matriz de costos. • A: matriz de costos de los caminos más cortos. • n: número de nodos en el grafo. • Eficiencia: O(n3) A ← C for k=1 to n for i=1 to n for j=1 to n A[i,j] ← min(A[i,j],A[i,k]+A[k,j])
  • 20.  Otro ejemplo de este algoritmo aplicando una tabla de matrices puede ser la siguiente: 4 6 2 3 3 6 11 5 K JI a b c e d 0 4 11 --- --- --- 0 --- 6 2 --- 3 0 6 --- --- --- --- 0 --- --- --- 5 3 0 --- --- 5 3 0 a b c d e a b c d e 0 4 11 10 6 --- 0 --- 6 2 --- 3 0 6 5 --- --- --- 0 - -- --- --- 5 3 0 --- --- 5 3 0 a b c d e a b c d e a) b)
  • 21. Usando “a” como vértice de pivote o vértice intermedio: Estado inicial del algoritmo, matríz de adyacencias. Usando “b” como vértice de pivote o vértice intermedio.  En este paso ya “a” puede llegar a “d ” por medio del pivote “b” (con distancia igual a 10)  También “a” alcanza llegar a “e” por medio de “b” (con distancia igual a 6).  Por ultimo “c” alcanza llegar a “e” por medio del pivote “b” (con distancia igual a 5) 0 4 11 10 6 --- 0 --- 6 2 --- 3 0 6 5 --- --- --- 0 --- --- 8 5 3 0 --- --- 5 3 0 a b c d e a b c d e Usando “c” como vértice de pivote o vértice intermedio:  En este paso ya se ha encontrado un nuevo camino que pasa desde “e”, luego “c”, hasta llegar a “b”, cosa que anteriormente no se había logrado. 0 4 11 10 6 --- 0 --- 6 2 --- 3 0 6 5 --- --- --- 0 --- --- 8 5 3 0 --- --- 5 3 0 a b c d e a b c d e Usando “d” como vértice de pivote o vértice intermedio:  Usando “d” como pivote o intermedio ningún camino puede se encontrado o mejorado por lo que la matriz de distancias se mantiene igual como la anterior. Usando “b” como vértice de pivote o vértice intermedio:  Se logra encontrar el camino de “a” a “d”(con distancia igual a 10).  También se encuentra el camino de “a” a “e”, (con distancia igual a 6.  Lo mismo sucede de “c” a “e”, (con distancia igual a 5) c) d)
  • 22.  como resultado tenemos: El estado final de matriz almacena las distancias mínimas entre cada uno de los vértices de la digráfica dada. Si además de obtener la menor distancia entre todos los vértices de la grafica dirigida se requiere conocer la trayectoria encontrada para cada vértice, se deberá ir guardando dicha trayectoria ---vertices intermedios---. Esta variante del algoritmo de Floyd utiliza un arreglo auxiliar (T) de N X N elementos, donde T[i, j] será igual a k si k es un nodo intermedio entre i y j.  Ejemplo #2: A continuación se presenta un ejemplo de aplicación del algoritmo de Floyd_guarda_vertices. Como resultado se obtiene una matriz con las distancias 0 4 11 9 6 --- 0 7 5 2 --- 3 0 6 5 --- --- --- 0 --- --- 8 5 3 0 --- --- 5 3 0 a b c d e a b c d e Por ultimo usamos el vértice “e” como vértice de pivote o vértice intermedio:  Usando “e” como pivote o intermedio, se encontraron nuevos o mejores caminos para un par de vértices, mejorando la distancia en el re acorrido de “a” a “d”(con distancia igual a 9), pasando a-b-e-d.  Se encuentra un camino de “b” a “c” (anteriormente inexistente), (con distancia igual a 5), recorriendo b-e-c.  Por ultimo se mejora la distancia del recorrido de “b” a “d”, (con distancia de 5), pasando los vértices b-e-d.
  • 23. mínimas entre todos los vértices de una grafica dirigida y los vértices intermedios utilizados para alcanzar esas distancias. a) b) c) d) e) ALGORITMO DE WARSHALL El algoritmo de Warshall encuentra, si es posible un camino entre cada uno de los vértices de la grafica dirigida. Es decir, la solución encontrada por el algoritmo no presenta las distancias entre los vértices, solo muestra si hay un camino o no entre ellos. El algoritmo de Warshall se basa en un concepto llamado cerradura transitiva de la matriz de adyacencia. Sea la grafica dirigida G(V, A) y su matriz de adyacencia M, donde M[i, j]=1 si hay un arco de i a j, y 0 si no lo hay. La cerradura transitiva de M es la matriz C tal que C[i, j]=1 si * * * * * * * * * * * * * * * * * * * * * * * * * * * * b b * * * * * * * * * B * * * * * * * * * * * * * b b * * * * * * * * * b * * * * * * c * * * * * * e b * * e e * * * * * b * * * * * * c * * * * * * b b * * * * * * * * * b * * * * * * c * * * a b c d e a b c d e a b c d e a b c d e a b c d e a b c d e a b c d e a b c d e a b c d e a b c d e
  • 24. hay camino de longitud mayor o igual que 1 de i a j, o 0 en otro caso. Para generar la Matriz C se establece que existe un camino del vértice i a j que no pasa por un número de vértices mayor que k si: a) Ya existe un camino de i a j que no pasa por un número de vértices mayor que K – 1, y hay un camino de k a j que no pasa por un número de vértices mayor que k – 1.  Ejemplo: Este ejemplo del algoritmo de Warshall es usado con el mismo grafo empleado para el algoritmo de Floyd. 0 1 1 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 --- --- 5 3 0 a b c d e a b c d e 0 1 1 1 1 0 0 0 1 1 0 1 0 1 1 0 0 0 0 0 0 0 1 1 0 --- --- 5 3 0 a b c d e a b c d e 0 1 1 1 1 0 0 0 1 1 0 1 0 1 1 0 0 0 0 0 0 1 1 1 1 --- --- 5 3 a b c d e a b c d e 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 0 0 0 0 0 1 1 1 1 --- --- 5 3 0 a b c d e a b c d e a) b) c) e)