::web del profesor:: - algoritmos de las vegas · 2005. 6. 17. · variable que almacena el...

22
ALGORITMOS DE LAS VEGAS Con suerte voy más rápido... Diseño y Análisis de Algoritmos Cátedra de Programación Carrera de Ingeniería Sistemas Laudin Alessandro Molina

Upload: others

Post on 28-Aug-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ::WEB DEL PROFESOR:: - ALGORITMOS DE LAS VEGAS · 2005. 6. 17. · Variable que almacena el resultado del algoritmo. Lógico: exito. Variable que controla el éxito o fracaso de la

ALGORITMOS DE LAS VEGAS

Con suerte voy más rápido...

Diseño y Análisis de AlgoritmosCátedra de Programación

Carrera de Ingeniería SistemasLaudin Alessandro Molina

Page 2: ::WEB DEL PROFESOR:: - ALGORITMOS DE LAS VEGAS · 2005. 6. 17. · Variable que almacena el resultado del algoritmo. Lógico: exito. Variable que controla el éxito o fracaso de la

ALGORITMOS DE LAS VEGAS

Utilizan “azar” para alcanzar una solución correcta más rápido que un algoritmo determinista.

Siempre alcanzan una solución correcta o reconocen una solución errónea.

Laudin Alessandro Molina Junio 2005

Page 3: ::WEB DEL PROFESOR:: - ALGORITMOS DE LAS VEGAS · 2005. 6. 17. · Variable que almacena el resultado del algoritmo. Lógico: exito. Variable que controla el éxito o fracaso de la

Existe dos tipos de algoritmos Las Vegas:

a) Los que siempre encuentra una solución correcta, aunque las decisiones tomadas no fueran las óptimas.

b) Los que no encuentran una solución y deben reiniciar la ejecución del algoritmo tomando decisiones aleatorias diferentes.

ALGORITMOS DE LAS VEGAS

Laudin Alessandro Molina Junio 2005

Page 4: ::WEB DEL PROFESOR:: - ALGORITMOS DE LAS VEGAS · 2005. 6. 17. · Variable que almacena el resultado del algoritmo. Lógico: exito. Variable que controla el éxito o fracaso de la

Tipo a:Cuando existe una solución determinista, que es

mucho más rápida en el caso medio que en el peor caso, podemos introducir aleatoriedad para reducir o

eliminar la aparición de los casos malos.

La idea es lograr uniformidad en los tiempos de ejecución sin importar el caso.

ALGORITMOS DE LAS VEGAS

Laudin Alessandro Molina Junio 2005

Page 5: ::WEB DEL PROFESOR:: - ALGORITMOS DE LAS VEGAS · 2005. 6. 17. · Variable que almacena el resultado del algoritmo. Lógico: exito. Variable que controla el éxito o fracaso de la

Tipo a:Este tipo tiene un efecto “Robin Hood”, pues roban tiempo a los casos rápidos para dárselo a los casos

lentos.

ALGORITMOS DE LAS VEGAS

Laudin Alessandro Molina Junio 2005

Page 6: ::WEB DEL PROFESOR:: - ALGORITMOS DE LAS VEGAS · 2005. 6. 17. · Variable que almacena el resultado del algoritmo. Lógico: exito. Variable que controla el éxito o fracaso de la

Tipo a:Tomemos por ejemplo, el problema de selección, que tiene un algoritmo determinista con un tiempo logarítmico en el caso promedio, pero que puede

llegar a ser cuadrático en el peor caso.

ALGORITMOS DE LAS VEGAS

Laudin Alessandro Molina Junio 2005

Page 7: ::WEB DEL PROFESOR:: - ALGORITMOS DE LAS VEGAS · 2005. 6. 17. · Variable que almacena el resultado del algoritmo. Lógico: exito. Variable que controla el éxito o fracaso de la

ALGORITMOS DE LAS VEGAS

Mérida, Junio 2005

seleccion(Arreglo de Enteros[1..n]: T, Entero: k): Entero

