11. GRAFOS

30
1 GRAFOS

description

Grafos Programacion

Transcript of 11. GRAFOS

  • *GRAFOS

  • *GRAFOSUn grafo G es un par (V,E) donde V es un conjunto (llamado conjunto de vrtices o nodos) y E un subconjunto de VxV (conjunto de aristas). Grficamente representaremos los vrtices por puntos y las aristas por lneas que los unen.Un vrtice puede tener 0 o ms aristas, pero toda arista debe unir exactamente 2 vrtices.Llamaremos orden de un grafo a su nmero de vrtices, |V|.Si |V| es finito se dice que el grafo es finito. Toda arista une dos vrtices distintos

  • *ARISTAS y VERTICESSi la arista carece de direccin se denota indistintamente {a,b} o {b,a}, siendo a y b los vrtices que une. Si {a,b} es una arista, a los vrtices a y b se les llama sus extremos.Dos vrtices v, w se dice que son adyacentes si {v,w}V (o sea, si existe una arista entre ellos)Llamaremos grado de un vrtice al nmero de aristas de las que es extremo. Se dice que un vrtice es par o impar segn lo sea su grado.

  • *CAMINOSSean x, y V, se dice que hay un camino en G de x a y si existe una sucesin finita no vaca de aristas {x,v1}, {v1,v2},..., {vn,y}. En este caso.x e y se llaman los extremos del caminoEl nmero de aristas del camino se llama la longitud del camino Si los vrtices no se repiten el camino se dice propio o simple. Si hay un camino no simple entre 2 vrtices, tambin habr un camino simple entre ellos Cuando los dos extremos de un camino son iguales, el camino se llama circuito o camino cerrado o ciclo (sin aristas repetidas).Llamaremos ciclo a un circuito simple (no existen vertices repetidos excepto el primero y el ultimo) Un vrtice a se dice accesible desde el vrtice b si existe un camino entre ellos. Todo vrtice es accesible respecto a si mismo

  • *EJEMPLOS DE GRAFOSGrafo regular: Aquel con el mismo grado en todos los vrtices. Si ese grado es k lo llamaremos k-regular.

  • *EJEMPLOS DE GRAFOSGrafo bipartito: Es aquel con cuyos vrtices pueden formarse dos conjuntos disjuntos de modo que no haya adyacencias entre vrtices pertenecientes al mismo conjunto

  • *EJEMPLO DE GRAFOSGrafo completo: Aquel con una arista entre cada par de vrtices. Un grafo completo con n vrtices se denota Kn.

  • *EJEMPLOS DE GRAFOSTodo grafo completo es regular porque cada vrtice tiene grado |V|-1 al estar conectado con todos los otros vrtices.Un grafo regular no tiene por qu ser completo Un grafo bipartido regular se denota Km,n donde m, n es el grado de cada conjunto disjunto de vrtices. A continuacin ponemos los dibujos de K1,2, K3,3, y K2,5

  • *MATRIZ DE ADYACENCIALa suma de los grados de los vrtices es igual al doble del nmero de aristas Sea G un grafo de orden n. Llamaremos matriz de adyacencia de G a la matriz nxn que llamaremos A = (aij) donde aij = 1 si {i,j}A y aij = 0 en otro caso. La matriz de adyacencia siempre es simtrica porque aij = aji

    v1v2v3v4v5v101100v210110v311011v401100v500100

  • *GRAFOSSea G un grafo de n vrtices con n > 1 y sea A su matriz de adyacencia. Se cumple que el valor del coeficiente ai,j de la matriz Ak es igual al nmero de caminos de longitud k con extremos vi y vj Si existe un camino de longitud m (m n) entre 2 vrtices cualquiera, entonces existe un camino de longitud n-1 entre esos dos vrtices. Un grafo G se dice conexo si cada par de vrtices est unido al menos por un camino.Una arista de un grafo G se dice de separacin si G es conexo pero al suprimir la arista se divide en dos componentes conexos

  • *GRAFOSUn mtodo para comprobar si un grafo es conexo es el siguiente:Se halla la matriz de adyacencia y se eleva a la (n-1)-sima potenciaSe calcula la suma de las potencias de A hasta An-1Si todos sus elementos son 0, el grafo es conexo.Dados dos grafos G = (V, E) y G = (V, E), se denomina isomorfismo entre G y G a cualquier aplicacin biyectiva f:G G tal que si a, b V, entonces {a,b}E {f(a),f(b)}E.

  • *Grafos Eulerianos y HamiltonianosLlamaremos camino euleriano a un camino que contiene a todas las aristas del grafo, apareciendo cada una exactamente una vez. Un ciclo euleriano es un camino euleriano que comienza y acaba en el mismo vrtice. Un grafo que admite un ciclo euleriano diremos que es un grafo euleriano.

  • *Grafos Eulerrianos y HamiltonianosSi un grafo est formado por dos subgrafos eulerianos unidos al menos por un vrtice y sin aristas en comn, entonces es euleriano.Un grafo conexo G=(V,A) es euleriano todo vrtice tiene grado par. Un grafo conexo tiene un camino abierto euleriano tiene exactamente dos vrtices de grado impar.

  • *Puentes de KonigsbergEl problema consiste en partir de cualquier lugar , caminar sobre cada puente exactamente una vez y luego regresar a la posicin inicial.

  • *Algoritmo de FleurySi G es un grafo euleriano siempre es posible seguir la siguiente construccin de un circuito euleriano. Se empieza por un vrtice arbitrario y se recorren las aristas arbitrariamente sometida a dos condiciones:Se borran las aristas a medida que son atravesadasSolo se recorre una arista de separacin si no queda otra alternativa

  • *Caminos HamiltonianosUn camino hamiltoniano es un camino que recorre todos los vrtices de un grafo sin pasar dos veces por el mismo vrtice. Si el camino es cerrado se dice un ciclo hamiltonianoUn grafo G se dice hamiltoniano si tiene un ciclo hamiltoniano.A diferencia de los grafos eulerianos, no hay una caracterizacin de cuando un grafo tiene un ciclo o un camino hamiltoniano.Si un grafo es conexo con |V|3 y para cada par de vrtices la suma de sus grados es mayor o igual que el nmero de vrtices entonces es hamiltoniano.

  • *Problema del Vendedor ViajeroEn un grafo G con pesos se pretende encontrar un ciclo que pase por todos los vrtices de forma que la suma de los pesos de las aristas escogidas para formar el ciclo sea lo menor posible.

  • *Ruta mas cortaUn grafo con pesos es un grafo en el cual se asignan valores a las aristas y que la longitud de un camino en un grafo con pesos es la suma de los pesos de las aristas en el camino. Con frecuencia se desea determinar la ruta mas corta entre dos vrtices dados. Dijkstra escribi el algoritmo que resuelve este problema.

  • *Algoritmo de DijkstraSuponemos que los pesos son nmeros positivos.Se desea determinar el camino mas corto de a hasta z.El grafo es conexo.Sea L(v) la etiqueta del vrtice v.En algn momento algunos vrtices tienen etiquetas temporales y otros permanentes.Sea T el conjunto de tienen etiquetas temporales.En principio todos los vrtices tienen etiquetas temporales.En cada iteracin el algoritmo modifica el estado de una etiqueta de temporal a permanente.El algoritmo concluye cuando z recibe una etiqueta permanente, L(z) proporciona la longitud mnima de a hasta z.El peso de la arista (i,j) es w(i,j)

  • *Algoritmo de DijkstraProcedure dijkstra(w, a, z, L)L(a)=0For todos los vrtices x != a doL(x) = infinitoT = conjunto de todos los vrtices// T es el conjunto de vrtices cuya distancia mas corta a a no ha sido determinadaWhile z pertenece T doelegir v en T con L(v) mnimoT = T-{v}for cada x en T adyacente a v doL(x) = min{L(x),L(v) + w(v,x)}endend

  • *ARBOLESUn grafo se dice un rbol si es conexo y no tiene ciclos.Los primeros dos grafos son rboles:

  • *ARBOLESPor tanto, un grafo es un rbol entre cada par de vrtices existe un camino y slo uno.Un grafo se dice un bosque si sus componentes conexas son rboles. Teorema.- Sea G(V,E) un grafo. Son equivalentesa) G es un rbol b) Cada par de vrtices distintos de V esta conectado por un nico camino.c) G es conexo y toda arista de G es de separacind) G no tiene ciclos y |V| = |E| + 1e) G es conexo y |V| = |E| + 1f) G no tiene ciclos pero al aadirle una arista a G se crea un nico circuito

  • *ARBOL GENERADORDefinicin.- Sea G un grafo, un rbol generador de G es un subgrafo conexo de G que tiene los mismos vrtices que G y no tiene circuitos.

  • *ARBOL GENERADORSupongamos que a cada arista se le asocia un nmero positivo (su peso). Un rbol generador se dice de peso mnimo si la suma de los pesos de las aristas que lo componen es lo menor posible Para calcular el rbol de peso mnimo existen 2 algoritmos:Kruskal: Se van escogiendo las aristas de menor peso hasta conseguir un rbol de peso mnimoPrim: Consiste en ir borrando las aristas de mayor peso posible y que no sean aristas de separacin.Puede haber ms de un rbol generador de peso mnimo, pero todos deben tener el mismo peso.

  • *ALGORITMO DE PRIMLa idea bsica consiste en aadir, en cada paso, una arista de peso mnimo a un rbol previamente construido. Ms explcitamente: Paso 1. Se elige un vrtice u de G y se considera el rbol S={u} Paso 2. Se considera la arista e de mnimo peso que une un vrtice de S y un vrtice que no es de S, y se hace S=S+e Paso 3. Si el n de aristas de T es n-1 el algoritmo termina. En caso contrario se vuelve al paso 2

  • *ALGORITMO DE PRIM

  • *ALGORITMO DE PRIM

  • *ALGORITMO DE KRUSKAL La idea bsica consiste en elegir sucesivamente las aristas de mnimo peso sin formar ciclos.

    Paso 1. Se elige la arista de mnimo peso e y se considera S={e}.

    Paso 2. Sea e la arista de mnimo peso tal que eS y S+e' es un grafo acclico. Se hace S=S+e'.

    Paso 3. Si S tiene n-1 aristas, el algoritmo termina. En caso contrario se vuelve al paso 2.

  • *ALGORITMO DE KRUSKAL

  • *ALGORITMO DE KRUSKAL