resumen_grafo_jein
TRANSCRIPT
GRAFOS & ÁRBOLES Jesús Zamit- UOC
1 de 12
Grafo: par ordenado ( V, A) donde V es un conjunto no vacío, cuyos elementos son los vértices, y A es un subconjunto del conjunto de parejas no ordenadas. Adyacencia: dos vértices u, v son adyacentes si y solo si existe una arista uv , de decir si {u,v} ∈ A , se denota por u ≈ u. a = uv une o conecta los vértices en sus extremos,
- Vértices u, v y la arista uv son incidentes - Vértices u y v son vértices vecinos.
Orden del grafo: cardinal del conjunto, es decir, número de vértices del grafo n = |V | ≥ 1.
Medida del grafo: cardinal del conjunto de aristas, es decir, el número de aristas.
m = |A| ≥ 0.
≤≤≤≤≤≤≤≤
2
nm0
Grado del vértice v: g(v) : como el número de aristas que son incidentes en él. Vv,V)v(g ∈∈∈∈∀∀∀∀−−−−≤≤≤≤≤≤≤≤ 10
Grafo regular: si todos los vértices son del mismo grado, si el grado es r entonces es r-
regular
Subgrafo: Grafo H = (V’,A’) donde V’ ⊂ V y A’ ⊂ A - Subgrafo generado o inducido: - Subgrafo generador o de expansión: si el conjunto
de vértices es igual V= V’ y A’⊂ A - Grado de un subgrafo gH(u)
Fórmula de los grados : A)v(gVu
2====∑∑∑∑∈∈∈∈
La suma de los grados de un grafo es el doble del número de aristas El número de vértices de grado impar es par.
Grafo nulo: Nn de orden n ≥ 1 es un grafo de n vértices y 0 aristas. N1 es un grafo
trivial. Grafo ciclo: Cn de orden n ≥ 3
Grafo trayecto: Tn de orden n ≥ 2
Grafo completo::Kn de orden n es el grafo con todas las aristas posibles. Grafo bipartido: partición del conjunto de vértices. Aristas solo conectan vértices de V1 con vértices de V2. Grafo bipartido completo:Kn,m con todas las aristas posibles conectando vértices de V1 con vértices de V2. Estos grafos son m-regulares.
GRAFOS & ÁRBOLES Jesús Zamit- UOC
2 de 12
Grafo estrella: En de orden n(n ≥ 3) es un caso particular del garfo bipartido completo En = K1,n-1 . Orden n y medida n-1 Grafo rueda: Rn de orden n(n ≥ 4) tiene un único vértice de grado n-1. Orden n y medida 2(n-1).
Secuencia gráfica: si existe un grafo de orden n tal que s es la secuencia de grados de G.
Algoritmo de Havel-Hakimi: permite de manera recursiva saber si una secuencia es gráfica. En cada iteración la longitud disminuye una unidad. La secuencia es gráfica si tras n-1 iteraciones se obtiene un 0. Complejidad O(n2).
Pasos: • Ordenar los vértices de forma descendente. • Se quita el primero y se resta uno a los que quedan tantos
como el número quitado. • Si queda desordenado se ordena de nuevo. • Hasta que lleguemos a 0.
Manipulación de grafos : Eliminar un vértice. : Eliminar una arista. : Añadir los vértices un conjunto W tal que W ∩ V = Ø : Añadir una arista {u,v} siendo u y v no adyacentes. : Contracción de arista : Subdivisión elemental de la arista Complementario: Gc grafo que se construye sobre el mismo conjunto de vértices de tal modo que dos vértices son adyacentes en Gc si y solo si No lo son en G. El complementario del complementario es el original. Union de grafos: (((( ))))212121 AA,VVGG ∪∪∪∪∪∪∪∪====∪∪∪∪ Suma de grafos: grafo con los vértices y las aristas de los grafos originales más las aristas que conecten todos los vértices del primero con el segundo.
Producto de grafos: )A,VV(GG 2121 ××××====×××× de manera que los vértices de G1, G2 son adyacentes si y solo si se cumple alguna de las condiciones
Grafos idénticos:si y solo si V1 = V2, A1 =A2
Grafos isomorfos si y solo si existe una biyección φ: V1:V2 (si cada vértice de V1 tiene uno en V2) que conserva las adyacencias y las no adyacencias, es decir u ≈ v es equivalente a ⇔ φ(u) ≈ φ(v). G1 ≅ G2
GRAFOS & ÁRBOLES Jesús Zamit- UOC
3 de 12
Condiciones de isomorfismo: Dos grafos son isomorfos si:
- tienen el mismo orden - tienen la misma medida - sus secuencias de grados coinciden - conservan la misma estructura
Autocomplementario: si es isomorfo a su complementario. Multigrafo: grafo con aristas múltiples. Pseudografo: admite aristas del tipo {u,u} conectando un vértice consigo mismo (bucles o lazos), de forma múltiple y aristas múltiples en pares de vértices. Grafo dirigido o Dígrafo:par ordenado en que V es un conjunto finito y A subconjunto del producto V x V. Arco:arista orientada, es un par ordenado (u,v) ∈ V x V Bucle orientado:u = v Origen del arco a=(u,v) es el vértice u. Final o extremo es el vértice v Orden del dígrafo:número de vértices. Medida del dígrafo:número de arcos.
Grado de salida:g+(v):número de arcos que tienen el vértice v como origen Grado de entrada:g-(v):número de arcos cuyo extremo es el vértice v . Grafo subyacente:(V,A’) de manera que {u,v} ∈ A’ si, y solo si, (u,v) ∈ A o (v,u) ∈ A.
Almacenamiento
Matriz de adyacencia: matriz B = (bi,j) dada por (bi,j) = 1 si los vértices vi y vj son adyacentes, 0 en caso contrario. Características:
- se almacena en una tabla (array) bidimensional - estructura fácil de manipular - espacio necesario de un grafo con orden n es
proporcional a n2 - si no es dirigido, matriz adyacencia triangular. - Matriz de adyacencias para grafos densos con muchas
aristas Lista de adyacencia: lista de vértices adyacentes a un vértice dado. Características:
- espacio necesario de un grafo con orden n y medida m es proporcional a n + 2m
- estructura difícil de manipular - poco espacio de almacenamiento.
GRAFOS & ÁRBOLES Jesús Zamit- UOC
4 de 12
RECORRIDOS Y CONECTIVIDAD Recorrido: secuencia de vértices con la propiedad de que dos vértices consecutivos en la secuencia deben ser los extremos de una arista v1 ─ v2
Recorrido cerrado: si los extremos coinciden, empieza y acaba en el mismo vértice. Longitud de un recorrido R:ℓ (R): número de aristas que lo componen. Recorrido trivial:o de longitud 0 es el formado por un único vértice. Itinerario: recorrido con todas las aristas diferentes. Camino: itinerario que no se repiten vértices. Circuito: camino cerrado que no se repiten aristas.
Ciclo: camino cerrado que solo se repite el primer-ultimo vértice (el mismo). Si en un G hay dos recorridos diferentes que conectan un par de vértices, entonces el G contiene algún ciclo. Si todos los vértices de un G son de grado ≥ 2, entonces el G contiene algún ciclo. Grafo sin ciclos: acíclico.
Algoritmo de búsqueda primeramente en profundidad (DFS) (Depth First Search) Número total de operaciones será proporcional a 2n + 2m Complejidad O(n+m) Se aplica a: buscar componentes conexas y si es un grafo acíclico. No sirve para grafos dirigidos.
GRAFOS & ÁRBOLES Jesús Zamit- UOC
5 de 12
Algoritmo de búsqueda primeramente en anchura (BFS) (Breadth First Search) Número total de operaciones será proporcional a n + 2m Complejidad O(n+m) Se aplica a: coloración, búsqueda ciclo más corto o cálculo distancias. Árbol generador de un grafo conexo.
GRAFOS & ÁRBOLES Jesús Zamit- UOC
6 de 12
Conectividad: posibilidad de establecer un recorrido entre dos vértices cualesquiera Grafo conexo: si para cada par de vértices existe un camino. Componente conexa: esta formada por todos los vértices que se pueden unir entre si mediante caminos de cualquier longitud. Un grafo es conexo si y solo si tiene una componente conexa. Si un grafo es conexo: m ≥ n – 1 (medida es igual o mayor que el orden menos 1)
m ≥n – k (medida es igual o mayor que el orden menos componentes conexas)
Test de conexión: se utiliza el algoritmo DFS para comprobar si G es conexo, devuelve la lista R con todos los vértices accesibles a partir de uno fijado. Si R tiene todos los vértices es conexo. Comprobar si un G es conexo, complejidad O(n+m) igual que DFS.
GRAFOS & ÁRBOLES Jesús Zamit- UOC
7 de 12
Distancia: es la mínima de las longitudes de los caminos que conectan los vértices. dG (u,v) = min {ℓ(C) |C es un camino u─v} ∝∝∝∝ = inaccesible d(u,v) = distancia entre dos vértices. Diámetro:D(G) = max {dG (u,v) |u,v ∈∈∈∈ V} Grafo bipartido, si y solo si todos los ciclos son de longitud par Grafo ponderado:pesos en las aristas del grafo.
Camino mínimo en un grafo ponderado. Algoritmo de Dijkstra:se aplica sobre un grafo ponderado y calcula la distancia desde un vértice inicial al resto de vértices. Complejidad máxima O(n2)
Camino mínimo en un grafo ponderado. Se utiliza el algoritmo de exploración en anchura BFS
GRAFOS & ÁRBOLES Jesús Zamit- UOC
8 de 12
Caminos mínimos entre todos los vértices. Aplicando n veces el algoritmo de Dijkstra con complejidad O(n3) o Algoritmo de Floyd: comportamiento mejor para grafos densos. Complejidad O(n3) = igual que el de Dijkstra.
GRAFOS & ÁRBOLES Jesús Zamit- UOC
9 de 12
ÁRBOLES Árbol: grafo conexo sin ciclos. Bosque: grafo acíclico sin la condición de conectividad. T = (V,A) es una árbol, propiedades: - entre cada pareja de vértices hay un camino - T es conexo y m = n-1 - T es acíclico y m = n-1 Hoja: es un vértice de grado 1.
Todo árbol con un mínimo de dos vértices tiene un mínimo de dos hojas Árbol generador o de expansión: es un subgrafo generador que tiene estructura de árbol y por tanto tiene todos los vértices del grafo. G = (V,A) , propiedades: - G es conexo - G contiene un arbol generador Si G es conexo de orden n entonces contiene un árbol generador de orden n y medida m = n-1 Si G no es conexo entonces cada componente conexa contiene un árbol generador, cuya reunión es un bosque, el bosque generador de G. Determinación de un árbol generador: mediante el algoritmo BFS. Árboles generadores: Un árbol generador de un grafo es un subgrafo generador que tiene estructura de árbol; en consecuencia, un árbol generador contiene todos los vértices del grafo. También se denomina árbol de expansión.
Árbol generador minimal: Un árbol generador minimal de G es un árbol generador de G, de peso ω(G) mínimo. Pudiendo existir más de uno.
Un árbol generador maximal de G es un árbol generador de G, de peso ω(G) máximo.
Los algoritmos de Kruskal y Prim son dos algoritmos de obtención de árboles generadores minimales.
Algoritmo de Kruskal: - lista con las aristas de menos a más peso, en caso de
igualdad la de vértice menor. - se escogen las aristas, tantas como vértices menos 1 y
se marcan, descartando las aristas del árbol que formen ciclo con las anteriores.
- las marcadas forman el árbol generador minimal, se suman los pesos.
Complejidad: O(m log m)
GRAFOS & ÁRBOLES Jesús Zamit- UOC
10 de 12
Algoritmo de Prim:
Complejidad: O(n2) como el algoritmo de Dijkstra. Árbol con raíz:
• T es un dígrafo asimétrico (si no tiene ciclos de longitud 2). • El grafo subyacente es un árbol. • Para todo vértice v ∈ V existe un r v camino.
Si T = (V,A) es un grafo asimetrico, entonces:
• T es un arbol con raiz • T tiene una raiz r con g-r=0 y g-v=1 para todo vértice v
diferente de la raiz. Hoja o vértice terminal: vértice que no tiene hijos, grado 0. el resto de vértices internos o no terminales Nivel: de un vértice es la longitud del único r v camino. Altura o profundidad: h(T) : es el máximo de los niveles del G. Árbol equilibrado: nivel = a h(T) o a h(T)-1.
GRAFOS & ÁRBOLES Jesús Zamit- UOC
11 de 12
Exploración de árbol con raíz:
GRAFOS EULERIANOS & HAMILTONIANOS
Recorrido euleriano: recorrido abierto que contiene todas las aristas del grafo sin repetición. Circuito euleriano: circuito que pasa por todas las aristas del grafo. Grafo euleriano: grafo que admite un circuito euleriano. Si G es un grafo conexo:
• G es euleriano • Los grados de los vértices son pares • Conjunto de las aristas admite una partición en circuitos
que no tienen aristas en común. Un grafo conexo contiene un circuito euleriano si y solo si tiene exactamente dos vértices de grafo impar. Construcción de un circuito euleriano Algoritmo de Hierholzer: concatena circuitos sin aristas en común.
GRAFOS & ÁRBOLES Jesús Zamit- UOC
12 de 12
Complejidad: O(m) Camino hamiltoniano: si pasa por todos los vértices sin repetición. Ciclo hamiltoniano: pasa por todos los vértices del G. Grafo hamiltoniano: grafo que admite un ciclo hamiltoniano. Grafo 2-conexo: si cada pareja de vértices u y v de G esta conectada por un mínimo de 2 caminos disjuntos, es decir, dos caminos que los únicos vértices que tienen en común son los extremos u y v. Si G es hamiltoniano:
• G es conexo y sus vértices son de grado ≥ 0 • G es 2-conexo • Si G es (V1,V2)-bipartido entonces |V1| = |V2|
Complejidad: NP – intratable TSP (problema del viajante de comercio) Buscar un ciclo hamiltoniano en un grafo.