grafos_dirigidos_aciclicos

5
 8. Recorridos en Grafos Dirigidos 8.1 Grafos Dirigidos aciclicos Un grafo dirigido acíclico  o gda es un grafo dirigido sin ciclos. Cuantificados en función de las relaciones que representan, los gda son mas generales que los árboles, pero menos que los grafos dirigidos arbitrarios. A continuación se presenta un ejemplo de un árbol, un gda y un grafo dirigido con un ciclo. A B C D E A B C D E A B C D E Figura 8.1 Tres grafos dirigidos  Entre otros, los gda  se usan para representar la estructura sintáctica de expresiones aritméticas con subexpresiones comunes. Por ejemplo, la expresión: ((a+b)*c+((a+b)+e)*(e+f))*((a+b)*c) Se puede representar con el grafo dirigido: + e + + b c * * a + *  f Figura 8.2 Gda para expresiones aritméticas  Los gda  son útiles también para la representación de órdenes parciales. Una orden parcial R  en un conjunto S  es una relación binaria tal que:

Upload: jeison-contreras

Post on 11-Jul-2015

271 views

Category:

Documents


0 download

TRANSCRIPT

5/11/2018 Grafos_Dirigidos_Aciclicos - slidepdf.com

http://slidepdf.com/reader/full/grafosdirigidosaciclicos 1/5

 

8. Recorridos en Grafos Dirigidos

8.1 Grafos Dirigidos aciclicos Un grafo dirigido acíclico o gda es un grafo dirigido sin ciclos. Cuantificados enfunción de las relaciones que representan, los gda son mas generales que losárboles, pero menos que los grafos dirigidos arbitrarios. A continuación sepresenta un ejemplo de un árbol, un gda y un grafo dirigido con un ciclo.

A

B C

D E

A

B C

D E

A

B C

D E

Figura 8.1 Tres grafos dirigidos 

Entre otros, los gda  se usan para representar la estructura sintáctica deexpresiones aritméticas con subexpresiones comunes. Por ejemplo, laexpresión:

((a+b)*c+((a+b)+e)*(e+f))*((a+b)*c)

Se puede representar con el grafo dirigido:

+

e

++

b

c

*

*

a

+

*

 f 

Figura 8.2 Gda para expresiones aritméticas 

Los gda son útiles también para la representación de órdenes parciales. Unaorden parcial R en un conjunto S es una relación binaria tal que:

5/11/2018 Grafos_Dirigidos_Aciclicos - slidepdf.com

http://slidepdf.com/reader/full/grafosdirigidosaciclicos 2/5

 

  2

1. Para toda a en S , a R a es falsa. (R es irreflexivo)2. Para toda a,b,c en S , si a R b y b R c , entonces, a R c (R es transitivo)Dos ejemplos naturales de órdenes parciales son la relación menor que (<) en

enteros, y la relación de subconjunto propio (⊂).

Si se tiene S={1,2,3} y P(S) el conjunto exponencial de S , es decir el conjunto

de todos los subconjuntos de S . P(S)={ Φ ,{1},{2},{3},{1,2},{1,3},{2,3},{1,2,3}} . ⊂ es de orden parcial en P(S). Ciertamente, A ⊂   A es falso para cualquier

conjunto A (irreflexibilidad), y si A ⊂  B y B ⊂  C , entonces, A ⊂  C (transitividad).

{1,2,3}

{1,2} {2,3}{1,3}

{3}{2}{1}

Φ 

Fig. 8.3 Gda para inclusiones propias

 

8.1.1 Prueba de aciclicidad Se tiene un grafo dirigido G=(V,A), para determinar si G es acíclico, se usa labúsqueda en profundidad. Si se encuentra un arco en retroceso durante labúsqueda en profundidad de G , el grafo tiene un ciclo y viceversa.Para ver este hecho, supóngase que G es cíclico. Si se efectúa una búsquedaen profundidad de G , habrá un vértice v que tenga el número de búsqueda enprofundidad menor en un ciclo. Considérese un arco u   v en algún ciclo quecontenga a v . Ya que u está en el ciclo, debe ser un descendiente de v en elbosque abarcador en profundidad. Así, u   v no puede ser un arco cruzado.

Puesto que el número en profundidad de u es mayor que el de v , u   v  nopuede ser un arco de árbol, ni un arco de avance. Así que u   v debe ser unarco de retroceso. 

8.1.2 Clasificación topológica Un proyecto grande, suele dividirse en una colección de tareas mas pequeñas,algunas deben realizarse en ordenes específicos. Por ejemplo, un plancurricular.

