0% encontró este documento útil (0 votos)
20 vistas18 páginas

Tipo de Dato Abstracto (Grafos) - Victor Marcella

El documento aborda la teoría de grafos, definiendo conceptos fundamentales como vértices, aristas y tipos de grafos. Se exploran diferentes representaciones gráficas y matriciales de grafos, así como estructuras de datos para su almacenamiento. Además, se discuten algoritmos de recorrido y propiedades de grafos conexos y árboles abarcadores.

Cargado por

Rafael Rodrigyez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
20 vistas18 páginas

Tipo de Dato Abstracto (Grafos) - Victor Marcella

El documento aborda la teoría de grafos, definiendo conceptos fundamentales como vértices, aristas y tipos de grafos. Se exploran diferentes representaciones gráficas y matriciales de grafos, así como estructuras de datos para su almacenamiento. Además, se discuten algoritmos de recorrido y propiedades de grafos conexos y árboles abarcadores.

Cargado por

Rafael Rodrigyez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 18

UNIVERSIDAD DE ORIENTE

NUCLEO DE SUCRE CARÚPANO


ESCUELA DE CIENCIAS
DEPARTAMENTO DE INFORMÁTICA
CATEDRA: ALGORITMO Y ESTRUCTURA DE DATOS III.

TIPO ABSTRACTO
DE DATO
(GRAFO)

FACILITADOR: BACHILLER:
ELÍAS PORTILLO VÍCTOR MARCELLA
C.I: 28758760
CARÚPANO, MARZO 2022.
INTRODUCCION.

Los grafos son un conjunto de vértices o nodo conectados por arcos. Existen
diferentes tipos de grafos que difieren respecto al número y tipo de arcos que
pueden enlazar un par de vértices. En las diferentes áreas de estudio existen
algunas dificultades que pueden ser solucionadas utilizando los modelos de grafos
Los grafos aparecen con gran frecuencia como repuesta a problemas de la vida
cotidiana, algunos ejemplos podrían ser: un grafico de una serie de tareas a
realizar indicando sus secuenciación (un organigrama), grafos matemáticos que
representan las relaciones binarias, una red de carreteras, la red eléctrica de una
ciudad, entre otros. En cada caso, es conveniente representar gráficamente el
problema dibujando un grafo como un conjunto de puntos (vértices) con líneas
conectándolos (arcos).
El presente trabajo tiene como propósito conocer y desarrollar conocimientos
básicos relacionados con el enfoque algorítmico de grafos.
1. Definiciones y conceptos básicos de la teoría de grafos.

Para las matemáticas y las ciencias de la computación, un grafo es el principal


objeto de estudio de la teoría de grafos. De esta forma, un grafo se representa
gráficamente como un conjunto de puntos (llamados vértices o nodos), unidos por
líneas (aristas).
Son diagramas que si se interpretan en forma adecuada proporcionan
información, como por ejemplo los mapas, diagramas de circuitos o de flujos,
entre otros.
Un grafo está compuesto por dos conjuntos finitos.
 Un conjunto de |A| aristas.
 Un conjunto de |V| vértices.
J es la relación de incidencia, que asocia a cada elemento de |A| un par de
elementos de |V|
Se denota G= { A, V, j}
 Vértices: Son los objetos representados por puntos dentro del grafo.

 Aristas: son las líneas que unen dos vértices.

 Aristas Adyacentes: dos aristas son adyacentes si convergen sobre el


mismo vértice.

 Aristas Múltiples o Paralelas: dos aristas son múltiples o paralelas si


tienen los mismos vértices en común o incidente sobre los mismos
vértices.

 Lazo: es una arista cuyos extremos inciden sobre el mismo vértice.


 Vértice Aislado: Es un vértice de grado cero.

 Vértice Pendiente: Es aquel grafo que contiene sólo una arista, es decir
tiene grado 1.
 Grafo Sencillo o Simple: Se dice que un Grafo G es simple si no tiene
aristas cíclicas y existe una sola arista entre dos vértices. También puede
ser aquel que no contiene lazos, ni aristas paralelas o dirigidas.

 Grafo Completo: Un grafo es completo si cada vértice tiene un grado


igual a n-1, donde n es el número de vértice que componen el grafo. Para
saber el número máximo de aristas que posee un grafo completo se aplica
la formula.
A=(n*(n-1))/2
A. Representación gráfica y matemática.

