Algoritmos
ávidos
Algoritmos ávidos (greedy)
ALGORITMO DE DIJKSTRA
ALGORITMO DE DIJKSTRA ( Ejemplo )
Ejemplo greedy (mochila) Un turista quiere hacer un buen viaje el fin de semana con sus amigos. Van a ir a las montañas para ver las maravillas de la naturaleza, por lo que necesita empacar bien para el viaje. Él tiene una buena mochila para llevar cosas, pero sabe que puede llevar un máximo de 4 kg solamente y tendrá que durar todo el día. Se crea una lista de lo que quiere llevar para el viaje, pero el peso total de todos los artículos es demasiado. Entonces decide agregar columnas a su lista inicial que detalla sus pesos y un valor numérico que representa la importancia de el artículo para el viaje.
ITEM PESO Mapa 9 Compas 13 agua 153 sándwich 50 glucosa 15 estaño 68 banana 27 manzana 39 queso 23 cerveza 52 crema solar 11
VALOR ITEM 150 VALOR 35 Cámara 200 30 160 camiseta 15 60 45 Pantalones 60 10 40 sombrilla 30 40 10 pantalones impermeables 70 70 ropa impermeable 75 nota de los casos 80 gafas de sol 20
PESO 32 24 48 73 42 43 22 7
ALGORITMOS DIVIDE Y VENCERAS
Divide
Ventajas: •Simplificación. •Recursividad.
y
Vencerás
ALGORITMOS DIVIDE Y VENCERAS
TORRES DE HANOI « DIVIDE Y VENCERAS »
Este juego (un algoritmo clásico) tiene sus orígenes en la cultura oriental y en una leyenda sobre el Templo de Brahma, cuya estructura simulaba una plataforma metálica con tres varillas y discos en su interior. El problema en cuestión suponía la existencia de 3 varillas (A, B y C) o postes en los que se alojaban discos (n discos) que se podían trasladar de una varilla a otra libremente, pero con una condición: cada disco era ligeramente inferior en diámetro al que estaba justo debajo de él.
ALGORITMO DE ORDENACION QUICKSORT
ALGORITMO DE ORDENACION QUICKSORT
FUNCIONAMIENTO
METODOS DE RETROCESO (Backtracking)
Sudoku resuelto mediante vuelta atrás. Método que descarta un gran número de conjuntos de soluciones, sin enumerar explícitamente cada una de las mismas.
METODOS DE RETROCESO (Backtracking) procedimiento ensayarSolución Inicio
repetir <determinar si selección es valida> si válido entonces si <problema solucionado> entonces exito = true si no ensayarSolución {llamada para realizar otra tarea} { vuelta atrás, se analiza si se ha alcanzado la solución del problema } si no exito entonces {el bucle se encarga de probar con otra selección} fin _ si fin _ si fin _ si hasta (exito) o (<no más posibilidades>)
METODOS DE RETROCESO (Backtracking) Problema de las ocho reinas
Dado un tablero de ajedrez (8 x 8 casillas), hay que situar ocho reinas de forma que ninguna de ellas pueda actuar (“comer”) sobre ninguna de las otras.
BIBLIOGRAFIA
• http://es.slideshare.net/luzenith_g/algoritmos-voraces-greedy •http://rosettacode.org/wiki/Knapsack_problem/0-1#Java •http://webdiis.unizar.es/asignaturas/EDA/ea/slides/2-Algoritmos%20Voraces.pdf •libro estructuras de datos joyanes edicion 1.