listas graficas

54
Universidad Simón Bolívar Peter Olejua

Transcript of listas graficas

Page 1: listas graficas

Universidad Simón Bolívar

Peter Olejua

Page 2: listas graficas

Estudio sobre listas gráficas

Introducción:

Una lista gráfica es una lista de enteros no-negativos, para la cual existe un grafo simple tal que el grado de cada vértice corresponde a un único entero en dicha lista.

Page 3: listas graficas

Estudio sobre listas gráficas

Objetivos: Responder a la interrogante ¿Cuándo una lista de

enteros es gráfica? Hacer un recorrido por las soluciones a este

problema: Havel[1955], Hakimi[1962] Erdős-Gallai[1960] Tripathi-Venugolapan-West[2010]

Page 4: listas graficas

Estudio sobre listas gráficas

Preámbulo: Def. Un grafo G es una tripleta que consiste en un

conjunto de vértices V(G), un conjunto de lados E(G) y una relación que asocia a cada lado dos vértices (no necesariamente distintos y sin orden) llamados extremos.

Si un lado e tiene por extremos v1 y v2, decimos que e es incidente a v1 y a v2, que v1 es adyacente a v2 y que dichos vértices son vecinos.

El conjunto de los vecinos de v en G se denotará NG(v).

Si no existe e en E(G) que tenga por extremos a v1 y a v2, estos vértices se llaman independientes.

Page 5: listas graficas

Estudio sobre listas gráficas

Preámbulo:

Def. Un lazo es un lado cuyos extremos son iguales. Lados multiples son lados que tienen el mismo par de extremos.

Def. Un grafo simple es un grafo sin lazos ni lados multiples.

Page 6: listas graficas

Estudio sobre listas gráficas

Preámbulo: Para v Є V(G), el grado d(v) es el número de lados

que tienen a v como extremo (lazos cuentan doble).

Si V(G)={v1,v2,...,vn}, la lista de grados de G es (d(v1),...,d(vn)). Usualmente esta lista se escribe en orden decreciente.

Page 7: listas graficas

Estudio sobre listas gráficas

Preámbulo:

Proposición 1: Si G es un grafo, entonces Σd(vi)=2|E(G)|. En particular, Σd(vi) es par.

Dem: Al sumar d(vi) contamos el número de lados incidentes a vi. Cada lado o es un lazo o tiene dos extremos distintos. Así, cada lado suma dos unidades a Σd(vi).

Page 8: listas graficas

Estudio sobre listas gráficas

Lista realizable: Una lista de enteros no-

negativos (d1,...,dn) es realizable si existe un grafo G que la realice, es decir, existe un grafo G y un etiquetamiento de sus vértices V(G)={v1,v2,...,vn} tal que di=d(vi), para todo i=1,...,n.

Page 9: listas graficas

Estudio sobre listas gráficas

Ejemplo:

La lista (5,4,3,3,2,1,0) es realizable.

Page 10: listas graficas

Estudio sobre listas gráficas

Lista gráfica:

Una lista de enteros negativos es gráfica si es realizable por un grafo simple.

Ejemplo:

La lista (3,3,1,1) es realizable pero no gráfica.

Page 11: listas graficas

Estudio sobre listas gráficas Pregunta:

¿Cuándo una lista es realizable? Restricciones a la pregunta:

¿Cuándo una lista es realizable por un grafo que pueda tener lazos?

¿Cuándo una lista es realizable por un grafo sin lazos pero que pueda tener lados múltiples?

¿Cuándo una lista es realizable por un grafo sin lazos ni lados lados múltiples? O lo que es igual, ¿Cuándo una lista es gráfica?

Page 12: listas graficas

Estudio sobre listas gráficas ¿Cuándo una lista es realizable por un grafo

que pueda tener lazos? Teorema 1: Una lista de enteros no-

negativos (d1,...,dn) es realizable sii Σdi es par.

Dem: (→) Proposición 1.

(←) Inducción (Luego de la hipótesis inductiva, agregar otro vértice con (dn+1-1)/2 lazos en el caso impar)

