Sunteți pe pagina 1din 76

PAII-6: Grafos, recorridos

Dr. J.B. Hayet


CENTRO DE INVESTIGACION EN MATEMATICAS

Febrero 2008

, J.B. Hayet Programacion, Febrero 2008 1 / 53

Outline

Separabilidad y biconectividad Breadth rst search B usqueda generalizada

, J.B. Hayet Programacion, Febrero 2008 2 / 53

Separabilidad y biconectividad

Outline

Separabilidad y biconectividad Breadth rst search B usqueda generalizada

, J.B. Hayet Programacion, Febrero 2008 3 / 53

Separabilidad y biconectividad

Separabilidad

Una noci on muy importante es la de separabilidad hay en el grafo lugares (v ertices o aristas) estrat egicas, que si les quitas se desconecta el grafo? para dos v ertices del grafo, puedo estar seguro que existen al menos dos caminos distintos que me lleve de uno a otro? aplicaciones importantes: estudio de la robustez de una red (agua, electricidad, transportes)

, J.B. Hayet Programacion, Febrero 2008 4 / 53

Separabilidad y biconectividad

Separabilidad

, J.B. Hayet Programacion, Febrero 2008 5 / 53

Separabilidad y biconectividad

Puente

Un puente (o arista de separaci on) es una arista que, si la quitas, separar a el grafo en que esta en dos sub-grafos desconectados Un grafo es separable por arista cuando tiene al menos un puente Un grafo es conectado por aristas (edge-connected ) cuando no es separable Una vez quitadas las puentes en el grafo, se obtiene sus componentes conectadas por aristas, que son sub-grafos m aximos sin puentes

, J.B. Hayet Programacion, Febrero 2008 6 / 53

Separabilidad y biconectividad

Puente
8 1

0 6 7 2
, J.B. Hayet Programacion, Febrero 2008 7 / 53

Separabilidad y biconectividad

Puente
8 1

0 6 7 2
, J.B. Hayet Programacion, Febrero 2008 7 / 53

Separabilidad y biconectividad

Puente
8 1

0 6 7 2
, J.B. Hayet Programacion, Febrero 2008 7 / 53

Separabilidad y biconectividad

Puente y DFS
Existe una conexi on estrecha en la noci on de puente y el arbol de llamadas por DFS Aristas de tipo back no pueden ser puentes, por qu e? Propiedad: en un recorrido DFS, una arista de tipo tree edge v w es un puente si y solamente si no existe ninguna back edge que conecta un descendiente de w con un ancestro de v (1) (2) si existiera un back edge habria al menos dos caminos diferentes de a a b : no ser a un puente v w (2) (1) si no tenemos un puente entre v y w , entonces existe un camino alternativo para ir de w a v : es un back edge
, J.B. Hayet Programacion, Febrero 2008 8 / 53

Separabilidad y biconectividad

Puente y DFS
Existe una conexi on estrecha en la noci on de puente y el arbol de llamadas por DFS Aristas de tipo back no pueden ser puentes, por qu e? Propiedad: en un recorrido DFS, una arista de tipo tree edge v w es un puente si y solamente si no existe ninguna back edge que conecta un descendiente de w con un ancestro de v (1) (2) si existiera un back edge habria al menos dos caminos diferentes de a a b : no ser a un puente v w (2) (1) si no tenemos un puente entre v y w , entonces existe un camino alternativo para ir de w a v : es un back edge
, J.B. Hayet Programacion, Febrero 2008 8 / 53

Separabilidad y biconectividad

Puente y DFS

De manera equivalente, en un puente v w , la u nica liga desde el sub-arbol enraizado en w que apunte hacia un nodo que no sea en este arbol es w v mismo: desconectarle llevar a a desconectar el sub-grafo correspondiendo a este arbol de llamadas De esta observaci on se puede deducir un algoritmo de prueba basado en DFS: hay que examinar, en cada tree edge, si se puede alcanzar un v ertice ya visitado

, J.B. Hayet Programacion, Febrero 2008 9 / 53

Separabilidad y biconectividad

Puente y DFS

