Professional Documents
Culture Documents
Entre otros, los gda se usan para representar la estructura sintctica de expresiones aritmticas con subexpresiones comunes. Por ejemplo, la expresin: ((a+b)*c+((a+b)+e)*(e+f))*((a+b)*c) Se puede representar con el grafo dirigido:
*
Los gda son tiles tambin para la representacin de rdenes parciales. Una orden parcial R en un conjunto S es una relacin binaria tal que:
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 relacin menor que (<) en enteros, y la relacin 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}
{1,3}
{2,3}
{1}
{2}
{3}
La clasificacin topolgica es un proceso de asignacin de un orden lineal a los vrtices de un gda tal que si existe un arco del vrtice i al vrtice j, i aparece antes que j en el ordenamiento lineal. A continuacin se presenta un algoritmo para la clasificacin topolgica que es una modificacin del algoritmo bpf, estableciendo una instruccin de impresin despus de la salida de cada llamado recursivo.
clasificacion_topologica: Grafo X Vrtice X Lista
Procedimiento clasificacion_topologica(G:Grafo, v:vrtice, var Marca:Lista[Booleano]) {Pre: vV, Marca tiene la informacin sobre los vrtices que ya han sido visitados en la bsqueda en profundidad.} {Post: imprime los vrtices accesibles desde el vrtice v en orden topolgico invertido} Var long,pos:entero Lst:Lista[Vrtice] 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)
(a)
(b)
Todo vrtice de un grafo dirigido G est en algn componente fuerte, pero ciertos arcos pueden no estarlo. Tales arcos llamados cruce de componentes, van de un vrtice de un componente de un vrtice a otro. A continuacin se presenta un algoritmo para encontrar los componentes fuertemente conexos de un grafo dirigido G dado: 1. Efectese una bsqueda en profundidad de G y numrense los vrtices en el orden de terminacin de las llamadas recursivas; esto es, asgnese un nmero al vrtice v despus del llamado recursivo. 2. Constryase un grafo dirigido nuevo Gr invirtiendo las direcciones de los arcos de G. 3. Realcese una bsqueda en profundidad en Gr , partiendo del vrtice con numeracin ms alta de acuerdo con la numeracin asignada en el paso 1. Si la bsqueda en profundidad no llega a todos los vrtices, inciese la siguiente bsqueda a partir del vrtice restante con numeracin ms alta. 4. Cada rbol del bosque abarcador resultante es un componente fuertemente conexo de G. Ejemplo: Para el grafo dirigido de la figura 8.4 (a), se parte en la bsqueda en profundidad en el vrtice a y despus del paso 1, se tiene la figura 8.5 (b).
a 4
2 1
(a)
(b)
Fig. 8.5 Grafo dirigido G y su arbol abarcador numerado (paso 1 del algoritmo)
Luego se crea el grafo Gr con los arcos en direccin contraria y se hace la bsqueda en profundidad iniciando en el vrtice de numeracin mas alta (a).
4 a
3 b
(a)
(b)
Aparecen al final en la figura 8.6 (b) dos rboles del bosque abarcador en profundidad que son los componentes fuertemente conexos de G.