Page 13: listas graficas

Estudio sobre listas gráficas ¿Cuándo una lista es realizable por un grafo

sin lazos pero que pueda tener lados múltiples?

Teorema 2 (Hakimi 1962): Sea (d1,...,dn) una lista no-creciente de enteros no-negativos. Existe un grafo sin lazos que realiza dicha secuencia sii Σdi es par y d1<=d2+...+dn.

Dem: (→) Supongamos que existe dicho grafo. Por la Prop. 1 Σdi es par. Cada lado incidente a un vértice de mayor grado es incidente a alguno de los otros y al contar la suma de los grados de estos ultimos contamos al menos d1 lados.

Page 14: listas graficas

Estudio sobre listas gráficas

Teorema 2: Sea (d1,...,dn) una lista no-creciente de enteros no-negativos. Existe un grafo sin lazos que realiza dicha lista sii Σdi es par y d1<=d2+...+dn.

Dem: (←) Inducción sobre Σdi.

Si Σdi=0, n vértices independientes realizan dicha lista. Si Σdi>0 consideramos la lista D=(d1-1,d2-1,..,dn). Como d1<=d2+...+dn entonces d1-1<=d2-1+...+dn. También d1-1+d2-1+...+dn es par. Aplicamos la hipotesis inductiva a D. Finalmente, agregamos un lado de v1 a v2

Page 15: listas graficas

¿Cuándo una lista es gráfica? Teorema 3: Una condición recursiva (Havel

[1955], Hakimi [1962]): Ejemplo: Las listas 2,2,1,1 y 1,0,1 son

gráficas. El grafo K2+K1 realiza 1,0,1; donde Kn es el grafo simple con todos los lados posibles entre sus vértices (grafo completo). Agregando un nuevo vértice adyacente a los vértices de grado 1 y 0 se crea un grafo que realiza 2,2,1,1.

Estudio sobre listas gráficas

Page 16: listas graficas

Estudio sobre listas gráficas

¿Cuándo una lista es gráfica?

Teorema 3: Una condición recursiva (Havel [1955], Hakimi [1962]):

Para n>1, una lista d de tamaño n es gráfica sii d' es gráfica, donde d' es obtenida de d borrando su mayor elemento Δ y restando 1 a sus Δ siguientes elementos más grandes. La única lista gráfica de tamaño 1 es d1=0.

Page 17: listas graficas

Estudio sobre listas gráficas

¿Cuándo una lista es gráfica? Teorema 3: Una condición recursiva (Havel

[1955], Hakimi [1962]):

Dem: (←): Dada d ordenada de forma no-creciente y un grafo simple G' con lista de grados d', agregamos un nuevo vértice adyacente a vértices en G' con grados d2-1,...,dΔ-1. El grafo resultante G es simple y

realiza d.

Page 18: listas graficas

Estudio sobre listas gráficas

¿Cuándo una lista es gráfica? Teorema 3: Una condición recursiva (Havel

[1955], Hakimi [1962]):

Dem: (→): Supongamos que un grafo G realiza d. Encontraremos G' que realice d', con d' como en el teorema. Consideramos w en G de grado Δ. Sea S un conjunto de Δ vértices en G que tienen grados d2,...,dΔ+1.

Si N(w)=S, eliminamos w para encontrar G' que realica d'.

Page 19: listas graficas

Estudio sobre listas gráficas

¿Cuándo una lista es gráfica? Teorema 3: Una condición recursiva (Havel

[1955], Hakimi [1962]):

Dem: (→): El otro caso posible es que falte algún vértice de N(w) en S. Modificaremos G para aumentar |N(w)ΛS|. Como |N(w)ΛS| puede aumentar a lo sumo Δ, en un número finito de pasos encontraremos G* que realeza d y NG*(w)=S. De G* eliminaremos w y encontraremos G' que realiza d'.

Page 20: listas graficas

Estudio sobre listas gráficas