{pre: n > 0, 0 < k < n+1}  {pos: n > 0, 0 < k < n+1}

i, j = 1, n

( i < j )[

m = T[1]

particionar(T, i, j, m, u, v)

si ( k < u ) entonces

j = u­1

sino si( k > v ) entonces 

i = v+1

sino entonces

i, j= k, k

f_si

]

Regresar T[i]

Auxiliar Entero: i, j, m, u, v. Almacenan los limites delarreglo.

particionar: función que particiona un arreglo, colocalos elementos menores a “m” antes de “m” y losmayores que “m” despues de “m”

Laudin Alessandro Molina Junio 2005

Page 8: ::WEB DEL PROFESOR:: - ALGORITMOS DE LAS VEGAS · 2005. 6. 17. · Variable que almacena el resultado del algoritmo. Lógico: exito. Variable que controla el éxito o fracaso de la

ALGORITMOS DE LAS VEGASMérida, Junio 2005

particionar(Arreglo de Enteros[1..n]: T, Entero: i, j, m, u, v)

{pre: n > 0}                                                                 {pos: n > 0}

u, v = i,i

[ele = T[k]

si( ele < m ) entonces

T[k] = T[v]

T[v] = T[u]

T[u] = ele

u, v = u+1, v+1

sino si( ele = m )

T[k] = T[v]

T[v] = elev = v+1

f_si

]k = i, k <= n

v = v­1

Auxiliar Entero: i, j. Almacenan los limites del arregloque se esta evaluando.

Las variables u y v debe ser pasadas como referencia, esnecesario que conserven su valor luego de terminar lacorrida

Laudin Alessandro Molina Junio 2005

Page 9: ::WEB DEL PROFESOR:: - ALGORITMOS DE LAS VEGAS · 2005. 6. 17. · Variable que almacena el resultado del algoritmo. Lógico: exito. Variable que controla el éxito o fracaso de la

ALGORITMOS DE LAS VEGAS

Mérida, Junio 2005

SeleccionLV(Arreglo de Enteros[1..n]: T, Entero: k): Entero

{pre: n > 0, 0 < k < n+1}                                                                {pos: n > 0, 0 < k < n+1}

i, j = 1, n

( i < j )[

m = T[uniforme(i, j)]

particionar(T, i, j, m, u, v)

si ( k < u ) entonces

j = u­1

sino si( k > v ) entonces 

i = v+1

sino entonces

i, j= k, k

f_si

]

Regresar T[i]

Auxiliar Entero: i, j, m, u, v. Almacenan los limites delarreglo.

particionar: función que particiona un arreglo, colocandolos elementos menores a “m” antes de “m” y los mayoresque “m” despues de “m”

uniforme: función que regresa un valor aleatorio entero ,perteneciente al rango [i,j]

Laudin Alessandro Molina Junio 2005

Page 10: ::WEB DEL PROFESOR:: - ALGORITMOS DE LAS VEGAS · 2005. 6. 17. · Variable que almacena el resultado del algoritmo. Lógico: exito. Variable que controla el éxito o fracaso de la

Tipo a:Los algoritmos de este tipo no son más rápidos que su contra-parte determinista cuando consideramos las media para todos los casos de un tamaño dado,

pero, con mucha probabilidad, los casos que requieren mucho tiempo con el método determinista

ahora se resuelven más rápido.

ALGORITMOS DE LAS VEGAS

Laudin Alessandro Molina Junio 2005

Page 11: ::WEB DEL PROFESOR:: - ALGORITMOS DE LAS VEGAS · 2005. 6. 17. · Variable que almacena el resultado del algoritmo. Lógico: exito. Variable que controla el éxito o fracaso de la

Tipo b:Se les permite tomar decisiones que llevan a un

callejón sin salida.

Deben ser capaces de reconocer cuando estén en un callejón sin salida.

Si fallan, se vuelven a ejecutar con la misma entrada.

ALGORITMOS DE LAS VEGAS

Laudin Alessandro Molina Junio 2005