Un grafo se representa mediante un diagrama en el cual a cada vértice le


corresponde un punto y si dos vértices son adyacentes se unen sus puntos
correspondientes mediante una línea, ejemplo:
B. Representación en el computador.

Hay que considerar que el grafo lo constituyen un cierto número de vértices y


un cierto número de arco; por tanto podrá ser representado utilizando una matriz,
denominada matriz de adyacencia, donde las filas y columnas son los vértices
del grafo y los elementos que indican si entre un determinado par de vértices
existe arco que los una. En los grafos no dirigido la matriz de adyacencia es
simétrica. Los grafos con factor de peso, grafo valorados, pueden representarse de
tal forma que si existe arco; el elemento A[i, j] es el factor de peso, la no
existencia de arco supone que A [i, j] es 0 ó infinito dependiendo de su uso. A esta
matriz se la denomina matriz valorada.
Cuándo el grafo tiene poco arcos, y por tanto la matriz de adyacencia tiene
muchos ceros (matriz sparce) resulta poco eficiente la matriz de adyacencia ya
que el espacio que ocupa es el mismo que si el grafo tuviera muchos arcos. En
estos casos se representa el grafo mediante listas enlazadas que se denominan lista
de adyacencia. Una lista de adyacencia es una estructura multienlazada formada
por una lista directorio, cuyos nodos representan los vértices del grafo, y, además,
de cada uno de estos nodos, puede emerger otra lista enlazada cuyos nodos, a su
vez, representan los arcos cuyo vértice origen es el del nodo de la lista directorio.
Cuando se trata de un grafo valorado también almacena el peso.
C. Estructuras de datos para almacenar grafos.

Existen diferentes formas de almacenar grafos en una computadora. La


estructura de datos usada depende de las características del grafo y el algoritmo
usado para manipularlo. Entre las estructuras más sencillas y usadas se encuentran
las listas y las matrices, aunque frecuentemente se usa una combinación de ambas.
Las listas son preferidas en grafos dispersos porque tienen un eficiente uso de la
memoria. Por otro lado, las matrices proveen acceso rápido, pero pueden consumir
grandes cantidades de memoria.
 Estructura de Lista.
Lista de incidencia: Las aristas son representadas con un vector de pares
(ordenados, si el grafo es dirigido), donde cada par representa una de las aristas.
Lista de adyacencia: Cada vértice tiene una lista de vértices los cuales son
adyacentes a él. Esto causa redundancia en un grafo no dirigido (ya que A existe
en la lista de adyacencia de B y viceversa), pero las búsquedas son más rápidas, al
costo de almacenamiento extra.
Lista de grados: También llamada secuencia de grados o sucesión gráfica de un
grafo no-dirigido es una secuencia de números, que corresponde a los grados de
los vértices del grafo.
 Estructuras Matriciales.

Matriz de incidencia: El grafo está representado por una matriz de A (aristas) por
V (vértices), donde [arista, vértice] contiene la información de la arista (1 –
conectado, 0 – no conectado).
Matriz de adyacencia: El grafo está representado por una matriz cuadrada M de
tamaño , donde es el número de vértices. Si hay una arista entre un vértice x y un
vértice y, entonces el elemento es 1, de lo contrario, es 0.
2. Grafos 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.
A. Cadenas y ciclos.

Se denomina camino (algunos autores lo llaman cadena si se trata de un grafo


no dirigido) en un grafo dirigido a una sucesión de arcos adyacentes:
C={(v1,v2),(v2,v3),...,(vn-1,vn), para todo vi perteneciente a V}

La longitud del camino es el número de arcos que comprende y en el caso en


el que el grafo sea ponderado se calculará como la suma de los pesos de las aristas
que lo constituyen.
Un camino se dice simple cuando todos sus arcos son distintos y se
dice elemental cuando no utiliza un mismo vértice dos veces. Por tanto todo
camino elemental es simple y el recíproco no es cierto.
Un camino se dice Euleriano si es simple y además contiene a todos los arcos
del grafo.
Un circuito(o ciclo para grafos no dirigidos)es un camino en el que coinciden
los vértices inicial y final. Un circuito se dice simple cuando todos los arcos que
lo forman son distintos y se dice elemental cuando todos los vértices por los que
pasa son distintos. La longitud de un circuito es el número de arcos que lo
componen. Un bucle es un circuito de longitud 1(están permitidos los arcos de la
forma(i, i) y notemos que un grafo antisimétrico carecería de ellos).
B. Recorrido de grafos.