¿Cuándo una lista es gráfica? Teorema 3: Una condición recursiva (Havel

[1955], Hakimi [1962]):

Dem: (→): ¿Cómo encontramos G*? Elegimos x en S y z vecino de w pero que no pertenece a S. Queremos agregar wx y eliminar wz pero preservando los grados.

Page 21: listas graficas

Estudio sobre listas gráficas

¿Cuándo una lista es gráfica? Teorema 3: Una condición recursiva (Havel

[1955], Hakimi [1962]):

Dem: (→): Por la elección de S d(z)<=d(x), además w ya es vecino de z pero no de x. Existe y vecino de x pero no de z. Entonces, eliminamos {wz,xy} y agregamos {wx,yz} para aumentar |N(w)ΛS|.

Page 22: listas graficas

Estudio sobre listas gráficas

¿Cuándo una lista es gráfica? Teorema 3: Una condición recursiva (Havel

[1955], Hakimi [1962]):

Ejemplo:

Page 23: listas graficas

Estudio sobre listas gráficas

Teorema 4 (Caracterización de Erdos–Gallai [1960]):

Una lista no-creciente de enteros no-negativos es gráfica sii la suma de sus elementos es par y cumple la desigualdad de Erdos–Gallai (E-G) para todo 1<=k<=n.

Page 24: listas graficas

Estudio sobre listas gráficas

Caracterización de Erdos–Gallai [1960] (→Idea )

La idea es acotar el grado del vértice i-ésimo, en la izquierda, contando los lados incidentes a dicho vértice y cuyo otro vértice extremo está en los primeros k vértices; y contando los lados incidentes a dicho vértice y cuyo otro extremo está en los últimos n-k vértices.

Page 25: listas graficas

Estudio sobre listas gráficas

Caracterización de Erdos–Gallai [1960]

(←):

“Supongamos que la suma de los elementos de una lista d, no-creciente de enteros no-negativos, es par y d cumple con la desigualdad de E-G. Entonces d es gráfica.”

Page 26: listas graficas

Estudio sobre listas gráficas

Caracterización de Erdos–Gallai [1960] (←El algoritmo: Tripathi-Venugopalan-West [2010]).

DEFs previas:

-Una subrealización de d=d1,...,dn, es un grafo simple con

vértices v1,v2,...,vn, tal que d(vi)<=di, para 1<=i<=n.

- En una subrealización, el índice crítico r es el más grande índice tal que d(vi)=di, para 1<=i<r.

- Sea G una subrealización de d=d1,...,dn, La deficiencia de

G en vi es di-d(vi).

- Sean S={vr+1,...,vn} y T={v1,...,vr-1}.

Page 27: listas graficas

Estudio sobre listas gráficas

Caracterización de Erdos–Gallai [1960] (←El algoritmo: Tripathi-Venugopalan-West [2010]).

El inicio:

- La subrealización inicial tiene n vértices y ningún lado.

- Entonces, r=1, a menos que la lista este llena de ceros, en cuyo caso, el proceso termina.

Page 28: listas graficas

Estudio sobre listas gráficas

Caracterización de Erdos–Gallai [1960] (←El algoritmo: Tripathi-Venugopalan-West [2010]).

El inicio:

- La subrealización inicial tiene n vértices y ningún lado.

- Entonces, r=1, a menos que la lista este llena de ceros, en cuyo caso, el proceso termina.

La iteración: Mientras r<=n → Si la deficiencia en vr es nula → aumento r. Si no → obtenemos una nueva subrealización con deficiencia en vr más pequeña. Cuando esta deficiencia se anule, aumentamos r.

Page 29: listas graficas

Estudio sobre listas gráficas

Caracterización de Erdos–Gallai [1960] (←El algoritmo: Tripathi-Venugopalan-West [2010]).

El invariante: Mantendremos la condición que S={vr+1,...,vn}. sea un conjunto independiente (No hay lados entre sus vértices). Además, en cada iteración no se alterará el grado de ninguno de los vértices vi con i<r.

