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 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.
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.
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
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,
- Si ,
- de otra manera.
- Si ,
- 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.
- Se tiene para cada .
- Construir desde de . Si , detener y retornar el resultado .
- Encontrar un bloqueo de flujo en .
- 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.
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