En muchas aplicaciones es necesario visitar todos los vértices del grafo a partir
de un nodo dado. Algunas aplicaciones son:
 Encontrar ciclos
 Encontrar componentes conexas
 Encontrar árboles cobertores
Hay dos enfoque básicos:
 Recorrido (o búsqueda) en profundidad (depth-first search).
 Recorrido (o búsqueda) en amplitud (breadth-first search):
Se visita a todos los vecinos directos del nodo inicial, luego a los vecinos
de los vecinos, etc.

C. Búsqueda en profundidad.

Recorrido (o búsqueda) en profundidad consiste en alejarse lo más posible del


nodo inicial (sin repetir nodos), luego devolverse un paso e intentar lo mismo por
otro camino.
A medida que recorremos el grafo, iremos numerando correlativamente los
nodos encontrados (1,2,…). Suponemos que todos estos números son cero
inicialmente, y utilizamos un contador global n, también inicializado en cero.
D. Búsqueda en amplitud.

Recorrido (o búsqueda) en amplitud Se visita a todos los vecinos directos del


nodo inicial, luego a los vecinos de los vecinos, etc.
La implementación es similar a la de DFS ( búsqueda en profundidad), pero se
utiliza una cola en lugar de una pila. El resultado es que los nodos se visitan en
orden creciente en relación a su distancia al nodo origen.
E. Grafo conexo y componentes conexas.

En teoría de grafos, un grafo se dice conexo si, para cualquier par


de vértices u y v en G, existe al menos una trayectoria (una sucesión de vértices
adyacentes que no repita vértices) de u a v. Un grafo es conexo si cada par de
vértices está conectado por un camino; es decir, si para cualquier par de vértices
(a, b), existe al menos un camino posible desde a hacia b. Un grafo es doblemente
conexo si cada par de vértices está conectado por al menos dos caminos disjuntos;
es decir, es conexo y no existe un vértice tal que al sacarlo el grafo resultante sea
disconexo.
Es posible determinar si un grafo es conexo usando un algoritmo Búsqueda en
anchura (BFS) o Búsqueda en profundidad (DFS). En términos matemáticos la
propiedad de un grafo de ser conexo permite establecer con base en él una
relación de equivalencia para sus vértices, la cual lleva a una partición de éstos en
"componentes conexas", es decir, porciones del grafo, que son conexas cuando se
consideran como grafos aislados. Esta propiedad es importante para muchas
demostraciones en teoría de grafos.
F. Árbol abarcador y bosque abarcador.

Sea G un grafo simple. Un árbol abarcador de G es un subgrafo de G que es un