Cuando el algoritmo termina, r>n, con lo cual, la última subrealización es una realización de d.

Page 30: listas graficas

Estudio sobre listas gráficas

Caracterización de Erdos–Gallai [1960] (←El algoritmo: Tripathi-Venugopalan-West [2010])

¿Cómo obtener la nueva subrealización en cada iteración? Sea G la subrealización actual:

Page 31: listas graficas

Estudio sobre listas gráficas

Caracterización de Erdos–Gallai [1960] (←El algoritmo: Tripathi-Venugopalan-West [2010])

¿Cómo obtener la nueva subrealización en cada iteración? Sea G la subrealización actual:

Caso 0) vrvi € E(G), para algún vértice vi tal que d(vi)<di.

Page 32: listas graficas

Estudio sobre listas gráficas

Caracterización de Erdos–Gallai [1960] (←El algoritmo: Tripathi-Venugopalan-West [2010])

¿Cómo obtener la nueva subrealización en cada iteración? Sea G la subrealización actual:

Caso 0) vrvi € E(G), para algún vértice vi tal que d(vi)<di. →

Page 33: listas graficas

Estudio sobre listas gráficas

Caracterización de Erdos–Gallai [1960] (←El algoritmo: Tripathi-Venugopalan-West [2010])

¿Cómo obtener la nueva subrealización en cada iteración? Sea G la subrealización actual:

Caso 0) vrvi € E(G), para algún vértice vi tal que d(vi)<di. → Agregamos el lado vrvi.

Page 34: listas graficas

Estudio sobre listas gráficas

Caracterización de Erdos–Gallai [1960] (←El algoritmo: Tripathi-Venugopalan-West [2010])

¿Cómo obtener la nueva subrealización en cada iteración? Sea G la subrealización actual:

Caso 1) vrvi € E(G), para algún i con i<r.

Page 35: listas graficas

Estudio sobre listas gráficas

Caracterización de Erdos–Gallai [1960] (←El algoritmo: Tripathi-Venugopalan-West [2010])

¿Cómo obtener la nueva subrealización en cada iteración? Sea G la subrealización actual:

Caso 1) vrvi € E(G), para algún i con i<r. Como

d(vi)=di>=dr>d(vr), Ǝ u Є N(vi)-N(vr).

Page 36: listas graficas

Estudio sobre listas gráficas

Caracterización de Erdos–Gallai [1960] (←El algoritmo: Tripathi-Venugopalan-West [2010])

¿Cómo obtener la nueva subrealización en cada iteración? Sea G la subrealización actual:

Caso 1) vrvi € E(G), para algún i con i<r. Como

d(vi)=di>=dr>d(vr), Ǝ u Є N(vi)-N(vr).

Page 37: listas graficas

Estudio sobre listas gráficas

Caracterización de Erdos–Gallai [1960] (←El algoritmo: Tripathi-Venugopalan-West [2010])

¿Cómo obtener la nueva subrealización en cada iteración? Sea G la subrealización actual:

Caso 1) vrvi € E(G), para algún i con i<r. Como

d(vi)=di>=dr>d(vr), Ǝ u Є N(vi)-N(vr).

- Si dr-d(vr)>=2 → remplazamos {uvi} con {uvi,vivr}.

Page 38: listas graficas

Estudio sobre listas gráficas

Caracterización de Erdos–Gallai [1960] (←El algoritmo: Tripathi-Venugopalan-West [2010])

¿Cómo obtener la nueva subrealización en cada iteración? Sea G la subrealización actual:

Caso 1) vrvi € E(G), para algún i con i<r. Como

d(vi)=di>=dr>d(vr), Ǝ u Є N(vi)-N(vr).

- Si dr-d(vr)>=2 → remplazamos {uvi} con {uvi,vivr}.

Page 39: listas graficas

Estudio sobre listas gráficas

Caracterización de Erdos–Gallai [1960] (←El algoritmo: Tripathi-Venugopalan-West [2010])

¿Cómo obtener la nueva subrealización en cada iteración? Sea G la subrealización actual:

