Ciudad de Könisberg, Prusia, en XVIII:. ¿Sería posible dar un paseo pasando por cada uno de los...

Preview:

Citation preview

Ciudad de Könisberg, Prusia, en XVIII:

Ciudad de Könisberg, Prusia, en XVIII:

¿Sería posible dar un paseo pasando por cada uno de los siete puentes, sin repetir ninguno, comenzando y terminando

en el mismo lugar?

Ciudad de Könisberg, Prusia, en XVIII:

¿Sería posible dar un paseo pasando por cada uno de los siete puentes, sin repetir ninguno, comenzando y terminando

en el mismo lugar?

Ciudad de Könisberg, Prusia, en XVIII:

(nombre antiguo de la actual ciudad de Kaliningrado, Rusia.)

¿Sería posible dar un paseo pasando por cada uno de los siete puentes, sin repetir ninguno, comenzando y terminando

en el mismo lugar?

Ciudad de Könisberg, Prusia, en XVIII:

¿ Sería posible armar un circuito que pase por todas las aristas una sola vez?

Euler

La solución de Euler:

En 1736, el matematico suizo

Leonhard Euler dijo q NO

Grafos eulerianos

• Un circuito C en un grafo G (o multigrafo) es un circuito euleriano si C pasa por todos las aristas de G una única vez.

• Un grafo G se dice que es euleriano, cuando posee un circuito euleriano

• Un camino euleriano es un camino que recorre todas las artistas de G pasando una única vez por cada una

¿Cuando G es euleriano?

Algunos ejemplos

• ¿Es único? ¿Importa por dónde empezamos a armar el circuito?

cb

a d

cb

a d

• ¿Es único? ¿Importa por dónde empezamos a armar el circuito?

cb

a d

cb

a d

Algunos ejemplos

• ¿Es único? ¿Importa por dónde empezamos a armar el circuito?

cb

a d

cb

a d

Algunos ejemplos

• ¿Es único? ¿Importa por dónde empezamos a armar el circuito?

cb

a d

cb

a d

Algunos ejemplos

• ¿Es único? ¿Importa por dónde empezamos a armar el circuito?

cb

a d

cb

a d

Algunos ejemplos

• ¿Es único? ¿Importa por dónde empezamos a armar el circuito?

cb

a d

cb

a d

Algunos ejemplos

• ¿Es único? ¿Importa por dónde empezamos a armar el circuito?

cb

a d

cb

a d

Algunos ejemplos

• ¿Es único? ¿Importa por dónde empezamos a armar el circuito?

cb

a d

cb

a d

Algunos ejemplos

• ¿Es único? ¿Importa por dónde empezamos a armar el circuito?

cb

a d

cb

a d

Algunos ejemplos

• ¿Es único? ¿Importa por dónde empezamos a armar el circuito?

cb

a d

cb

a d

Algunos ejemplos

• ¿Si tenemos un circuito euleriano, qué podemos decir del grado de los vértices?

Algunos ejemplos

• ¿Si tenemos un circuito euleriano, qué podemos decir del grado de los vértices?

V0 .….. V0 …… V0 ….. V0

Algunos ejemplos

• ¿Si tenemos un circuito euleriano, qué podemos decir del grado de los vértices?

• Todos los vértices tienen grado par!

Condición necesaria

• ¿Es suficiente?

Algunos ejemplos

Teorema (Euler 1736): Un grafo G (o multigrafo) conexo es euleriano si y sólo si todos sus nodos tienen grado par.

Condición necesaria y suficiente

Condición necesaria y suficiente

Teorema (Euler 1736): Un grafo G (o multigrafo) conexo es euleriano si y sólo si todos sus nodos tienen grado par.

Demo: (Ida).

Si es euleriano, entonces

todos sus vértices tienen

grado par.

ejercicio!

Condición necesaria y suficiente

Teorema (Euler 1736): Un grafo G (o multigrafo) conexo es euleriano si y sólo si todos sus nodos tienen grado par.

Demo: (vuelta)

Si todos sus vértices

tienen grado par,

entonces es euleriano

Teorema (Euler 1736): Un grafo G (o multigrafo) conexo es euleriano si y sólo si todos sus nodos tienen grado par.

Construcción parcial del circuito Grafo G’ con las condiciones del Teorema

Condición necesaria y suficiente

Teorema (Euler 1736): Un grafo G (o multigrafo) conexo es euleriano si y sólo si todos sus nodos tienen grado par.

Construcción parcial del circuito Grafo G’ con las condiciones del Teorema

Condición necesaria y suficiente

Teorema (Euler 1736): Un grafo G (o multigrafo) conexo es euleriano si y sólo si todos sus nodos tienen grado par.

Construcción parcial del circuito Grafo G’ con las condiciones del Teorema

Condición necesaria y suficiente