árbol y contiene todos los vértices de G. Teorema 1: si a y b son vértices de un
árbol R=(V,A) entonces hay un camino único que conecta estos vértices.
Demostración : primero se observa que en un árbol, todos los caminos son simples
(no hay ciclo). Como R es conexo, hay al menos un camino que conecta a con b.
Si hubiera mas de un camino que conecta dos vértices se podría formar un ciclo.
Teorema 2: si G=(V,A) es un grafo no dirigido, entonces G es conexo si y solo si
tiene un árbol abarcador. Demostración: si G tiene un árbol abarcador R, entonces
para todo para a, b de vértices V, un subconjunto de las aristas de R proporciona
un camino único entre a y b de modo que G es conexo. Recíprocamente si G es
conexo y no es un árbol, elimínese todos los lazos de G. si el subgrafo resultante
G1 no es un árbol entonces G1 debe tener un ciclo mas largo. Para dichos ciclos
elimínense de G1 una arista diferente. El subgrafo G2 contiene los vértices de G,
es n conexo y no contiene ciclos. De ahí que G2 sea un árbol abarcador para G.
Teorema 3: si R=(V,A) es un árbol, entonces V = A +1. Demostración: por
inducción en A. Si A =0 entonces el árbol que contenga a lo sumo k aristas, k 0.
Considérese ahora un árbol donde A =k+1. Eliminemos una arista, obtenemos
dios subárboles R1=(V1,A1) y R2=(V2,A2) donde V = V1 + V2 y A1 + A2 +1=
A. Como 0=< A1, A2 k, por la hipótesis de inducción Ai +1= Vi, i=1,2. En
consecuencia : V = V1 + V2 =( A1 +1( A2 +1)= ( A1 + A2 +1)= A1 +1
Definición: llamaremos vértices colgantes a los vértices de grado 1. Teorema 4:
Para cualquier árbol, R=(V,A), si V 2, entonces R tiene al menos dos vértices
colgantes. DEMOSTRACION: Sea V = n 2. Por el teorema 4, A = n - 1, por un
teorema anterior: 2(n-1) = 2n-2 = 2 A = Ʃvε V grad(v). Si grad(v) 2 para v ε V,
entonces Ʃvε V grad(v) 2 V = 2n. De donde 2n - 2 2n lo cual es absurdo, luego
hay al menos dos v vértices v para los que grad(v) < 2. Como no hay vértices
aislados, estos deben ser colgantes.
Un bosque es un conjunto de árboles o de otra manera podemos decir que un
bosque es un grafo acíclico, de dice que el grafo es acíclico si no se tiene ningún
ciclo simple. Ejemplo de bosque. Un componente conexo es cada árbol que
conforma al bosque. Sea G un grafo un árbol abarcador de G es un grafo conexo
que tienen los mismos vértices que G y no tiene ciclos.
G. Árbol abarcador de costo mínimo.

Un árbol abarcador de costo mínimo de un grafo ponderado es un árbol


generador tal que la suma de los pesos de sus aristas es l mínima de entre de todos
los árboles generadores.
 Algoritmo de Prim.

El algoritmo de Prim es un algoritmo de la teoría de los grafos para encontrar


un árbol de expansión mínimo en un grafo conexo, no dirigido y cuyas aristas
están etiquetadas. En otras palabras, el algoritmo encuentra un subconjunto de
aristas que forman un árbol con todos los vértices, donde el peso total de todas las
aristas en el árbol es el mínimo posible. Si el grafo no es conexo, entonces el
algoritmo encontrará el árbol de expansión mínimo para uno de los componentes
conexos que forman dicho grafo no conexo. El algoritmo de Prim construye un
árbol de recubrimiento mínimo sobre un grafo ponderado no dirigido. Se
considera el coste del árbol la suma de los pesos de las aristas que lo componen.
La construcción del árbol sigue los siguientes pasos.
 Algoritmo de Kruskal.

El objetivo del algoritmo de Kruskal es construir un árbol (subgrafo sin ciclos)


formado por arcos sucesivamente seleccionados de mínimo peso a partir de un
grafo con pesos en los arcos.
 Isomorfismo e invariantes.

Un isomorfismo entre dos grafos G y H es una bisección f entre los conjuntos


de sus vértices que preserva la relación de adyacencia. 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. Dos grafos son isomorfos si existe un isomorfismo entre ellos. A pesar de su
diferente aspecto, los dos grafos que se muestran a continuación son isomorfos:
Un Grafo G Grafo H isomorfismo entre G y H.
Se dice que dos grafos son isomorfos si y solo si se preserva la relación de
adyacencia entre ambos. Por ejemplo, tenemos el siguiente grafo: A C E B D
Entonces suponemos que el conjunto K={A,B,C,D,E} (donde cada una de las
letras representa los vértices del grafo) posee una función f(v), la cual tiene como
imagen al conjunto K'={A',B',C',D',E'}. Para que el grafo que tiene como vértices
el conjunto K' sea isomorfo, este debe tener las mismas relaciones de adyacencia
que K. En otras palabras, por ejemplo, en K tenemos una arista D-E, entonces en
K' tendríamos una arista D'-E'. Así para todos los vértices de K'. Entonces, un
grafo isomorfo al anterior (El formado por los vértices incluidos en el conjunto K)
sería: D B E C A.
Un invariante de un grafo G es un número asociado con G que tiene el mismo
valor para cualquier grafo que sea isomorfo con él.
H. Puntos de Articulación y Componentes Biconexos.

Un vértice U es un grafo no dirigido sin lazos G= (V,E) es un punto de