5/11/2018 Grafos_Dirigidos_Aciclicos - slidepdf.com

http://slidepdf.com/reader/full/grafosdirigidosaciclicos 3/5

 

  3

La clasificación topológica es un proceso de asignación de un orden lineal a losvértices de un gda tal que si existe un arco del vértice i al vértice  j , i apareceantes que j en el ordenamiento lineal.A continuación se presenta un algoritmo para la clasificación topológica que esuna modificación del algoritmo bpf, estableciendo una instrucción de impresióndespués de la salida de cada llamado recursivo.clasificacion_topologica: Grafo X Vértice X Lista

 

Procedimiento clasificacion_topologica(G:Grafo, v:vértice, var

Marca:Lista[Booleano])

{Pre: v∈V, Marca tiene la información sobre los vértices que ya han

sido visitados en la búsqueda en profundidad.}

{Post: imprime los vértices accesibles desde el vértice v en ordentopológico invertido}

Var

long,pos:entero

Lst:Lista[Vértice]

Inicio

Anx_Lista(Marca,v,VERDADERO)

Lstsuc_grafo(G,v)

Longlong_lista(lst)

Pos1

Mientras pos<long+1 haga

Si info_lista(Marca,i)=FALSO entonces

Clasificacion_topologica(G,info_lista(Marca,i),Marca)Fin_si

Pospos+1

Fin_mientras

Escribir(info_lista(Marca,v))

Fin 

8.2 Componentes fuertes Un componente fuerte conexo de un grafo dirigido es un conjunto maximal devértices en el cual existe un camino que va desde cualquier vértice del conjuntohasta cualquier otro vértice también del conjunto. La búsqueda en profundidad

puede usarse para determinar con eficiencia los componentes fuertementeconexos de un grafo dirigido.

Sea G=(V,A) un grafo dirigido; se puede dividir V en clases de equivalencia V i ,1≤i ≤r , tales que los vértices v y w son equivalentes si y solo si, existe un caminode v a w y otro de w a v . Sea Ai , 1 ≤ i ≤ r , el conjunto de los arcos con cabeza ycola en V i . Los grafos G i =(V i ,Ai  ) se denominan componentes fuertemente conexos  de G . Un grafo dirigido con sólo un componente fuerte, se dice queestá fuertemente conexo .

5/11/2018 Grafos_Dirigidos_Aciclicos - slidepdf.com

http://slidepdf.com/reader/full/grafosdirigidosaciclicos 4/5

 

  4

Fig. 8.4 Grafo dirigido y sus componentes fuertes

a b 

d c 

(a)

a b 

d c 

(b)

 

Todo vértice de un grafo dirigido G  está en algún componente fuerte, pero

ciertos arcos pueden no estarlo. Tales arcos llamados cruce de componentes ,van de un vértice de un componente de un vértice a otro.

A continuación se presenta un algoritmo para encontrar los componentesfuertemente conexos de un grafo dirigido G dado:1.  Efectúese una búsqueda en profundidad de G y numérense los vértices en

el orden de terminación de las llamadas recursivas; esto es, asígnese unnúmero al vértice v después del llamado recursivo. 

2.  Constrúyase un grafo dirigido nuevo G r  invirtiendo las direcciones de losarcos de G . 

3.  Realícese una búsqueda en profundidad en G r  , partiendo del vértice con

numeración más alta de acuerdo con la numeración asignada en el paso 1.Si la búsqueda en profundidad no llega a todos los vértices, iníciese lasiguiente búsqueda a partir del vértice restante con numeración más alta.  

4.  Cada árbol del bosque abarcador resultante es un componente fuertementeconexo de G. 

Ejemplo: Para el grafo dirigido de la figura 8.4 (a), se parte en la búsqueda enprofundidad en el vértice a y después del paso 1, se tiene la figura 8.5 (b).

Fig. 8.5 Grafo dirigido G  y su arbol abarcador numerado (paso 1 del algoritmo)

a b 

d c 

(a) (b)

4

3

2

1

 Luego se crea el grafo G r  con los arcos en dirección contraria y se hace labúsqueda en profundidad iniciando en el vértice de numeración mas alta (a).

5/11/2018 Grafos_Dirigidos_Aciclicos - slidepdf.com

http://slidepdf.com/reader/full/grafosdirigidosaciclicos 5/5

 

  5

Fig. 8.6 Grafo dirigido G r y su bosque abarcador en profundidad

a b 

d c 

(a) (b)

d 4

3

2

1

 

Aparecen al final en la figura 8.6 (b) dos árboles del bosque abarcador enprofundidad que son los componentes fuertemente conexos de G .