Caso 1) vrvi € E(G), para algún i con i<r. Como

d(vi)=di>=dr>d(vr), Ǝ u Є N(vi)-N(vr).

- Si dr-d(vr)=1. El hecho de que Ʃdi-Ʃd(vi) sea par => Ǝ vj en S

Page 40: listas graficas

Estudio sobre listas gráficas

Caracterización de Erdos–Gallai [1960] (←El algoritmo: Tripathi-Venugopalan-West [2010])

¿Cómo obtener la nueva subrealización en cada iteración? Sea G la subrealización actual:

Caso 1) vrvi € E(G), para algún i con i<r. Como

d(vi)=di>=dr>d(vr), Ǝ u Є N(vi)-N(vr).

- Si dr-d(vr)=1. El hecho de que Ʃdi-Ʃd(vi) sea par => Ǝ vj en S, con dj>d(vj).

Page 41: listas graficas

Estudio sobre listas gráficas

Caracterización de Erdos–Gallai [1960] (←El algoritmo: Tripathi-Venugopalan-West [2010])

¿Cómo obtener la nueva subrealización en cada iteración? Sea G la subrealización actual:

Caso 1) vrvi € E(G), para algún i con i<r. Como

d(vi)=di>=dr>d(vr), Ǝ u Є N(vi)-N(vr).

- Si dr-d(vr)=1. El hecho de que Ʃdi-Ʃd(vi) sea par => Ǝ vj

en S, con dj>d(vj). ¬(Caso 0) => vrvj Є E(G). →

remplazamos {uvi,vrvj} con {uvr,vivr}.

Page 42: listas graficas

Estudio sobre listas gráficas

Caracterización de Erdos–Gallai [1960] (←El algoritmo: Tripathi-Venugopalan-West [2010])

¿Cómo obtener la nueva subrealización en cada iteración? Sea G la subrealización actual:

Caso 2) vrT Є E(G) y d(vj)≠min{r,dj} para algún j>r.

Page 43: listas graficas

Estudio sobre listas gráficas

Caracterización de Erdos–Gallai [1960] (←El algoritmo: Tripathi-Venugopalan-West [2010])

¿Cómo obtener la nueva subrealización en cada iteración? Sea G la subrealización actual:

Caso 2) vrT Є E(G) y d(vj)≠min{r,dj} para algún j>r. En una subrealización, d(vj)<=dj. Por suposión, d(vj)<dj y por

¬(Caso 0) => vrvj Є E(G).

Page 44: listas graficas

Estudio sobre listas gráficas

Caracterización de Erdos–Gallai [1960] (←El algoritmo: Tripathi-Venugopalan-West [2010])

¿Cómo obtener la nueva subrealización en cada iteración? Sea G la subrealización actual:

Caso 2) vrT Є E(G) y d(vj)≠min{r,dj} para algún j>r. En una subrealización, d(vj)<=dj. Como S es independiente, d(vj)<=r.

Page 45: listas graficas

Estudio sobre listas gráficas

Caracterización de Erdos–Gallai [1960] (←El algoritmo: Tripathi-Venugopalan-West [2010])

¿Cómo obtener la nueva subrealización en cada iteración? Sea G la subrealización actual:

Caso 2) vrT Є E(G) y d(vj)≠min{r,dj} para algún j>r. En una subrealización, d(vj)<=dj. Como S es independiente,

d(vj)<=r. Ahora, d(vj)<r => vjvi € E(G), para algun i<r.

Page 46: listas graficas

Estudio sobre listas gráficas

Caracterización de Erdos–Gallai [1960] (←El algoritmo: Tripathi-Venugopalan-West [2010])

¿Cómo obtener la nueva subrealización en cada iteración? Sea G la subrealización actual:

Caso 2) vrT Є E(G) y d(vj)≠min{r,dj} para algún j>r. En una subrealización, d(vj)<=dj. Como S es independiente,

d(vj)<=r. Ahora, d(vj)<r => vjvi € E(G), para algun i<r.