Teorema (Euler 1736): Un grafo G (o multigrafo) conexo es euleriano si y sólo si todos sus nodos tienen grado par.

Construcción parcial del circuito Grafo G’ con las condiciones del Teorema

Condición necesaria y suficiente

Teorema (Euler 1736): Un grafo G (o multigrafo) conexo es euleriano si y sólo si todos sus nodos tienen grado par.

Construcción parcial del circuito Grafo G’ con las condiciones del Teorema

Condición necesaria y suficiente

Teorema (Euler 1736): Un grafo G (o multigrafo) conexo es euleriano si y sólo si todos sus nodos tienen grado par.

Construcción parcial del circuito Grafo G’ con las condiciones del Teorema

C1 C1

Condición necesaria y suficiente

Teorema (Euler 1736): Un grafo G (o multigrafo) conexo es euleriano si y sólo si todos sus nodos tienen grado par.

Construcción parcial del circuito Grafo G’ con las condiciones del Teorema

G’C1

Condición necesaria y suficiente

Teorema (Euler 1736): Un grafo G (o multigrafo) conexo es euleriano si y sólo si todos sus nodos tienen grado par.

Construcción parcial del circuito Grafo G’ con las condiciones del Teorema

G’C1

Condición necesaria y suficiente

Teorema (Euler 1736): Un grafo G (o multigrafo) conexo es euleriano si y sólo si todos sus nodos tienen grado par.

Construcción parcial del circuito Grafo G’ con las condiciones del Teorema

G’

Condición necesaria y suficiente

Teorema (Euler 1736): Un grafo G (o multigrafo) conexo es euleriano si y sólo si todos sus nodos tienen grado par.

Construcción parcial del circuito Grafo G’ con las condiciones del Teorema

G’

Condición necesaria y suficiente

Teorema (Euler 1736): Un grafo G (o multigrafo) conexo es euleriano si y sólo si todos sus nodos tienen grado par.

Construcción parcial del circuito Grafo G’ con las condiciones del Teorema

G’

Condición necesaria y suficiente

Teorema (Euler 1736): Un grafo G (o multigrafo) conexo es euleriano si y sólo si todos sus nodos tienen grado par.

Construcción parcial del circuito Grafo G’ con las condiciones del Teorema

C2 C2

G’

Condición necesaria y suficiente

Teorema (Euler 1736): Un grafo G (o multigrafo) conexo es euleriano si y sólo si todos sus nodos tienen grado par.

Construcción parcial del circuito Grafo G’ con las condiciones del Teorema

G’

Condición necesaria y suficiente

Teorema (Euler 1736): Un grafo G (o multigrafo) conexo es euleriano si y sólo si todos sus nodos tienen grado par.

Construcción parcial del circuito Grafo G’ con las condiciones del Teorema

G’C1 U C2

Condición necesaria y suficiente

Teorema (Euler 1736): Un grafo G (o multigrafo) conexo es euleriano si y sólo si todos sus nodos tienen grado par.

Construcción parcial del circuito Grafo G’ con las condiciones del Teorema

G’

Condición necesaria y suficiente

Teorema (Euler 1736): Un grafo G (o multigrafo) conexo es euleriano si y sólo si todos sus nodos tienen grado par.

Construcción parcial del circuito Grafo G’ con las condiciones del Teorema

G’

Condición necesaria y suficiente

Teorema (Euler 1736): Un grafo G (o multigrafo) conexo es euleriano si y sólo si todos sus nodos tienen grado par.

Construcción parcial del circuito Grafo G’ con las condiciones del Teorema

G’

Condición necesaria y suficiente

Teorema (Euler 1736): Un grafo G (o multigrafo) conexo es euleriano si y sólo si todos sus nodos tienen grado par.

Construcción parcial del circuito Grafo G’ con las condiciones del Teorema

G’

Condición necesaria y suficiente

Teorema (Euler 1736): Un grafo G (o multigrafo) conexo es euleriano si y sólo si todos sus nodos tienen grado par.

Construcción parcial del circuito Grafo G’ con las condiciones del Teorema

G’

Condición necesaria y suficiente

Teorema (Euler 1736): Un grafo G (o multigrafo) conexo es euleriano si y sólo si todos sus nodos tienen grado par.

Construcción parcial del circuito Grafo G’ con las condiciones del Teorema

G’

Condición necesaria y suficiente

Teorema (Euler 1736-Hierholzer1973): Un grafo G (o multigrafo) conexo es euleriano si y sólo si todos sus nodos tienen grado par.

Construcción parcial del circuito Grafo G’ con las condiciones del Teorema

G’

C

Condición necesaria y suficiente

Algoritmo Hierholzer

1. G= (V,E) conexo, C=Ǿ, G=G’

2. C’ := armar un circuito SIMPLE en G’ a partir de v0

3. C= C U C’