Recordar que si numeramos los v ertices en el orden preorden ord [v ]: (v w ) tree edge ord [v ] < ord [w ] (v w ) back edge ord [v ] > ord [w ] Idea: memorizar el preorden mas bajo low [w ] que se pueda alcanzar al usar al m aximo un back edge y uno(s) tree edges a partir de w Una arista v w es una puente ssi low [w ] = ord [w ]

, J.B. Hayet Programacion, Febrero 2008 10 / 53

Separabilidad y biconectividad

Puente y DFS
8 1

0 0 2
, J.B. Hayet Programacion, Febrero 2008 11 / 53

6 7

Separabilidad y biconectividad

Puente y DFS
8 1 1

0 0 2
, J.B. Hayet Programacion, Febrero 2008 11 / 53

6 7

Separabilidad y biconectividad

Puente y DFS
8 1 1

5 2 3 9

0 0 2
, J.B. Hayet Programacion, Febrero 2008 11 / 53

6 7

Separabilidad y biconectividad

Puente y DFS
8 1 1

5 2 3 9

0 0 3 2
, J.B. Hayet Programacion, Febrero 2008 11 / 53

6 7

Separabilidad y biconectividad

Puente y DFS
8 1 1

5 2 3 9

0 0 3 2
, J.B. Hayet Programacion, Febrero 2008 11 / 53

6 7

Separabilidad y biconectividad

Puente y DFS
8 1 1

5 2 3 9 4 3 2
, J.B. Hayet Programacion, Febrero 2008 11 / 53

0 0

6 7

Separabilidad y biconectividad

Puente y DFS
8 1 1

5 2 3 9 4 5 3 2
, J.B. Hayet Programacion, Febrero 2008 11 / 53

0 0

6 7

Separabilidad y biconectividad

Puente y DFS
8 1 1

5 2 3 6 9 4 5 3 2
, J.B. Hayet Programacion, Febrero 2008 11 / 53

0 0

6 7

Separabilidad y biconectividad

Puente y DFS
8 1 1

5 2 3 64 9 4 5 3 2
, J.B. Hayet Programacion, Febrero 2008 11 / 53

0 0

6 7

Separabilidad y biconectividad

Puente y DFS
8 1 1

5 2 3 64 9 44 54 3 2
, J.B. Hayet Programacion, Febrero 2008 11 / 53

0 0

6 7

Separabilidad y biconectividad

Puente y DFS
8 1 1 7 5 2 3 64 9 44 54 30 2
, J.B. Hayet Programacion, Febrero 2008 11 / 53

0 0

6 7

Separabilidad y biconectividad

Puente y DFS
8 1 1 7 5 2 3 64 9 44 54 30 2
, J.B. Hayet Programacion, Febrero 2008 11 / 53

0 0

6 7

Separabilidad y biconectividad

Puente y DFS
8 1 1 7 5 2 3 64 9 44 54 30 2
, J.B. Hayet Programacion, Febrero 2008 11 / 53

0 0

6 7

Separabilidad y biconectividad

Puente y DFS
8 1 1 7 5 2 3 64 9 44 54 30 2
, J.B. Hayet Programacion, Febrero 2008 11 / 53

88

0 0

6 7

Separabilidad y biconectividad

Puente y DFS
8 10 1 71 5 20 3 64 9 44 54 30 2
, J.B. Hayet Programacion, Febrero 2008 11 / 53

88

0 0

6 7

Separabilidad y biconectividad

Puente y DFS
8 10 1 71 5 20 3 64 9 44 54 30 2
, J.B. Hayet Programacion, Febrero 2008 11 / 53

88

0 0

6 7

Separabilidad y biconectividad