Page 12: ::WEB DEL PROFESOR:: - ALGORITMOS DE LAS VEGAS · 2005. 6. 17. · Variable que almacena el resultado del algoritmo. Lógico: exito. Variable que controla el éxito o fracaso de la

Tipo b:Solo son aceptables si la probabilidad de finalizar

con éxito es razonable.

Resuelven problemas en los que no se conoce algoritmos deterministas eficientes.

El tiempo de ejecución no esta acotado pero sí es razonable con probabilidad deseada para toda

entrada.

ALGORITMOS DE LAS VEGAS

Laudin Alessandro Molina Junio 2005

Page 13: ::WEB DEL PROFESOR:: - ALGORITMOS DE LAS VEGAS · 2005. 6. 17. · Variable que almacena el resultado del algoritmo. Lógico: exito. Variable que controla el éxito o fracaso de la

Tiempo esperado de Las Vegas tipo bSupongamos el siguiente algoritmo:

ALGORITMOS DE LAS VEGAS

Mérida, Junio 2005

RepetirLV(TipoDato: x)

{pre: } {pos: }

[

LasVegas(x, y, exito)

]( exito )

Regresar y

TipoDato: y. Variable que almacena el resultado delalgoritmo.

Lógico: exito. Variable que controla el éxito o fracaso dela ultima ejecución de LasVegas

Laudin Alessandro Molina Junio 2005

Page 14: ::WEB DEL PROFESOR:: - ALGORITMOS DE LAS VEGAS · 2005. 6. 17. · Variable que almacena el resultado del algoritmo. Lógico: exito. Variable que controla el éxito o fracaso de la

Dado que cada llamada a LasVegas(x, y, exito) tiene una probabilidad de éxito p(x), el número esperado de

pasadas por el bucle es 1/p(x)

Sea v(x) el tiempo esperado de ejecuciones de LasVegas(x, y, exito) si devuelve exito y f(x) el tiempo

esperado si devuelve falso, entonces el tiempo esperado de repetirLV(x) es:

t(x)=p(x)v(x) + (1-p(x)) (f(x)+t(x))t(x)=v(x) + (1-p(x))/p(x) f(x)

ALGORITMOS DE LAS VEGAS

Laudin Alessandro Molina Junio 2005

Page 15: ::WEB DEL PROFESOR:: - ALGORITMOS DE LAS VEGAS · 2005. 6. 17. · Variable que almacena el resultado del algoritmo. Lógico: exito. Variable que controla el éxito o fracaso de la

Ejemplo de Las Vegas tipo b: El Problema de las 8 Reinas

Ubicar 8 reinas en un tablero de ajedrez de forma que no se amenacen entre si.

Solución: Colocar aleatoriamente las reinas y verificar que no

queden amenazadas unas con otras.

ALGORITMOS DE LAS VEGAS

Laudin Alessandro Molina Junio 2005

Page 16: ::WEB DEL PROFESOR:: - ALGORITMOS DE LAS VEGAS · 2005. 6. 17. · Variable que almacena el resultado del algoritmo. Lógico: exito. Variable que controla el éxito o fracaso de la

Algoritmo

ALGORITMOS DE LAS VEGAS

Mérida, Junio 2005

reinasLV(Arreglo de Enetero[1..8]: sol, logico: exito)

{pre: } {pos: }

col, diag45, diag135 = {}, {}, {}

[nb = 0

[ si( j !E col y j­k !E diag45 y j+k !E diag135) entonces

nb = nb+1

ok[nb] = j

f_si

]j = 0, j=8

si nb=0 entonces terminar exito = falso

j=ok[uniforme(1..nb)]

col, diag45, diag135 = col U {j}, diag45 U {j­k}, diag135 U {j+k}

sol[k+1] = j

] k=0, k=7

Regresar exito = verdadero

Entero: col, diag45, diag135.Almacenan las columnas y diagonalesque ya están ocupadas.

Entero Auxiliar: j, k