4. G' := (V, E=E- aristas de C)

5. v0 := un vértice de C tal que d(v0) > 0 en G'

6. Mientras E no se vacío, volver a 2

7. Retornar C

C es un circuito euleriano entre las aristas que no están en G’

C

C’, ciclo simple en G’

Recordar justificar los invariantesC := armar un circuito SIMPLE a partir de v0

¿Por qué siempre existe?

Recordar justificar los invariantesC := armar un circuito SIMPLE a partir de v0

¿Por qué siempre existe? Como los grados de los vértices son par y se le está sacando a cada

vértice una cantidad par de aristas incidentes (0 o 2) en cada iteración, los grados continúan siendo par en cada C.C (invariante) y siempre que puedo llegar al vértice, puedo salir

Recordar justificar los invariantesC := armar un circuito SIMPLE a partir de v0

¿Por qué siempre existe? Como los grados de los vértices son par y se le está sacando a cada

vértice una cantidad par de aristas incidentes (0 o 2) en cada iteración, los grados continúan siendo par en cada C.C (invariante) y siempre que puedo llegar al vértice, puedo salir

C= C U C’

¿Por qué C es un circuito que no repite aristas, cómo lo recorro?

Recordar justificar los invariantesC := armar un circuito SIMPLE a partir de v0

¿Por qué siempre existe? Como los grados de los vértices son par y se le está sacando a cada

vértice una cantidad par de aristas incidentes (0 o 2) en cada iteración, los grados continúan siendo par en cada C.C (invariante) y siempre que puedo llegar al vértice, puedo salir

C= C U C’

¿Por qué C es un circuito que no repite aristas, cómo lo recorro?

Como C y C’ tienen intersección en un vértice v0, empezamos en v0, recorremos C, que no repite aristas (invariante) y luego recorremos C’,que es un circuito simple con aristas de G’, es decir, aristas que no están en C. Cuando termina, C es un circuito que no repite aristas y contiene TODAS las aristas de G, ie. es euleriano

Recordar justificar los invariantesv0 := un vértice de C tal que d(v0) > 0 en G'

¿Por qué siempre existe?

• Si hay vértices de G que no están en C, entonces hay un camino de ese vértice a C, porque G es conexo

• Si todos los vértices de G son alcanzados por C, y G’ tiene aristas, tomamos un extremo de una arista.

Nota: Esto se puede encuadrar en un esquema de inducción en “m”, teniendo en cuenta estos invariantes.

Recordar justificar los invariantesv0 := un vértice de C tal que d(v0) > 0 en G'

¿Por qué siempre existe?

• Si hay vértices de G que no están en C, entonces hay un camino de ese vértice a C, porque G es conexo

• Si todos los vértices de G son alcanzados por C, y G’ tiene aristas, tomamos un extremo de una arista.

Cual es la complejidad de este algoritmo?

Teorema Un grafo (o multigrafo) conexo tiene un camino euleriano si y sólo si tiene exactamente dos nodos de grado impar.

Demo:

Corolarios…

Teorema Un grafo (o multigrafo) conexo tiene un camino euleriano si y sólo si tiene exactamente dos nodos de grado impar.

Demo: Ejercicio

Hint: Considerar el caso en que esos dos vértices son adyacentes y el caso en que no y aplicar el teorema anterior a un multigrafo.

Corolarios…

Teorema Un digrafo conexo es euleriano si y sólo si para todo vértice se verifica que din(v)= dout(v)

Demo:

Corolarios…

Teorema Un digrafo conexo es euleriano si y sólo si para todo vértice se verifica que din(v)= dout(v)

Demo: Ejercicio

Hint: Seguir la demo del Teorema de Euler, teniendo en cuenta la orientación de las aristas

Corolarios…

Aplicaciones de circuitos o caminos eulerianos

• Buscar caminos que pasen por todas las calles de una ciudad (asfaltar, recolectar basura, cartero)

• Cada camino en una red de transportes;

• Famoso Problema del cartero chino !

Problema del cartero chino (Guan, 1962)

Dado un grafo G con longitudes asignadas asus aristas, el problema consiste en encontrar un

circuito que pase por cada arista de G al menosuna vez de longitud mínima

Si G es euleriano, un circuito euleriano es LA solución del problema del cartero chino.

Como se resuelve?

Problema del cartero chino (Guan, 1962)

Dado un grafo G con longitudes asignadas asus aristas, el problema consiste en encontrar un

circuito que pase por cada arista de G al menosuna vez de longitud mínima

Si G es euleriano, un circuito euleriano es LA solución del problema del cartero chino.

Como se resuelve?Existen algoritmos polinomiales para el problema

del cartero chino cuando G es totalmente orientado o no es orientado.

No se conocen algoritmos polinomiales si el grafo es mixto (algunas aristas orientados y otros no).

Recommended