Puente y DFS
Del libro de Sedgewick :
t e m p l a t e < c l a s s Graph > c l a s s EC : p u b l i c SEARCH<Graph > { in t bcnt ; v e c t o r < i n t > low ; v o i d s e a r c h C ( Edge e ) { int w = e .w; o r d [ w ] = c n t ++; low [ w ] = o r d [ w ] ; typename Graph : : a d j I t e r a t o r A(G , w ) ; f o r ( i n t t = A . beg ( ) ; ! A . end ( ) ; t = A . n x t ( ) ) i f ( o r d [ t ] == 1) { s e a r c h C ( Edge (w , t ) ) ; i f ( low [ w ] > low [ t ] ) low [ w ] = low [ t ] ; i f ( low [ t ] == o r d [ t ] ) b c n t ++; // w t i s a b r i d g e } J.B. Hayet Programacion, Febrero 2008

, 12 / 53

Separabilidad y biconectividad

Puente y DFS
Del libro de Sedgewick :
e l s e i f ( t != e . v ) i f ( low [ w ] > o r d [ t ] ) low [ w ] = o r d [ t ] ; } void s e a r c h ( ) { f o r ( i n t v = 0 ; v < G . V ( ) ; v++) i f ( o r d [ v ] == 1) s e a r c h C ( Edge ( v , v ) ) ; } public : EC( const Graph &G) : SEARCH<Graph >(G) , b c n t ( 0 ) , low (G . V ( ) , 1) { s e a r c h ( ) ; } i n t c o u n t ( ) const { r e t u r n b c n t +1; } };

, J.B. Hayet Programacion, Febrero 2008 13 / 53

Separabilidad y biconectividad

Puente y DFS

Otra vez, algoritmo lineal (|V |2 o |V | + |A|, para cada representaci on adecuada) Claramente, una b usqueda con otra representaci on o con otro punto de ida no cambiar a el resultado, que es caracter stico del grafo

, J.B. Hayet Programacion, Febrero 2008 14 / 53

Separabilidad y biconectividad

Puente y DFS
0 8 11 5 21 1 31 0 41 1 2 66 6 9 76 86 3 5 3 8

51

6 6
J.B. Hayet

7
, Programacion, Febrero 2008 15 / 53

Separabilidad y biconectividad

Caracterizaci on por v ertices cr ticos

Las deniciones y caracterizaciones previas se interesan a aristas criticas. Ahora, qu e pasa con v ertices? al quitar v ertices, quitamos tambi en las aristas correspondientes el equivalente de la noci on de puente: un punto de articulaci on (o v ertice de separaci on) es un v ertice tal que si lo quitamos, el grafo se separar a en al menos dos sub-grafos separados un grafo sin v ertices de separaci on se dice conectado por v ertices (vertex-connected )

, J.B. Hayet Programacion, Febrero 2008 16 / 53

Separabilidad y biconectividad

Biconectividad
Un grafo es biconectado si entre cada par de v ertices del grafo ertices existen al menos dos caminos disjuntos en v
1

Mas fuerte que la conectividad por aristas: aqu se necesita que cada v ertices puedan ser conectados con caminos sin v ertices en com un mientras en el primer caso, se requiere caminos sin aristas en com un
, J.B. Hayet Programacion, Febrero 2008 17 / 53

Separabilidad y biconectividad

Biconectividad
Propiedad: un grafo es biconectado ssi no tiene v ertices de separaci on (1) (2) considerar dos v ertices v y w que aparecer an en las componentes separadas al quitar el v ertice de separaci on s ; todos los caminos de v a w tienen que contener a s : si hab a un camino que no pase por s violar a el hecho de que est an en componentes separadas; tons no es biconectado (2) (1) mas complicado. . . ertices pasa Propiedad: un grafo es biconectado ssi por toda par de v un ciclo

, J.B. Hayet Programacion, Febrero 2008 18 / 53

Separabilidad y biconectividad

Biconectividad

se puede denir una relaci on entre aristas como: a en relaci on con a ssi a = a o existe un ciclo dentro del grafo que incluya a ya la relaci on as denida (relaci on de cociclicidad) es una relaci on de equivalencia (por qu e?) las clases de equivalencia corresponden a las componentes biconectadas de G

, J.B. Hayet Programacion, Febrero 2008 19 / 53

Separabilidad y biconectividad

V ertices de separaci on

Algoritmo de fuerza bruta: para todos los v ertices, vericar el grafo obtenido quitando el v ertice y reponerlo en el grafo. |V | pruebas que hacer Cada prueba lleva O (|V | + |A|) o O (|V |2 ) (usar DFS, por ejemplo) Total: O (|V |2 + |A||V |) o |V |3

, J.B. Hayet Programacion, Febrero 2008 20 / 53

Separabilidad y biconectividad

V ertices de separaci on

Como encontrarles por DFS? un v ertice es de separaci on ssi existe en el arbol de DFS un subarbol enraizado en uno de los hijos de u en que no haya aristas back hacia uno de los ancestros de u un v ertice-hoja en el arbol no puede ser un v ertice de separaci on la ra z de un arbol DFS es un v ertice de separaci on ssi tiene mas de dos hijos de tipo tree edges Es casi el mismo algoritmo que para encontrar puentes!

, J.B. Hayet Programacion, Febrero 2008 21 / 53

Separabilidad y biconectividad

V ertices de separaci on y DFS


8 10 1 71 5 20 3 64 9 44 54 30 2
, J.B. Hayet Programacion, Febrero 2008 22 / 53

88

0 0

6 7

Separabilidad y biconectividad

V ertices de separaci on

u es un v ertice de separaci on ssi tiene un hijo v en el arbol DFS tal que Low [v ] ord [u ] Remarcar que un puente no implica necesariamente que los dos v ertices del puente sean v ertices de separaci on (por qu e?) Remarcar que un v ertice de separaci on no pertenece necesariamente a un puente (por qu e?)

, J.B. Hayet Programacion, Febrero 2008 23 / 53

Separabilidad y biconectividad

V ertices de separaci on

Ahora, como determinar cuales son las componentes biconectadas? usar una pila! en el DFS, poner en la pila los tree y back edges que nos encontramos; cuando nos damos cuenta de que un v ertice es de separaci on por un tree edge v w , quitar de la pila todos los edges hasta encontrar v w , y seguir el DFS

, J.B. Hayet Programacion, Febrero 2008 24 / 53

Separabilidad y biconectividad

V ertices de separaci on
En nuestro ejemplo:
0-1 1-3 3-2 2-6 6-7 7-9 9-6 2-0 3-5 5-1 5-8

Remarcar que los v ertices de separaci on pueden pertenecer a varias componentes! todo eso en tiempo linear
J.B. Hayet Programacion, Febrero 2008 25 / 53

Separabilidad y biconectividad

V ertices de separaci on
En nuestro ejemplo:
8 1

0 6 7 2
, J.B. Hayet Programacion, Febrero 2008 26 / 53

Separabilidad y biconectividad

Generalizaci on
un grafo es k conectado si cada par de v ertices esta conectado por al menos k caminos disjuntos la conectividad por v ertices de un grafo es el n umero m nimo de v ertices que hay que quitar del grafo para separarlo en dos partes (ejemplo: un grafo con v ertice de separaci on es 1-conectado o 0) teorema de Whitney: un grafo es k conectado ssi su conectividad por v ertices es no menos de k un grafo es k conectado por aristas ssi entre cada par de v ertices existe al menos k caminos disjuntos en aristas la conectividad por aristas de un grafo es el n umero m nimo de aristas que hay que quitar para separar el grafo en dos partes

, J.B. Hayet Programacion, Febrero 2008 27 / 53

Breadth rst search

Outline

Separabilidad y biconectividad Breadth rst search B usqueda generalizada

, J.B. Hayet Programacion, Febrero 2008 28 / 53

Breadth rst search

DFS
DFS corresponde fundamentalmente a un recorrido v ertice por v ertice usando una pila en que ponemos cada vez los vertices adyacentes no visitados el uso de la pila esta escondido por las recursiones corresponde a una estrategia de exploraci on de laberintos: cada vez que nos encontramos con varias elecciones posibles para seguir, tomamos la m as recientemente descubierta; importa explorar lo mas profundamente posible lo mas r apidamente posible

, J.B. Hayet Programacion, Febrero 2008 29 / 53

Breadth rst search

DFS
Una re-escritura posible:
t e m p l a t e < c l a s s Graph > c l a s s DFS : p u b l i c SEARCH<Graph > { v o i d s e a r c h C ( Edge e ) { s t a c k <Edge> s ; s . push ( e ) ; w h i l e ( ! s . empty ( ) ) { i n t a=o r d [ ( e = s . t o p ( ) ) . w ] ; s . pop ( ) ; i f ( a == 1) { int v = e . v , w = e .w; o r d [ w ] = c n t ++; typename Graph : : a d j I t e r a t o r A(G , w ) ; f o r ( i n t t = A . beg ( ) ; ! A . end ( ) ; t = A . n x t ( ) ) i f ( o r d [ t ] == 1) Q. push ( Edge (w , t ) ) ; } };
, J.B. Hayet Programacion, Febrero 2008 30 / 53

Breadth rst search

BFS

la losof a de BFS (Breadth-First-Search) es muy diferente, tiene por principal meta enfocar sobre las distancias entre los v ertices y encontrar caminos mas cortos la idea es explorar en c rculos conc entricos alrededor del punto inicial DFS/BFS: exploraci on impetuosa/exploraci on prudente con varias personas

, J.B. Hayet Programacion, Febrero 2008 31 / 53

Breadth rst search

BFS
La implementaci on es muy simple: usar al lugar de un stack (LIFO) un queue (FIFO), y en cada nuevo v ertice encontrado, poner los adyacentes no visitados en la cola. Saldr an una vez que habr an salido los v ertices del mismo nivel que el v ertice padre, y los v ertices hijos de los primeros hermanos de este mismo v ertice padre Propiedad: de la cola que se usa, los v ertices entran y salen en el orden de su distancia a partir del v ertice inicial Propiedad: la cola que se usa contiene 0 o mas v ertices de distancia k hacia el v ertice inicial seguidos de 0 o mas v ertices de distancia k + 1 hacia el v ertice inicial para alg un k

, J.B. Hayet Programacion, Febrero 2008 32 / 53

Breadth rst search

BFS
8 1 0-0

0 6 7 2
, J.B. Hayet Programacion, Febrero 2008 33 / 53

Breadth rst search

BFS
8 1 0-0 0-1 0-2

0 6 7 2
, J.B. Hayet Programacion, Febrero 2008 33 / 53

Breadth rst search

BFS
8 1 0-0 0-1 0-2 1-3 1-5 2-3 2-6 5

0 6 7 2
, J.B. Hayet Programacion, Febrero 2008 33 / 53

Breadth rst search

BFS
8 1 0-0 0-1 0-2 1-3 1-5 2-3 2-6 3-5 5-8 6-7 6-9 5

0 6 7 2
, J.B. Hayet Programacion, Febrero 2008 33 / 53

Breadth rst search

BFS
8 1 0-0 0-1 0-2 1-3 1-5 2-3 2-6 3-5 5-8 6-7 6-9 7-9

0 6 7 2
, J.B. Hayet Programacion, Febrero 2008 33 / 53

Breadth rst search

BFS
8 1 0-0 0-1 0-2 1-3 1-5 2-3 2-6 3-5 5-8 6-7 6-9 7-9

0 6 7 2
, J.B. Hayet Programacion, Febrero 2008 33 / 53

Breadth rst search

BFS
t e m p l a t e < c l a s s Graph > c l a s s BFS : p u b l i c SEARCH<Graph > { v e c t o r <i n t > s t ; v o i d s e a r c h C ( Edge e ) { QUEUE<Edge> Q; Q. p u t ( e ) ; w h i l e ( !Q. empty ( ) ) i f ( o r d [ ( e = Q. g e t ( ) ) . w ] == 1) { int v = e . v , w = e .w; o r d [ w ] = c n t ++; s t [ w ] = v ; typename Graph : : a d j I t e r a t o r A(G , w ) ; f o r ( i n t t = A . beg ( ) ; ! A . end ( ) ; t = A . n x t ( ) ) i f ( o r d [ t ] == 1) Q. p u t ( Edge (w , t ) ) ; } }
, J.B. Hayet Programacion, Febrero 2008 34 / 53

Breadth rst search

BFS

public : BFS ( Graph &G) : SEARCH<Graph >(G) , s t (G . V ( ) , 1) { search ( ) ; } i n t ST( i n t v ) const { r e t u r n s t [ v ] ; } };

el st permite recuperar r apido el camino mas corto hacia el nodo inicial se puede establecer, como con DFS, un arbol de visitas

, J.B. Hayet Programacion, Febrero 2008 35 / 53

Breadth rst search

BFS: arbol
0

, J.B. Hayet Programacion, Febrero 2008 36 / 53

Breadth rst search

BFS: arbol
el BFS establece un bosque generador del grafo todos las aristas del arbol corresponden a aristas del grafo se puede procesar componente conectada por componente conectada los v ertices terminales pueden ser de tres categor as:
ligas padres ligas hacia v ertices del mismo nivel ligas hacia v ertices del nivel justo arriba (no puede haber m as, por qu e?)

, J.B. Hayet Programacion, Febrero 2008 37 / 53

Breadth rst search

BFS: arbol

Propiedad: para todo nodo w del arbol BFS enraizado en v , el camino v w corresponde al camino mas corto entre v y w Prueba: no hay camino v w mas corto antes de que surge al sacar w de la cola, y de la misma manera no camino hacia w puede ser encontrado despu es (ser an de tama no al previo)

, J.B. Hayet Programacion, Febrero 2008 38 / 53

Breadth rst search

BFS: remarca

de todos modos, al a nadir a la cola una arista que contiene un v ertice que ya esta entre las aristas ya presentes no sirve mucho: no estar a examinado (es la primera instancia que cuenta) una posibilidad, en consecuencia, es marcar el v ertice no al momento de examinarle sino al momento mismo de a nadirle a la cola

, J.B. Hayet Programacion, Febrero 2008 39 / 53

Breadth rst search

BFS: remarca
Implementaci on f acil;
v o i d s e a r c h C ( Edge e ) { QUEUE<Edge> Q; Q. p u t ( e ) ; o r d [ e . w ] = c n t ++; w h i l e ( !Q. empty ( ) ) { e = Q. g e t ( ) ; s t [ e . w ] = e . v ; typename Graph : : a d j I t e r a t o r A(G , e . w ) ; f o r ( i n t t = A . beg ( ) ; ! A . end ( ) ; t = A . n x t ( ) ) i f ( o r d [ t ] == 1) { Q. p u t ( Edge ( e . w , t ) ) ; o r d [ t ] = c n t ++; } } }

, J.B. Hayet Programacion, Febrero 2008 40 / 53

Breadth rst search

BFS: complejidad

BFS visita los v ertices y las aristas en el grafo en tiempo proporcional 2 a |V | (matriz de adyacencia) y |A| + |V | (listas de adyacencia) para cada v ertice visitado, checamos todas sus aristas todos los v ertices dentro de cada componente conectada est an o (1) en el arbol BFS, o (2) en la cola o (3) en situaci on de estar alcanzado desde un v ertice de la cola. Todos se mover an de (3) a (2) y a (1). Algoritmo lineal

, J.B. Hayet Programacion, Febrero 2008 41 / 53

Breadth rst search

BFS: clases de problemas


conectividad simple, componentes conectadas (como DFS) camino mas corto entre dos v ertices v y w : aplicar un BFS enraizado en v y pararlo cuando se llega a w , el camino se deduce de st caminos mas cortos a partir de un v ertice fuente: de la misma manera, aplicado sobre todos los v ertices
f o r ( t=w ; t != v ; t=b f s . ST( t ) ) c o u t << t << ; c o u t << v << e n d l ;

, J.B. Hayet Programacion, Febrero 2008 42 / 53

Breadth rst search

BFS: caminos mas cortos entre todos pares

calcular los caminos mas cortos a partir de cada nodo almacenar los resultados en tablas (distancias/st) preprocesamiento en |V ||A|, espacio en |V |2 pedidas en tiempo constante (tama no) y tiempo proporcional al tama no del camino (camino)

, J.B. Hayet Programacion, Febrero 2008 43 / 53

B usqueda generalizada

Outline

Separabilidad y biconectividad Breadth rst search B usqueda generalizada

, J.B. Hayet Programacion, Febrero 2008 44 / 53

B usqueda generalizada

Generalizaci on

al n y al cabo, BFS y DFS dieren por poco: la estructura que esta usada para almacenar los v ertices adyacentes de los v ertices visitados uno sale para procesarlo el mas recientemente descubierto, otro sale para procesarlo el que ha sido descubierto hace m as tiempo se puede generalizar la estrategia a cualquier tipo de cola generalizada (CG)

, J.B. Hayet Programacion, Febrero 2008 45 / 53

B usqueda generalizada

Generalizaci on

La estrategia de recorrido se puede enunciar como: Inicializar un arbol vac o y una CG con una arista v v Iterar hasta que la CG sea vac a:
Mover una arista de la CG hasta el arbol Si el v ertice hacia que llega no ha sido visitado ya, visitarle y a nadir todas las aristas que le conectan a v ertices visitados

Remarca: al usar un stack no tenemos exactamente el mismo DFS que lo que vimos, por qu e?

, J.B. Hayet Programacion, Febrero 2008 46 / 53

B usqueda generalizada

Generalizaci on
Tal cual, aparece un problema de eciencia: muchas aristas no estar an procesadas de todos modos aunque est an presentes en la CG BFS: son las primeras entradas que estaran procesadas; entonces es suciente marcar los v ertices correspondientes la primera vez y no ingresar mas aristas conteniendoles (ignore the new) DFS: es mas complicado, necesita una estrategia para olvidar la arista introducida hace mas tiempo (forget the old) Mas generalmente, el recorrido con CG necesita un mecanismo de reemplazamiento para asegurarse que no tenemos aristas compartiendo el mismo v ertice: ser a la propiedad intr nseca de la CG

, J.B. Hayet Programacion, Febrero 2008 47 / 53

B usqueda generalizada

Generalizaci on

Ejemplo:

, J.B. Hayet Programacion, Febrero 2008 48 / 53

B usqueda generalizada

Generalizaci on

Se puede establecer que con el uso de una CG, se puede recorrer todos los v ertices y aristas: en tiempo |V |2 /(|V | + |A|) a nadiendo en el peor caso el tiempo para |V | inserciones, |V | acciones de quitar y |A| operaciones de update de la CG

, J.B. Hayet Programacion, Febrero 2008 49 / 53

B usqueda generalizada

Generalizaci on: randomized queues

sacar los elementos de manera random! alterna comportamiento de tipo DFS con comportamiento de tipo BFS todo depende mucho del update: se puede no hacer; se puede considerar solo la arista mas reciente por un v ertice dado; se puede alternar comportamientos aleatoriamente

, J.B. Hayet Programacion, Febrero 2008 50 / 53

B usqueda generalizada

Generalizaci on: randomized queues


t e m p l a t e < c l a s s Item > c l a s s GQ { private : v e c t o r <Item > s ; i n t N ; public : GQ( i n t maxN) : s (maxN+1) , N( 0 ) { } i n t empty ( ) const { r e t u r n N == 0 ; } v o i d p u t ( I t e m i t e m ) { s [ N++] = i t e m ; } void update ( Item x ) { } Item get ( ) { i n t i = i n t (N r a n d ( ) / ( 1 . 0 +RAND MAX ) ) ; Item t = s [ i ] ; s [ i ] = s [ N 1 ] ; s [ N 1] = t ; r e t u r n s [N ] ; } }; J.B. Hayet Programacion, Febrero 2008

, 51 / 53

B usqueda generalizada

Generalizaci on: randomized queues


Tendencias para grafos localmente conectados:

DFS

BFS

Random

, J.B. Hayet Programacion, Febrero 2008 52 / 53

B usqueda generalizada

Generalizaci on: cola de prioridad

Si se puede asociar valores a aristas, entonces puede ser interesante quitar de la CG para ponerlas en el arbol las aristas de prioridad mas alta El update requiere operaciones de mantenimiento mas pesadas (ordenamiento) Uso en muchos algoritmos!

, J.B. Hayet Programacion, Febrero 2008 53 / 53

S-ar putea să vă placă și