Sunteți pe pagina 1din 5

(7.

AlgoritmoVoraz)
Shortest Path
Ahora vamos a un problema un poco ms aplicado, Voracidad insaciable? Se ve fcil. Sin embargo no siempre
El camino ms corto. nos lleva a la (mejor) solucin.

La mesa debe estar servida


El problema trata que, dado un par de vrtices,
encontrar el camino ms corto entre ellos.
Con un rbol de bsqueda, podemos usar tiempos
largos y espacios grandes.

Para evitar tanto malgasto de recursos, podemos


usar algunas tcnicas avanzadas de programacin.
Una de ellas se denomina Algoritmos Voraces:
- Paradigma de programacin que asume que una para que un voraz sacie su hambre.
decisin ptima local nos llevar a un ptimo global.
Ejemplo Un ejemplo clsico es el menor vuelto, que trata
de entregar la menor cantidad de monedas al dar vuelto o
sencillo.

Si queremos entregar vuelto de 536 pesos, podemos dar:

El menor vuelto cmo entonces encontrar la menor


combinacin de monedas en tiempo razonable?:
Solucin Voraz: Asumir que el mximo local nos lleva al
global: Necesitamos 536 en monedas.
Un problema debe tener subestructura optimal y ser una
matroide para siempre encontrar la mejor solucin.
En caso de no ser una matroide, puede en algunos casos
encontrar la mejor solucin.
(8. ProgDinamica)
Si el problema posee una subestructura optimal, pero no
es una matroide, podemos optar por Programacin
Dinmica:
Programacin dinmica trata de resolver los
subproblemas slo una vez para resolver el problema
general.
Un ejemplo clsico de un problema que es una matroide Cuntas repeticiones!
es el problema del rbol de cobertura mnimo. Como se observa en el rbol de resolucin, se calculan
Dado un grafo con pesos, se pide encontrar el rbol varias veces el mismo elemento:
mnimo que contenga todos los nodos. Programacin dinmica resuelve slo 1 vez cada
subproblema y lo almacena en alguna estructura de fcil
acceso posterior.
Al proceso de almacenar resultados previos se le
denomina memoizacin.
Es destacable que se diferencia de memorizacin. La
palabra viene de memorandum, usado tambin en la
Demostracin de Matroide palabra memo.
Requisitos para Programacin Dinmica
Tener Subestructura Optimal.
El problema tiene sub-problemas superpuestos.
Esto quiere decir que si el problema se divide en
subproblemas, estos son reusados muchas veces.
Otra forma es que el grafo de solucin no sea un rbol.
Grafo de resolucin de Fibonacci

De esta manera, podemos usar una estrategia Voraz para


resolverlo:
En la literatura, el algoritmo de Prim (1930) resuelve dicho
dilema.

Un grafo es un rbol si existe un solo camino entre 2


vrtices cualesquiera.
Implementacin Programacin Dinmica
- TopDown (como ya vimos)
- BottomUp

Conclusiones Ejemplo novel!


La estrategia Voraz trata de resolver un problema Un ejemplo siempre interesante de
buscando mnimos locales. programacin dinmica es el Dijkstra.
El problema del camino ms corto, como ya
vimos, tiene subestructura optimal, y adems Problema de las N-Reinas:
su grafo no es un rbol. Ubique N Reinas en un tablero
Algoritmo de Dijkstra de NxN sin que stas se
Cada nodo se le asigna el valor infinito (menos el inicio, ataquen entre s.
que es 0). Todo nodo se marca como no visitado.
Desde el nodo actual, calcule el valor (suma entre valor
nodo actual ms peso del vrtice) de sus vecinos no
visitados. Si es menor que el valor anterior del vecino, El problema de las
actualice. N-Reinas no posee
Marque el nodo actual como visitado. subestructura optimal:
Si el nodo meta fue visitado, pare. Cada subestructura
Muvase al no vistado con menor valor y vaya a 2. depende de las dems.
Ms ejemplos?
Existen muchsimos algoritmos que usan programacin Cmo resolvemos el problema?
dinmica en la actualidad: Por fuerza bruta, podemos demorarnos una enormidad:
Soluciones recurrentes en DNA. App. 1012 combinaciones para un tablero de 8x8.
Induccin Backward. Para ahorrarnos posibilidades, usaremos backtracking.
Ecuacin de Bellman. Backtracking
De Boor. Es una meta-heurstica que trata de podar el rbol de
Multiplicacin de cadenas de matrices. bsqueda, el cul se va generando de manera dinmica.
Se descartan soluciones intermedias que se puede
Y si el problema no se superpone? determinar no llegarn a una solucin.
Si slo poseemos la propiedad de subestructura optimal, La bsqueda se hace en profundidad.
usamos divide y vencers. Para realizar backtracking, necesitamos:
Divide y vencers es un paradigma que divide el problema - Punto de partida del rbol.
en subproblemas ms pequeos. - Funcin de rechazo.
Ejemplos? - Funcin de aceptacin.
- Funciones de hijo (primero y siguiente).
- Funcin de Output (completar).
Ejemplo con 8-Reinas
Punto de partida del rbol:
- Tablero vaco.
Funcin de rechazo:
- Reinas se amenazan.
Funcin de aceptacin:
(9. BackTracking) - 8 Reinas puestas en juego.
Sabemos que Funciones de hijo (primero y siguiente):
Si el problema tiene subestructura optimal: - Poner 1 reina ms en el prximo espacio.
Y es una matroide, usamos Voraz. Funcin de Output (completar):
Y tiene soluciones sobrepuestas, usamos Dinmica. - No aplica en este caso.
Sino, usamos Divide y vencers. PseudoCdigo
Qu pasa en otro caso? procedure backtracking(c)
Suponga el siguiente problema if reject(P,c) then return
if accept(P,c) then output(P,c)
s first(P,c)
while s do universo.
backtracking(s) Tipos de Algoritmos Probabilsticos
s next(P,s) - Algoritmos Numricos.
Qu tan eficiente es BackTracking? - Algoritmos Monte Carlo.
Funcin de rechazo. - Algoritmos Las Vegas
- Mientras ms cerca de la raz, mejor. Algoritmos Numricos
Funcin de aceptacin. - Estos algoritmos dan una respuesta aproximada al
- Mientras ms cerca de la raz, mejor. problema que se quiere resolver.
Funciones de hijo (primero y siguiente): - Su precisin mejora conforme se realizan ms ciclos de
- Mientras ms restrictiva, mejor. iteracin.
Funcin de Output (completar): - Ejemplo: Teorema de Buffon
- Mientras ms eficiente, mejor.
Cundo aplicar BackTracking?