articulación si K(G-U)>K(G);es decir , el subgrafo G-V tiene mas componentes
que el grafo dado G.
Un grafo no dirigido conexo sin lazos y sin puntos de articulación es biconexo.
Una componente biconexa de un grafo es un subgrafo biconexo maximal ( es
decir, que no esta contenido propiamente en un subgrafo biconexo mas grande).
En términos de centros y líneas de comunicación, los puntos de articulación del
grafo indican los puntos donde el sistema es más vulnerable. Sin puntos de
articulación, es más probable que este sistema supere las interrupciones en un
centro de comunicación, independientemente de que estas sean causadas por un
fallo en un dispositivo técnico o por fuerzas externas.
El problema de encontrar los puntos de articulación en un grafo conexo ofrece
una aplicación para el árbol recubridor en profundidad. El objetivo en este caso es
desarrollar un algoritmo para determinar los puntos de articulación de un grafo no
dirigido conexo sin lazos. Si no existieran estos vértices, las componentes
biconexas resultantes podrían usarse para proporcionar información acerca de las
propiedades como la planaridad y el número cromático del grafo dado.
3. Grafos dirigidos.
Un grafo dirigido es aquel en el que todas sus aristas tienen sentido o dirección.
La relación sobre V no es simétrica. Las aristas se representan como un par
ordenado (u,v).
A. Caminos y circuitos.

Un camino es una sucesión de vértices tal que de cada uno de sus vértices
existe una arista hacia el vértice sucesor. Un camino simple es aquel que no repite
vértices en su recorrido.
Dos caminos son ajenos o independientes si no tienen ningún vértice en
común excepto el primero y el último.
La longitud de un camino es el número de aristas que usa dicho camino,
contando aristas recorridas varias veces el mismo número de veces que las
recorramos. En el ejemplo, (1, 2, 5, 1, 2, 3) es un camino con longitud 5, y (5, 2,
1) es un camino simple de longitud 2..
B. Recorridos de grafos.

Igual que los recorridos en árboles, se parte de un nodo dado y sirven para
visitar los vértices y los arcos de manera sistemática, existen dos tipos de
recorrido:
 Búsqueda en amplitud o anchura.

Es equivalente a recorrer un árbol por niveles. Dado un nodo v, se visitan


primero todos los nodos adyacentes a v, luego todos los que están a distancia 2 (y
no visitados), a distancia 3, y así sucesivamente hasta recorrer todos los nodos.
 Búsqueda en profundidad.

Es equivalente a un recorrido en preorden de un árbol. Se elige un nodo v de


partida. Se marca como visitado y se recorren los nodos no visitados adyacentes a
v, usando recursivamente la búsqueda primero en profundidad.
C. Ordenamiento topológico.

Un orden topológico de un digrafo G es un orden lineal de todos los vértices


tales que si G contiene un arco (U,V),entonces U aparece antes de V en el
ordenamiento.
El objetivo del ordenamiento topológico es el de ser capaz de procesar los
nodos de un dígrafo acíclico de tal forma de que cada nodo sea procesado antes
que todos los nodos a los que apunta.
Hay dos maneras naturales de definir esta operación básica, aunque son
esencialmente la misma, a saber:
 Reetiquetado: Dado un DAG, reetiquetar sus nodos de tal forma que cada
arista dirigida vaya de un nodo con un identificador bajo en numero a un
nodo con un identificador cuyo identificador sea mayor.
 Reposicionado: Dado un DAG, reposicionar sus nodos en una línea
horizontal de tal forma de que todas sus aristas dirigidas apunte de
izquierda a derecha.
Por lo general, se usa el término de ordenamiento topológico para referirse a la
versión de reposicionado.
D. Arborescencia y bosque abarcador.

Una arborescencia es un grafo dirigido en el que, para un vértice u llamado raíz


y cualquier otro vértice v , hay exactamente una trayectoria dirigida de u a v . Una
arborescencia es, por tanto, la forma de gráfico dirigido de un árbol enraizado ,
entendido aquí como un gráfico no dirigido.
De manera equivalente, una arborescencia es un árbol dirigido y enraizado en
el que todos los bordes apuntan en dirección opuesta a la raíz; existen otras
caracterizaciones equivalentes. Toda arborescencia es un grafo acíclico
dirigido (DAG), pero no todo DAG es una arborescencia.
E. Clasificación de arcos.

Los arcos varían dependiendo del tipo de grafo con el que se este trabajando
tenemos:
 Grafo dirigido: Llamado también dígrafo tienen un conjunto de vértices
V (nodos) y un conjunto de aristas E (arcos o lados), tal que cada arista se
asocia a un par ordenado de vértices.
 Grafo no dirigido: Tienen un conjunto de aristas E (arcos o lados), tal que
cada arista se asocia a un par no ordenado de vértices.
 Grafo pesado, ponderado ó etiquetado: Un grafo es pesado cuando sus