Page 47: listas graficas

Estudio sobre listas gráficas

Caracterización de Erdos–Gallai [1960] (←El algoritmo: Tripathi-Venugopalan-West [2010])

¿Cómo obtener la nueva subrealización en cada iteración? Sea G la subrealización actual:

Caso 2) vrT Є E(G) y d(vj)≠min{r,dj} para algún j>r. Como

d(vi)=di>=dr>d(vr), Ǝ u Є N(vi)-N(vr).

Page 48: listas graficas

Estudio sobre listas gráficas

Caracterización de Erdos–Gallai [1960] (←El algoritmo: Tripathi-Venugopalan-West [2010])

¿Cómo obtener la nueva subrealización en cada iteración? Sea G la subrealización actual:

Caso 2) vrT Є E(G) y d(vj)≠min{r,dj} para algún j>r. Como

d(vi)=di>=dr>d(vr), Ǝ u Є N(vi)-N(vr).

→ remplazamos {uvi} con {uvr,vivj}.

Page 49: listas graficas

Estudio sobre listas gráficas

Caracterización de Erdos–Gallai [1960] (←El algoritmo: Tripathi-Venugopalan-West [2010])

¿Cómo obtener la nueva subrealización en cada iteración? Sea G la subrealización actual:

Caso 3) vrT Є E(G) y vivj € E(G), para algunos i con i<j<r.

Page 50: listas graficas

Estudio sobre listas gráficas

Caracterización de Erdos–Gallai [1960] (←El algoritmo: Tripathi-Venugopalan-West [2010])

¿Cómo obtener la nueva subrealización en cada iteración? Sea G la subrealización actual:

Caso 3) vrT Є E(G) y vivj € E(G), para algunos i con i<j<r. Entonces d(vi)>=d(vj)>=d(vr) => u Ǝ Є N(vi)-N(vr) y w Є N(vj)-N(vr). Además, vrT Є E(G) => u,w Є S

Page 51: listas graficas

Estudio sobre listas gráficas

Caracterización de Erdos–Gallai [1960] (←El algoritmo: Tripathi-Venugopalan-West [2010])

¿Cómo obtener la nueva subrealización en cada iteración? Sea G la subrealización actual:

Caso 3) vrT Є E(G) y vivj € E(G), para algunos i con i<j<r.

→ remplazamos {uvi,wvj} con {uvr,vivj}.

Page 52: listas graficas

Estudio sobre listas gráficas

Caracterización de Erdos–Gallai [1960] (←El algoritmo: Tripathi-Venugopalan-West [2010])

¿Cómo obtener la nueva subrealización en cada iteración? Sea G la subrealización actual:

Caso 3) vrT Є E(G) y vivj € E(G), para algunos i con i<j<r.

→ remplazamos {uvi,wvj} con {uvr,vivj}.

Page 53: listas graficas

Estudio sobre listas gráficas

Caracterización de Erdos–Gallai [1960] (←El algoritmo: Tripathi-Venugopalan-West [2010])

¿Cómo obtener la nueva subrealización en cada iteración? Sea G la subrealización actual:

No hace falta, Caso 4) vrT Є E(G), T es completo y

d(vj)=min{r,dj} para j>r.

Como S es independiente,

Page 54: listas graficas

Estudio sobre listas gráficas

Caracterización de Erdos–Gallai [1960] (←El algoritmo: Tripathi-Venugopalan-West [2010])

El algoritmo termina, pues en cada caso aumenta d(vr) o r. Como

la subrealización “mejora” en cada paso, se necesitarán, a lo sumo, Ʃdi iteraciones.

¿Qué tan lento es este algoritmo?

La iteración: Mientras r<=n → Si la deficiencia en vr es nula → aumento r. Si no → obtenemos una nueva subrealización con deficiencia en vr más pequeña. Cuando esta deficiencia se anule, aumentamos r.

En cada caso, para mejorar la subrealización, se necesita un tiempo constante.

El tiempo de corrida de este algoritmo es O(nƩdi).