lunes, 8 de agosto de 2016

Matemáticas - Teoría de grafos

Algoritmos de grafos

red de flujo es un grafo dirigido donde existen dos vértices especiales, uno llamado fuente, al que se le asocia un flujo positivo y otro llamadosumidero que tiene un flujo negativo y a cada arista se le asocia cierta capacidad positiva. En cada vértice diferente a los dos especiales se mantiene la ley de corrientes de Kirchoff, en donde la suma de flujos entrantes a un vértice debe ser igual a la suma de flujos que salen de él. Puede ser utilizada para modelar el tráfico en un sistema de autopistas, fluidos viajando en tuberías, corrientes eléctricas en circuitos eléctricos o sistemas similares por lo que viaje algo entre nodos.

Descripción matemática

Una red de flujo es un grafo dirigido  en donde cada arco  tiene una capacidad no negativa .
Se distinguen dos vértices: la fuente s y el destino t.
Se supone que cada vértice se encuentra en alguna ruta de s a t.
Un flujo en G es una función  tal que
  • Restricción de capacidad: 
  • Simetría: 
  • Conservación: 
El valor del flujo es 
El problema del flujo máximo trata de maximizar este flujo.

Algoritmo de flujo máximo

Tenemos el conocido problema de flujo máximo o maximal: ¿cuál es la tasa mayor a la cual el material puede ser transportado de la fuente al sumidero sin violar ninguna restricción de capacidad?
En otras palabras, el problema consiste en determinar la máxima capacidad de flujo que puede ingresar a través de la fuente y salir por el nodo de destino.
El procedimiento para obtener el flujo máximo de una red, consiste en seleccionar repetidas veces cualquier trayectoria de la fuente al destino y asignar el flujo máximo posible en esa trayectoria.
Capacidad residual: es la capacidad adicional de flujo que un arco puede llevar:
  • Dada una red de flujo máximo, plantee la red residual asociada.
  • Encuentre la trayectoria de la fuente al destino con capacidad de flujo estrictamente positivo (si no existe alguno, es por que se ha encontrado el óptimo).
  • Examine estas trayectorias para encontrar la rama o arco con la menor capacidad de flujo restante e incremente en éste valor, la capacidad del flujo en sentido contrario.
  • Determine todas las trayectorias estrictamente positivas, hasta que no se permita flujo del nodo a un nodo destino.

REDES DE FLUJO
La red de flujo es una representación gráfica de la solución de la ecuación de Laplace para  f y con las condiciones de frontera existentes en el flujo.
Esta constituida por líneas equipotenciales separadas igualmente en f y por líneas de corriente igualmente separadas en y. Esta separación se conoce como canal de flujo o canal de corriente. Todas las intersecciones de la red son ortogonales.
Propiedades de las redes de flujo:
·        El caudal que fluye entre dos líneas consecutivas es el mismo por unidad de ancho.
·        Ni las líneas equipotenciales pueden cortarse entre sí, dentro del medio fluido, ni las líneas de corriente pueden cortarse entre sí dentro del medio fluido.
Se trata entonces de definir en cada caso las condiciones de frontera específicas del problema y trazar, cumpliendo con estas, las dos familias de curvas ortogonales, obteniendo así una verdadera imagen gráfica del problema, que si a sido realizada con cuidado podrá ser lo suficientemente buena para los fines ingenieriles.
Para el trazo de una red de flujo se tienen los siguientes pasos:
·        Dibujar los limites del dominio
·        Fijar tentativamente 3 ó 4 líneas de corriente.
·        Trazar tentativamente equipotenciales, ortogonales a las líneas de corriente
·        Ajustar
·        Comprobar la bondad del ajuste si al trazar las líneas diagonales de los cuadros se obtienen también curvas suaves, formando una nueva red
CALCULO DEL CAUDAL
Al trazar cualquier red de flujo se dibujan las equipotenciales de tal manera que la Dh sea la misma y que el Dq entre dos líneas de corriente sea el mismo.
wpe26.jpg (13409 bytes)
Se tendrá entonces que:
Dq = KaDh/b
Si nf es el número total de canales de la red y nc el número de caídas de potencial que hay en toda la zona de flujo, entonces podrá escribirse:
Dq = q/nf     y    Dh = h/nc
Donde q y h son el caudal unitario total y la carga total.
A partir de lo anterior se puede llegar a que:
q/nf = Ka h/nc
q = (nf/nc) (a/b) kh
Puesto que q, k, h, nf y nc son constantes para una red de flujo dada, la relación a/b debe serlo también. Esta condición implica que se estén cumpliendo las dos condiciones iniciales (que la Dh sea la misma y que el Dq entre dos líneas de corriente sea el mismo).
El término nf/nc depende únicamente de la forma de la región de flujo, se le conoce como factor de forma y se representa:
Ff = nf/nc
El calculo de las presiones hidrodinámicas en el agua que se infiltra a través de la región de flujo, es una de las aplicaciones más útiles de una red de flujo.
FUERZAS DE INFILTRACIÓN
El agua circulando en un medio poroso, imparte energía a los granos sólidos por fricción. Considérese un  volumen de arena confinado, en el cual se tiene un nivel de agua h1 antes y un nivel h2 después de la arena.
wpe27.jpg (8398 bytes)
La fuerza resultante en el volumen de arena es:

F = P1 – P2

