Você está na página 1de 45

Enrutamiento

Mstr. Esteban Inga Ortega


PhD. Roberto Hincapié Reyes
Solución por medio de
heurísticas
• Las técnicas heurísticas son métodos de
solución simplificados que no llegan a la
solución óptima, pero que logran una solución
buena en un tiempo razonable.
• No es fácil decidir que una técnica heurística
es mejor que otra. Lo mejor que se puede
hacer es ensayar diferentes instancias de
problema y decidir de acuerdo con un análisis.
Solución por medio de
heurísticas
Las técnicas se basan en la descripción
detallada de un algoritmo. Lo importante en el
algoritmo es garantizar tres cosas:
– Que el algoritmo efectivamente da solución al
problema, aunque no sea necesariamente óptima
– Que el algoritmo es finito, es decir, que termina en
un número finito de pasos.
– Que sea escalable, es decir, que no crezca en
forma exponencial o factorial con el tamaño del
problema.
Solución por medio de
heurísticas
Solución del problema de cobertura sin capacidad ni interferencia. La matriz A
representa los valores αi,j.
Activo=COBERTURA(S, U, A)
• Defina Cubiertos=∅, como el conjunto de los usuarios cubiertos por algún AP
activo. Defina No Cubiertos={u1, u2, u3, …, uN} como el conjunto de los usuarios
no cubiertos por ningún AP activo.
• Defina Activo=∅, como el conjunto de los AP activos.
• Defina Analizar={s1, s2, s3, …, sM}, como el conjunto de sitios candidatos.
• Paso1: Para cada sitio en Analizar, calcule el número de usuarios del conjunto
No Cubiertos que cubriría si se activara.
• Paso2: Defina i* como el sitio que cubre mas usuarios de No Cubiertos. Si hay
empate, defina aleatoriamente. Sea u* el conjunto de usuarios que cubre este
sitio. SI u*= ∅, vaya al paso 8.
• Paso3: Activos=Activos ∪ {Si*}
• Paso4: Analizar= Analizar \ {Si*}
• Paso5: Cubiertos=Cubiertos ∪ u*
• Paso6: No Cubiertos=No Cubiertos \ u*
• Paso7: Si Analizar≠ ∅
• Paso8: Salida: Activo.
Solución por medio de
heurísticas
Podría usted plantear una heurística para el
problema de cobertura con capacidad?
Las heurísticas se basan muchas veces en
plantear el problema en función de
problemas mas sencillos y sus heurísticas
correspondientes.
Solución por medio de
heurísticas
Solución del problema de cobertura con capacidad, sin
interferencia
• Para cada sitio candidato de S, reduzca el radio del
sitio hasta que el conjunto de usuarios cubiertos sea
igual a C. Esto equivale a crear el conjunto Ui, definido
por los usuarios que son cubiertos por el sitio
candidato i, conformado por los C usuarios mas
cercanos al AP. A partir de esta definición, cree una
nueva matriz A*, de términos αi,j*.
• Con el conjunto de conjuntos definido anteriormente,
ejecute el algoritmo
Activo=COBERTURA(S, U, A*)
Problema General de
Enrutamiento
Modelo del sistema:
Supongamos un conjunto de nodos, conectados entre si por
medio de enlaces de comunicación unidireccionales. Si entre el
nodo A y el nodo B existe un enlace, denotado como eA,B,
entonces A puede enviar información directamente hacia B. El
enlace eA,B tiene un peso o distancia asociado, dado por dA,B.
Se define V como el conjunto de nodos. Se define E como el
conjunto de enlaces existentes. Se define G(V,E) como un grafo
dirigido que representa la topología de la red.
Se supone adicionalmente un flujo de datos que requiere
transmitir información desde un nodo origen S hasta un nodo
destino T. Este flujo se transmite a través de los nodos
intermedios utilizando enlaces existentes. El flujo se define como
un par de nodos (s,t) pertenecientes a V que representan el
origen y destino de la información.
Planteamiento del Problema
Planteamiento del Problema
Se define la ruta de distancia mínima como
la ruta
Ps,t* tal que dPs,t*<=dPs,t para cualquier otra
ruta Ps,t posible.
El problema es encontrar la ruta de
distancia mínima para el flujo (s,t).
Planteamiento del Problema
Para escribir el problema de optimización, se requiere
definir las variables Xi,j. Suponiendo que el enlace ei,j
existe, Xi,j tiene un valor de 1, si el enlace (i,j) pertenece
al camino Ps,t. De lo contrario el valor es
cero.
Así mismo, para un nodo i∈V, se define Ei,out como el
conjunto de los enlaces salientes de i. Y se define Ei,in
como el conjunto de los enlaces entrantes a i
Con la definición anterior, el problema de optimización
queda
Planteamiento del Problema
Problema general de
enrutamiento
Solución Heurística:
• El problema anterior tiene una heurística ampliamente conocida, llamada el
algoritmo de Dijkstra, el cual logra efectivamente encontrar la ruta mas
corta extremo a extremo, desde un nodo origen hasta todos los demás
nodos.
• [D, prev_hop]=DIJKSTRA(G, s)
– Suponga un grafo dirigido de N nodos, con pesos en los enlaces. Sea S el nodo
inicial. Un vector D de tamaño N guardará al final del algoritmo las distancias desde S
al resto de los nodos.
– Paso1: Inicializar todas las distancias en D con un valor infinito relativo ya que son
desconocidas al principio, exceptuando la de S que se debe colocar en 0 debido a
que la distancia de S a S sería 0.
– Paso 2: Sea a = S (Se toma a como nodo actual).
– Paso 3: Recorremos todos los nodos adyacentes de a, excepto los nodos marcados,
llamaremos a estos vi.
– Paso 4: Si la distancia desde S hasta vi guardada en D es mayor que la distancia
desde S hasta a, sumada a la distancia desde a hasta vi; esta se sustituye con la
segunda nombrada, esto es: si (Di > Da + d(a, vi)) entonces Di = Da + d(a, vi)
– Paso 5: Marcamos como completo el nodo a.
– Paso 6: Se toma como próximo nodo actual el de menor valor en D, no marcado. Si
existe este nodo siguiente, vaya al paso 3.
– Paso 7: Una vez terminado al algoritmo, D estará completamente lleno.
Adaptado de: http://es.wikipedia.org/wiki/Algoritmo_de_Dijkstra
Problema general de
enrutamiento
Enrutamiento de
múltiples flujos
Modelo del sistema:
Supongamos un conjunto de nodos, conectados entre si por medio de
enlaces de comunicación unidireccionales. Si entre el nodo A y el nodo
B existe un enlace, denotado como eA,B, entonces A puede enviar
información directamente hacia B. El enlace eA,B tiene un peso o
distancia asociado, dado por dA,B. Así mismo, la capacidad del enlace
eA,B está dada por CA,B
Se define V como el conjunto de nodos. Se define E como el conjunto
de enlaces existentes. Se define G(V,E) como un grafo dirigido que
representa la topología de la red.
Se supone adicionalmente un conjunto de flujos de datos F={f1,f2,…, fK}
que requiere transmitir información desde un nodo origen Sk hasta un
nodo destino Tk. El requerimiento de capacidad del flujo fk, está dado
por Rk. Este flujo se transmite a través de los nodos intermedios
utilizando enlaces existentes. Un flujo se define como un par de nodos
fk=(Sk, Tk) pertenecientes a V que representan el origen y destino de la
información.
Planteamiento del problema:
Planteamiento del problema:
Se define la ruta de distancia mínima como la ruta
Ps,t* tal que dPs,t*<=dPs,t para cualquier otra ruta Ps,t
posible. Se define una ruta posible, como aquella
que contenga enlaces existentes dentro de la
topología y que tengan la capacidad para
transmitir los flujos que pasen a través de ellas.
El problema es encontrar las ruta de distancia
mínima para los flujos pertenecientes a F.
Planteamiento del problema:
Para escribir el problema de optimización, se requiere
definir las variables Xi,j,k. Suponiendo que el enlace ei,j
existe, Xi,j,k tiene un valor de 1, si el enlace (i,j)
pertenece al camino Psk,tk. Es decir, que el flujo késimo
utiliza el enlace ei,j. De lo contrario el valor es
cero.
Así mismo, para un nodo i∈V, se define Ei,out como el
conjunto de los enlaces salientes de i. Y se define Ei,in
como el conjunto de los enlaces entrantes a i
Con la definición anterior, el problema de optimización
queda
Enrutamiento de
múltiples flujos
Enrutamiento de
múltiples flujos
El problema anterior se puede solucionar de
manera iterativa, utilizando la rutina de Dijkstra
vista anteriormente.
• La rutina debe completarse un poco para
poder
obtener la ruta completa desde el origen al
destino.
• Vamos a crear una función llamada
P=ruta(s,t,G), que regresa la secuencia de
nodos entre s y t de la ruta mas corta.
Enrutamiento de
múltiples flujos
P=ruta(s,t,G)
• Paso 1: [D, prev_hop]=DIJKSTRA(G, s)
• Paso 2: P=[];
• Paso 3: Nodo=t;
• Paso 4: prev=prev_hop(Nodo);
• Paso 5: P=[Nodo, P];
• Paso 6: Nodo=prev;
• Paso 7: Si Nodo ≠ s, vaya al paso 4;
• Paso 8: P=[s, P];
• Paso 9: Retorna P;
Enrutamiento de
múltiples flujos
• A partir de algoritmo anterior, se define un
nuevo algoritmo, que busca encontrar el grafo
Residual. Este consiste en restar de la
capacidad de los enlaces del grafo actual, la
tasa de transmisión del flujo actual, sobre los
enlaces afectados por el mismo.
Enrutamiento de
múltiples flujos
G=Grafo_residual(G, P, R)
• Paso 1: k=1;
• Paso 2: CP(k),P(k+1)=CP(k),P(k+1)-R
• Paso 3: k=k+1;
• Paso 4: si k<||P||, vaya a paso 2.
• Paso 5: Retorna G;
Enrutamiento de
múltiples flujos
Suponiendo que existen K flujos, la heurística
completa quedaría así:
• Paso 1: f=1;
• Paso 2: Pf=ruta(sf,tf,G);
• Paso 3: G=Grafo_residual(G, Pf, Rf);
• Paso 4: f=f+1;
• Paso 5: Si f<=K, vaya al paso 2;
• Paso 6: Retorna Pf, con f={1,2,…,K};
Enrutamiento de
múltiples flujos
Para pensar: cómo podría lograr un
problema de enrutamiento, donde la
capacidad de todos los enlaces se ocupen
de la menor manera posible?
Es decir, cómo evitar que haya enlaces
“cuello
de botella”, donde se concentran muchos
flujos?
Enrutamiento Multicast
Modelo del sistema:
Supongamos un conjunto de nodos, conectados entre si por medio de enlaces
de comunicación BIdireccionales. Si entre el nodo A y el nodo B existe un
enlace, denotado como eA,B, entonces A puede enviar información
directamente hacia B y B puede enviar información directamente hacia A. El
enlace eA,B tiene un costo, peso o distancia asociado, dado por dA,B. Nota, el
enlace eA,B es arbitrario en el ordenamiento de a y b. Es decir, eA,B es lo mismo
que eB,A. De manera arbitraria, se puede nombrar a un enlace como ei , siendo
i el índice del enlace.
Se define V como el conjunto de nodos. Se define E como el conjunto de
enlaces existentes. Se define G(V,E) como un grafo NO dirigido que
representa la topología de la red. No dirigido indica que los enlaces son todos
bidireccionales.
El modelo general busca encontrar un árbol de expansión de mínimo costo. Un
árbol se define como “un grafo no dirigido, en el cual dos vertices cualquiera
están conectados por un único camino. En otras palabras, un árbol es un grafo
conectado sin ciclos.”
Enrutamiento Multicast
Planteamiento del Problema:
Planteamiento del Problema:
Para escribir el problema de optimización, se requiere
definir las variables Xi,j. Suponiendo que el enlace ei,j
existe, Xi,j tiene un valor de 1, si el enlace (i,j)
pertenece al árbol A. De lo contrario el valor es cero.
Se define dentro del conjunto de nodos V, un
subconjunto B cualquiera de nodos pertenecientes al
mismo.
Con la definición anterior, el problema de optimización
queda
Planteamiento del Problema:
El problema se define
como la minimización
del costo de los
enlaces elegidos. La
primera restricción
indica que los nodos
se conectan con N-1
enlaces, siendo N el
número de nodos.
La última restricción
debe analizarse con
mas cuidado.
Planteamiento del Problema:
Un conjunto B se
define como
cualquier
subconjunto de
nodos del
conjunto
N. B no es vacío ni
igual a V.
Planteamiento del Problema:
Un conjunto B se
define como
cualquier
subconjunto de
nodos del
conjunto
N. B no es vacío ni
igual a V.
Planteamiento del Problema:
Un conjunto B se
define como
cualquier
subconjunto de
nodos del
conjunto
N. B no es vacío ni
igual a V.
Planteamiento del Problema:
Un conjunto B se
define como
cualquier
subconjunto de
nodos del
conjunto
N. B no es vacío ni
igual a V.
Planteamiento del Problema:
Suponga el
siguiente grafo.
Para el mismo,
se debe
encontrar el
árbol de
expansión de
mínimo costo.
Enrutamiento Multicast
Enrutamiento Multicast
Suponga el
siguiente grafo.
Para el mismo,
se debe
encontrar el
árbol de
expansión de
mínimo costo.
Enrutamiento Multicast
Suponga el
siguiente grafo.
Para el mismo,
se debe
encontrar el
árbol de
expansión de
mínimo costo.
Enrutamiento Multicast
La solución
arroja un grafo
que no tiene
ciclos y que
pasa por todos
los nodos de
la red.
Enrutamiento Multicast
El problema del modelo anterior, es que la cantidad
de restricciones crece exponencialmente.
• Si se define cada nodo como una variable binaria
que vale 1 si el nodo pertenece a B, existen 2^N
subconjuntos posibles diferentes. Sin embargo el
vacío y el completamente lleno no aplican. Entonces
se tienen 2^N-2 subconjuntos totales. Para 10
nodos, se tienen 1022 restricciones. Para 20 nodos,
1’048.574 restricciones. Para 100 nodos, 1.2677e
+030 restricciones.
• Este problema con un número razonable de nodos,
ni siquiera se puede escribir.
Enrutamiento Multicast
Solución Heurística:
• El problema anterior tiene una heurística ampliamente
conocida, llamada el algoritmo de Prim. D representa el
costo de los diferentes enlaces. Suponga un grafo NO
dirigido de N nodos, con pesos en los enlaces
• [Enew]=PRIM(E,V,D)
– Paso1: Inicializar Vnew={x}; Enew={}; donde x es un nodo arbitrario
del grafo. Se elige aleatoriamente.
– Paso 2: Elija un enlace eu,v con costo mínimo tal que u
pertenece a Vnew y v no pertenece a Vnew. Si existe un empate,
se puede elegir aleatoriamente cualquiera de los enlaces.
– Paso 3: Agregue v al conjunto Vnew. Agregue el enlace eu,v al
conjunto Enew.
– Paso 4: Si el conjunto Vnew no es igual a V, vaya al paso 2.
– Paso 5: Salida del algoritmo, Enew.

Adaptado de: http://en.wikipedia.org/wiki/Prim%27s_algorithm


Enrutamiento
Multicast

Tomado de:
http://net.pku.edu.cn/~course/
cs101/2007/resource/Intro2Algorithm/
book6/508_a.gif
Enrutamiento Multicast
Enrutamiento Multicast
Enrutamiento Multicast
Enrutamiento Multicast

Você também pode gostar