GRAFOS & ÁRBOLES Jesús Zamit- UOC Grafo: par ordenado ( V, A) donde V es un conjunto no vacío, cuyos elementos son los Grafo: vértices, y A es un subconjunto del conjunto de parejas no ordenadas. Adyacencia: dos vértices u, v son adyacentes Adyacencia: 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: grafo : cardinal del conjunto, es decir, número de vértices del grafo n = |V | ≥ 1. Medida del grafo: grafo : cardinal del conjunto de aristas, es decir, el número de aristas. m = |A| ≥ 0. n 0 ≤ m ≤ 2 Grado del vértice v: v : g(v) : como el número de aristas que son incidentes en él.
0 ≤ g ( v ) ≤ V − 1 , ∀v ∈ V Grafo regular : si todos los vértices son del mismo grado, si el grado es r entonces es r regular Subgrafo: Grafo H Grafo H = (V’,A’) donde V’ ⊂ V y A’ ⊂ A - Subgrafo generado o inducido: - Subgrafo generador o de expansión: si el conjunto ⊂ A de vértices es igual V= V’ y A’ ⊂ - Grado de un subgrafo g H (u) Fórmula de los grados :
g ( v ) = 2 A ∑ u V ∈
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: N n de orden n ≥ 1 es un grafo de n vértices y 0 aristas. N 1 es un grafo trivial. Grafo ciclo: ciclo: C n de orden n ≥ 3 Grafo trayecto: T n de orden n ≥ 2 Grafo completo:: K K n de orden n es el grafo con todas las aristas posibles. Grafo bipartido: bipartido: partición del conjunto de vértices. Aristas solo conectan vértices de V1 con vértices de V2. Grafo bipartido completo: completo :K n,m n,m con todas las aristas posibles conectando vértices de V1 con vértices de V2. Estos grafos son m-regulares.
1 de 12
GRAFOS & ÁRBOLES Jesús Zamit- UOC Grafo estrella: estrella: E n de orden n(n ≥ 3) es un caso particular del garfo bipartido completo E n = K 1,n-1 1,n-1 . Orden n y medida n-1 Grafo rueda: 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: 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: descendente. • 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: G c grafo que se construye sobre el mismo conjunto de vértices de tal Complementario: modo que dos vértices son adyacentes en G c si y solo si No lo son en G. El complementario del complementario es el original. Union de grafos: grafos : G 1 ∪ G 2 = (V 1 ∪ V 2 , A1 ∪ A2 ) Suma de grafos: grafo con los vértices vértices y las aristas de los grafos originales más más las aristas que conecten todos los vértices del primero con el segundo. Producto de grafos : G 1 × G 2 = ( V 1 × V 2 , A ) 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 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
2 de 12
GRAFOS & ÁRBOLES Jesús Zamit- UOC Condiciones de isomorfismo: isomorfismo : Dos grafos 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 . Autocomplementario 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 Dígrafo :par ordenado en que V es un conjunto finito y A subconjunto del producto V x V. Arco:arista Arco: arista orientada, es un par ordenado (u,v) ∈ V x V Bucle orientado: 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: salida : g+(v):número g+(v):número de arcos que tienen el vértice v como origen Grado de entrada : g-(v):número g-(v):número de arcos arcos cuyo extremo 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 v j son adyacentes, adyacentes, 0 en caso contrario . Características: - se almacena en una tabla (array) (arra y) 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: 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.
3 de 12
GRAFOS & ÁRBOLES Jesús Zamit- UOC
RECORRIDOS Y CONECTIVID CONECTIVIDAD AD Recorrido: secuencia de vértices con la propiedad de que dos vértices consecutivos en Recorrido: la secuencia deben ser los extremos de una arista v 1 ─ v2 Recorrido cerrado: 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 :o de longitud 0 es el formado por un único vértice. Itinerario:: recorrido con todas las aristas diferentes. Itinerario Camino: itinerario que no se repiten vértices. Circuito:: camino cerrado que no se repiten aristas. Circuito Ciclo:: camino cerrado que solo se repite el primer-ultimo vértice (el Ciclo 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.
4 de 12
GRAFOS & ÁRBOLES Jesús Zamit- UOC
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.
5 de 12
GRAFOS & ÁRBOLES Jesús Zamit- UOC
Conectividad : posibilidad de establecer un recorrido entre dos vértices cualesquiera Grafo conexo: conexo : si para cada par de vértices existe un camino. Componente conexa: conexa : esta formada por todos los vértices que se pueden unir entre si mediante caminos de cualquier longitud. l ongitud. 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: conexión : se utiliza el algoritmo DFS para 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.
6 de 12
GRAFOS & ÁRBOLES Jesús Zamit- UOC Distancia: es la mínima de las longitudes de los caminos que conectan los vértices. d G G (u,v) = min {ℓ(C) |C es un camino u─v} ∝ = inaccesible d(u,v) = distancia entre dos vértices. Diámetro: D(G) D(G) = max {d G ∈ V} G (u,v) |u,v ∈ Grafo bipartido, si y solo si todos los ciclos son de longitud l ongitud par Grafo ponderado: ponderado : pesos pesos en las aristas del grafo. Camino mínimo en un grafo ponderado. Algoritmo de Dijkstra:se 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
7 de 12
GRAFOS & ÁRBOLES Jesús Zamit- UOC 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.
8 de 12
GRAFOS & ÁRBOLES Jesús Zamit- UOC ÁRBOLES Árbol: grafo conexo sin ciclos. Bosque: grafo acíclico sin la condición de conectividad. p ropiedades:: 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. Hoja: Todo árbol con un mínimo de dos vértices tiene un mínimo de dos hojas Árbol generador o de expansión: 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 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: 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 : minimal : Un árbol generador minimal de G es un árbol generador de G, de peso ω (G) (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)
9 de 12
GRAFOS & ÁRBOLES Jesús Zamit- UOC 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 t iene 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 d e 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 l os niveles del G. Árbol equilibrado: equilibrado : nivel = a h(T) o a h(T)-1.
10 de 12
GRAFOS & ÁRBOLES Jesús Zamit- UOC Exploración de árbol árbol con raíz :
GRAFOS EULERIANOS & HAMILTONIANOS Recorrido euleriano: euleriano: recorrido abierto que contiene todas las aristas del grafo sin repetición. Circuito euleriano: euleriano: circuito que pasa por todas las aristas del grafo. Grafo euleriano: 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.
11 de 12
GRAFOS & ÁRBOLES Jesús Zamit- UOC
Complejidad: O(m) Camino hamiltoniano: hamiltoniano: si pasa por todos los vértices sin repetición . repetición . Ciclo hamiltoniano: hamiltoniano: pasa por todos los vértices del G. Grafo hamiltoniano: hamiltoniano: grafo que admite un ciclo hamiltoniano . 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.
12 de 12