Donde:
P1 = gh1A        P2 = gh2A
A es el área transversal de la muestra.
Sustituyendo:
F = (h1 – h2) gA
La dirección de F es paralela al flujo y puede localizarse dependiendo de la posición del centro de gravedad del elemento analizado.
Para suelos anisotrópicos, debe utilizarse el concepto de sección transformada.

EJEMPLOS DE REDES DE FLUJO

wpe28.jpg (53069 bytes)










algoritmo de Dinic es un algoritmo de Tiempo polinómico para la computación de un Flujo maximal en una red de flujo, concebida en 1970 por el científico de la computación Yefim Dinitz, israelí de origen soviético.1 El algoritmo es ejecutado en un tiempo de  y está basado en el Algoritmo de Edmonds-Karp, el cual a su vez se ejecuta en un tiempo , y utiliza trayectorias de aumento más cortas. La introducción de los conceptos nivel de grafo y bloqueo de flujo es lo que define el rendimiento del algoritmo de Dinic.

Definición

Se tiene el grafo  que será una red de flujo con  donde  es la capacidad y el flujo de el arco  respectivamente.
Lacapacidad residual es un mapeo  definido como,
  1. Si ,
  2.  de otra manera.
Elgrafo residual es el grafo , donde
.
Latrayectoria de aumento es una ruta  en el grafo residual .
Se define  como la longitud del camino más corto desde  hasta  en .Entonces el nivel del grafo de  es el grafo , donde
.
El bloqueo del flujo es un  flujo  de manera tal que el grafo  con  no tiene ninguna ruta .

Algoritmo

Algoritmo de Dinic
Entrada: Una red .
Salida: Un flujo   de valor maximizado.
  1. Se tiene  para cada .
  2. Construir desde  de . Si , detener y retornar el resultado .
  3. Encontrar un bloqueo de flujo  en .
  4. Aumentar el flujo  by  y volver al paso 2.

Análisis

Se puede demostrar que el número de arcos en cada bloqueo de flujo, es incrementado en al menos 1 unidad cada vez, y por lo tanto hay al menos  bloqueos de flujo en el algoritmo, donde  es el número de vértices en la red. El nivel del grafo  puede ser construido por Breadth-first search en un tiempo de  y un bloqueo de flujo en cada nivel del grafo puede ser encontrado en un tiempo de . Por lo tanto, el tiempo del algoritmo de Dinic es de .
Usando una estructura de datos llamada árboles dinámicos, el tiempo de ejecución para encontrar un bloqueo de flujo en cada fase puede ser reducido a  y por lo tanto el tiempo de ejecución del algoritmo de Dinic puede ser reducido a .

Casos Especiales

En redes con capacidades de unidad, el tiempo de ejecución es mucho mayor. Cada bloqueo de flujo puede ser encontrado en un tiempo de , y es demostrable que el número de fases no excedan  y . En estos casos el algoritmo se ejecuta en un tiempo de .
En las redes surgidas durante la solución del problema de apareamiento, el número de fases está limitado por ,lo cual resulta en un limitado tiempo de . El algoritmo resultante a raíz de esto es conocido como algoritmo Hopcroft–Karp. De manera más general, este límite se mantiene para cualquier red unitaria — un tipo de red en la que cada vértice, excepto para los vértices fuente y sumidero, o bien tienen un único arco de capacidad, o un único arco con salida, y todas las demás capacidades son valores enteros arbitrarios.2

Ejemplo

Esta es una simulación del algoritmo de Dinic. En el nivel del grafo , los vértices marcados en rojo son los valores . Las rutas en azul forman el bloqueo de flujo.
1.Dinic algorithm G1.svgDinic algorithm Gf1.svgDinic algorithm GL1.svg
El bloqueo de flujo está constituido por
  1.  con 4 unidades de flujo,
  2.  con 6 unidades de flujo, and
  3.  con 4 unidades de flujo.
Por lo tanto el bloqueo del flujo es de 14 unidades y el valor del flujo  es 14. Note que cada ruta de aumento en el flujo de bloqueo tiene 3arcos.
2.Dinic algorithm G2.svgDinic algorithm Gf2.svgDinic algorithm GL2.svg
El bloqueo de flujo está constituido por
  1.  con 5 unidades de flujo.
Por lo tanto el bloqueo del flujo es de 5 unidades y el valor del flujo  es 14 + 5 = 19. Note que cada ruta de aumento en el flujo de bloqueo tiene 4 arcos.
3.Dinic algorithm G3.svgDinic algorithm Gf3.svgDinic algorithm GL3.svg
Desde  no puede ser alcanzado en . El algoritmo termina y retorna un valor m'aximo de flujo de 19. Note que en cada bloqueo de flujo, el n'umero de arcos en la ruta de aumento se incrementa en al menos 1 valor.

Historia

El algoritmo de Dinic fue publicado en 1970 por el ex ruso científico de la computación Yefim (Chaim) A. Dinitz , quien hoy es miembro del departamento de Ciencias de la Computación en [Ben-Gurion University of the Negev]] (Israel). Dicha publicación se realizó antes que la del algoritmo Edmonds–Karp, el cual fue publicado en 1972, pero fue descubierta antes. Ambos demostraron cada uno por su cuenta, que en el algoritmo de Ford–Fulkerson, si cada ruta de aumento es la m'as corta, el largo de la ruta de aumento es no decreciente.

No hay comentarios:

Publicar un comentario