Ejemplos de CSPs
- Aritmtica Verbal.
- Coloracin de mapas.
- Crucigramas.
- Sudokus.
- N-Reinas.
(10. Algoritmos Probabilsticos)
Los algoritmos probabilsticos son aquellos que introducen
elementos al azar dentro de su lgica. Ejemplo 2: Integracin de Monte Carlo
Puede que el tiempo, la memoria o la respuesta sean No confundir con algoritmos Monte Carlo.
afectados positivamente (o negativa con baja probabilidad) La integracin de Monte Carlo sirve para aproximar
por el azar. numricamente el valor de una integral compleja a travs
Probabilstico VS Determinismo del azar.
Usados incluso hoy para integraciones de varios grados.
Se puede demostrar matemticamente que:

De esta manera, podemos aproximar el resultado con el


siguiente algoritmo:
funcin MonteCarlo(f,n,a,b)
Por qu Algoritmos Probabilsticos? suma = 0
Hay muchos problemas que un algoritmo determinista no para i=1 hasta n
da una solucin (en tiempo razonable). x = uniforme(a,b)
Por ello, es mejor obtener una respuesta rpida que sea suma = suma + f(x)
con alta probabilidad correcta, que esperar la edad del devolver (b-a)(suma/n)
Algoritmos Monte Carlo El mejor algoritmo BackTracking visita 114 nodos para
Se utilizan cuando no existen formas eficientes de resolver resolver el problema.
un problema de otra manera. Estrategia Las Vegas: Intercambia columnas, cada una con
Estos algoritmos dan la respuesta exacta, pero puede dar una posicin de reina diferente.
una solucin errada, con probabilidad baja.
Mientras ms larga la ejecucin, mayor es la probabilidad
de que la respuesta se la correcta.
Se le dice a un algoritmo tipo Monte Carlo p-correcto si:
La solucin regresada es correcta con probabilidad p>0,5,
no importando el dato de entrada
p puede depender del tamao de la entrada, pero no de
los datos de la entrada. Si comparamos 114 con ~56, es menos de la mitad!.
Ejemplo: Test de Primalidad No parece tan impresionante, no?.
Problema de las 39 reinas:
- BackTracking: 11.402.835.415 nodos.
- Algoritmo Las Vegas: <10.000 nodos.
Estamos hablando de 41 horas de proceso contra 150
milisegundos!
Ejemplo para MC y LV

Si el algoritmo entrega falso, sabemos que el nmero no


es primo.
Si entrega verdadero, no podemos asegurar nada.
Sin embargo, la mayora de los nmeros no primos
contienen pocos a que cumplen con la propiedad.
Pero hay algunos que no, por lo que, en general, no es Anlisis solucin Las Vegas
p-correcto.
Algoritmos Las Vegas
El algoritmo tipo Las Vegas funciona similar a Monte Carlo,
pero cuando no puede dar una respuesta correcta, lo
admite.
Se distinguen 2 sub-tipos en general:
A) Siempre encuentra una solucin correcta. Si el azar no
beneficia a la ejecucin, esta tomar ms tiempo.
B) A veces no es capaz de dar una solucin, lo cual admite.
Ejemplo: Tipo Sherwood Anlisis solucin Monte Carlo
El ejemplo de QuickSort probabilstico es un Las Vegas tipo
Sherwood.
Quita a los ricos, da a los pobres.
Los casos catastrficos son muy frecuentes, por lo que el
algoritmo prefiere al azar determinar los elementos que
hacen ms rpida o ms lenta una ejecucin.
Ejemplo: Problema de las N reinas
Veamos un ejemplo menos bsico: Asumamos el
problema de las 8 reinas.

S-ar putea să vă placă și