aristas contienen datos (etiquetas). Una etiqueta puede ser un nombre,
costo ó un valor de cualquier tipo de dato. También a este grafo se le
denomina red de actividades, y el número asociado al arco se le
denomina factor de peso.
 Grafo simple: Es un grafo que no tiene lazos ni aristas paralelas.
 Grafos Isomorfos: Dos grafos son isomorfos cuando existe una
correspondencia biunívoca (uno a uno), entre sus vértices de tal forma que
dos de estos quedan unidos por una arista en común.
 Grafo nulo: Se dice que un grafo es nulo cuando los vértices que lo
componen no están conectados, esto es, que son vértices aislados.
 Grafo regular: Aquel con el mismo grado en todos los vértices. Si ese
grado es k lo llamaremos k-regular.
 Grafo bipartito: Es aquel con cuyos vértices pueden formarse dos
conjuntos disjuntos de modo que no haya adyacencias entre vértices
pertenecientes al mismo conjunto.
 Grafo completo: Aquel con una arista entre cada par de vértices. Es decir
desde cualquier vértice podemos encontrar un camino hacia otro vértice
con solo recorrer una arista.
 Grafos Platónicos: Son los Grafos formados por los vértices y aristas de
sólidos regulares (Sólidos Platónicos), como el tetraedro, el cubo, el
octaedro, el dodecaedro, el icosaedro, etc..
 Grafos conexos: Un grafo se puede definir como conexo si cualquier
vértice V pertenece al conjunto de vértices y es alcanzable por algún otro.
Otra definición que dejaría esto más claro sería: “un grafo conexo es un
grafo no dirigido de modo que para cualquier par de nodos existe al menos
un camino que los une” (un grafo completo es conexo).
 Grafo conectado: Aquel que no tenga una discontinuidad.
 Grafo no conectado: Aquel que contiene una discontinuidad.
 Grafo cíclico: Se dice que un grafo es cíclico cuando contiene por lo
menos un ciclo.
 Grafo acíclico: Se dice que un grafo es acíclico cuando no contiene ciclos.

F. Grafo fuertemente conexo y componentes fuertemente conexas.

Un grafo dirigido es fuertemente conexo si hay un camino desde cada vértice


en el grafo a cualquier otro vértice.
Una componente fuertemente conexa de un grafo dirigido es un conjunto
maximal de vértices en el cual existe un camino desde cualquier vértice en el
conjunto a cualquier otro vértice en el conjunto.
La técnica conocida como "Búsqueda en profundidad" (DFS) puede ser usada
para determinar las componentes fuertemente conexas (SCC) de un grafo dirigido
eficientemente.
 Algoritmo de Tarjan para determinar las componentes fuertemente
conexas.

El algoritmo de Tarjan se basa en un gráfico de pares Búsqueda de profundidad


primero Algoritmo, cada componente fuertemente conectado es un subárbol en el
árbol de búsqueda. Durante la búsqueda, los nodos no procesados en el árbol de
búsqueda actual se agregan a una pila. Al retroceder, se puede determinar si el
nodo en la parte superior de la pila es un componente fuertemente conectado.
G. Caminos de longitud mínima. Algoritmo de Dijkstra.

Dado un grafo (o digrafo) ponderado y dos vértices s y t se quiere hallar d(s,t)


y el camino con dicha longitud. Los primeros algoritmos que presentamos
obtienen todos los caminos de longitud mínima desde un vértice dado s al resto de
vértices del grafo. El último algoritmo resuelve el problema para un par cualquiera
de vértices de G.
Si el vértice u se encuentra en un camino C de longitud mínima entre los
vértices s y z entonces, la parte de C comprendida entre los vértices s y u es un
camino de longitud mínima entre s y u. Por tanto, el conjunto de caminos mínimos
desde s a los restantes vértices del grafo G es un árbol, llamado el árbol de
caminos mínimos desde s.
 Algoritmo de Dijkstra.

La idea básica del algoritmo es la siguiente: Si P es un camino de longitud


mínima s--z y P contiene al vértice v, entonces la parte s--v de P es también
camino de longitud mínima de s a v. Esto sugiere que si deseamos determinar el
camino óptimo de s a cada vértice z de G, podremos hacerlo en orden creciente de
la distancia d(s,z)
Descripción del algoritmo.

Entrada: Un grafo (o digrafo) ponderado, un vértice sÎV. El peso de la arista uv


