listas graficas

Post on 24-Apr-2015

99 views 4 download

Transcript of listas graficas

Universidad Simón Bolívar

Peter Olejua

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.

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]

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.

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.

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.

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).

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.

Estudio sobre listas gráficas

Ejemplo:

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

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.

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?

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)

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.

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

¿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

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.

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.

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'.

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'.

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.

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|.

Estudio sobre listas gráficas

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

[1955], Hakimi [1962]):

Ejemplo:

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.

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.

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.”

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}.

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.

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.

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.

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:

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.

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. →

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.

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.

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).

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).

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}.

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}.

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

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).

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}.

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.

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).

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.

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.

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.

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).

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}.

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.

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

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}.

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}.

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,

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).