Laudin Alessandro Molina Junio 2005

Page 17: ::WEB DEL PROFESOR:: - ALGORITMOS DE LAS VEGAS · 2005. 6. 17. · Variable que almacena el resultado del algoritmo. Lógico: exito. Variable que controla el éxito o fracaso de la

La probabilidad de éxito es p(x) = 0.1293 y la cantidad esperada de nodos a visitar si se fracasa es f(x) = 6.971, lo que quiere decir que se obtiene una

solución más de una vez de entre ocho!

El número total de nodos visitados (repeticiones del primer bucle) será:

t(x) = 9 + (1-0.1293)/0.1293 * 6.971t(x) = 55.93

ALGORITMOS DE LAS VEGAS

Laudin Alessandro Molina Junio 2005

Page 18: ::WEB DEL PROFESOR:: - ALGORITMOS DE LAS VEGAS · 2005. 6. 17. · Variable que almacena el resultado del algoritmo. Lógico: exito. Variable que controla el éxito o fracaso de la

El método de vuelta atrás necesita visitar 114 nodos para encontrar la primera solución, mientras que con

el método de Las Vegas se espera encontrar una solución visitando 55.93 nodos.

¡La mitad de los Nodos!

ALGORITMOS DE LAS VEGAS

Laudin Alessandro Molina Junio 2005

Page 19: ::WEB DEL PROFESOR:: - ALGORITMOS DE LAS VEGAS · 2005. 6. 17. · Variable que almacena el resultado del algoritmo. Lógico: exito. Variable que controla el éxito o fracaso de la

Hay que tener en cuenta que el los algoritmos de Las Vegas utilizan números seudo-aleatorios, lo que puede generar algunas discrepancias entre el tiempo

esperado y el tipo real de corrida.

ALGORITMOS DE LAS VEGAS

Laudin Alessandro Molina Junio 2005

Page 20: ::WEB DEL PROFESOR:: - ALGORITMOS DE LAS VEGAS · 2005. 6. 17. · Variable que almacena el resultado del algoritmo. Lógico: exito. Variable que controla el éxito o fracaso de la

El algoritmo de Las Vegas es muy “derrotista”, es decir, cuando encuentra un fallo vuelve a empezar

desde el principio.

El algoritmo de Vuelta Atrás hace una búsqueda sistemática.

Una combinación de ambos produce un algoritmo más eficiente.

ALGORITMOS DE LAS VEGAS

Laudin Alessandro Molina Junio 2005

Page 21: ::WEB DEL PROFESOR:: - ALGORITMOS DE LAS VEGAS · 2005. 6. 17. · Variable que almacena el resultado del algoritmo. Lógico: exito. Variable que controla el éxito o fracaso de la

“Vuelta a Las Vegas”La Idea es ubicar algunas reinas de forma aleatoria y

luego situar las restantes sistemáticamente.¿cuantas reinas debemos situar aleatoriamente?

ALGORITMOS DE LAS VEGAS

Laudin Alessandro Molina Junio 2005

Page 22: ::WEB DEL PROFESOR:: - ALGORITMOS DE LAS VEGAS · 2005. 6. 17. · Variable que almacena el resultado del algoritmo. Lógico: exito. Variable que controla el éxito o fracaso de la

Utilizando un computador hacemos corridas de prueba y calculamos la probabilidad de éxito (p), el número esperado de nodos a visitar en caso de éxito (v) y el

número esperado de nodos en caso de fracaso (f)No Reinas p v f t

0 1,0000 114,00 0,00 114,00

1 1,0000 39,63 0,00 39,63

2 0,8750 22,53 39,67 28,20

3 0,4931 13,48 15,10 29,01

4 0,2618 10,31 8,79 35,10

5 0,1624 9,33 7,29 46,92

6 0,1357 9,05 6,98 53,50

7 0,1293 9,00 6,97 55,93

8 0,1293 9,00 6,97 55,93

ALGORITMOS DE LAS VEGAS

Laudin Alessandro Molina Junio 2005