se indica por w(uv), poniendo w(uv)=¥ si uv no es arista. (Las aristas tienen pesos
no negativos).
Clave: Mantener el conjunto T de vértices para el que se conoce el camino más
corto y ampliar T hasta que T=V. Para ello etiquetamos cada vértice z con t(z) que
es la longitud del camino más corto ya encontrado. Mantenemos un conjunto A de
vértices que se encuentran en el árbol de búsqueda pero no en el árbol de camino
mínimo y que son alcanzables desde los vértices de T.
Inicialización: Sea A={s}, T{}, t(s)=d(s,s)=0, t(z)=¥ para z¹s.
Iteración: Elegir el vértice v ÎA con etiqueta mínima. Añadir v a T. Designar v
como "Vértice Actual" y eliminarlo de A.
Analizar cada arista vz con zÏT y actualizar la etiqueta de z a min{t(z), t(v)
+w(vz)}. Añadir z a A.
La iteración continua hasta que T=V(G) o hasta que t(z)=¥ para cada vértice
zÏT
En cualquier caso la etiqueta de cada vértice z en T será la distancia de s a z.
En el segundo caso los vértices que no están en T no son accesibles desde s.
4. Grafos de precedencia.

Un grafo de precedencia es un grafo dirigido y sin ciclos donde los nodos


corresponden a instrucciones. Un arco desde un nodo Si a un nodo Sj significa que
la instrucción Sj solo puede ser ejecutada después que se realice la Si.
A. Algoritmo de partición en niveles y reconocimiento de grafos de
precedencia.
Entrada: G = (V. E): un grafo dirigido simple
Salida: circuito. Boolean, indica si G tiene algún circuito.
Salida: si circuito es falso, {V! v € V. n(v) = i}
Comienzo:
i←0
circuito - falso
While \VI = O^ No circuito do
V; ←← {v € V I v es fuente en G}

Si V; = ø Entonces

Circuito ← Cierto

Sino

Eliminar de G los vértices en V;


i←i+1
Si circuito Entonces
Print "El grafo tiene circuitos"

FIN.
CONCLUSION.

Se concluye que la teoría de grafos juega un papel importante en la


fundamentación matemática de las Ciencias de la Computación. Los grafos
constituyen una herramienta básica para modelizar fenómenos discretos y son
fundamentales para la comprensión de las estructuras de datos y el análisis de
algoritmos.
Un grafo en el ámbito de las ciencias de la computación, es una estructura de
datos, en concreto un tipo abstracto de datos (TAD), que consiste en un conjunto
de nodos (llamados vértices) y un conjunto de arcos (aristas) que establecen
relaciones entre los nodos. El concepto de grafo (TAD) desciende directamente de
concepto matemático de grafo.
De aquí se podría deducir que un grafo es básicamente un objeto geométrico
aunque en realidad sea un objeto combinatorio, es decir, un conjunto de puntos y
un conjunto de líneas tomado de entre el conjunto de líneas que une cada par de
vértices.
Entonces:
 Los gráficos sirven para modelizar matemáticamente una estructura de
datos.
 La teoría de grafos es un instrumento utilizado en la aplicación de estos
métodos, permitiéndonos evaluar las relaciones entre los puntos del
espacio conectado por la red.

REFERENCIAS.

Graph (s/f). Teoría de grafos. Graph. Revisado el 13 de marzo de 2022.


https://www.grapheverywhere.com/teoria-de-grafos/

P. Rochina (s/f). El análisis de redes sociales mediante la teoría de grafos.


Revista digital. Revisado el 13 de marzo de 2022.
https://www.google.com/amp/s/revistadigital.inesem.es/informatica-y-tics/teoria-
grafos/amp/

Pavel Aliaga (12 de mayo de 2012). Teoría de grafos. SlideShare. Revisado el 13


de marzo de 2022. https://es.slideshare.net/pavelaliaga/teoria-de-grafos-12993009

Matemáticas discretas (noviembre 23, 2017). Capitulo 11: teoría de grafos.


Médium. Revisado el 13 de marzo de 2022.
https://medium.com/@matematicasdiscretaslibro/cap%C3%ADtulo-11-teoria-de-
grafos-3b00228dd81c
EdX (s/f). Teoría de Grafos. EdX. Revisado el 13 de marzo de 2022.
https://medium.com/@matematicasdiscretaslibro/cap%C3%ADtulo-11-teoria-de-grafos-
3b00228dd81c

También podría gustarte