2. El diagrama de
flujo o diagrama
de actividades es
la representación
gráfica de
un algoritmo o
proceso
3. Top Down – Modularización (Divide y vencerás).
La técnica Dividir para Conquistar (o Divide y
Vencerás) consiste en descomponer el caso que
hay que resolver en subcasos más pequeños,
resolver independientemente los subcasos y por
último combinar las soluciones de los subcasos
para obtener la solución del caso original.
4. Top Down – Modularización (Divide y vencerás).
5. Top Down – Modularización (Divide y vencerás).
En el ejemplo se dividió el problema original en 3 módulos o
tareas.
Como cada tarea aún era compleja, se la volvió a dividir en
subtareas.
El proceso debe continuar con todas aquellas subtareas que
puedan ser refinadas, hasta llegar a un punto donde todas las
subtareas o módulos contienen acciones primitivas
entendibles por la computadora.
6. Fuerza bruta
Este método es sencillo pero ineficiente: la
idea es elegir entre las múltiples alternativas
de solución posible, una solución poco
reflexionada y luego mejorarla hasta obtener
una solución adecuada.
Por ejemplo, buscar una palabra en un
diccionario en forma secuencial. Cuánto
tiempo demanda el proceso de búsqueda
teniendo que leer una por una las palabras del
diccionario?
7. Método ávido o voraz.
Los algoritmos ávidos o voraces construyen la
solución en etapas sucesivas, tratando siempre
de tomar la decisión óptima para cada etapa.
Supone que si en cada etapa elige el óptimo
local, la solución que obtenga será a través del
óptimo global.
Por ejemplo: dar cambio con la menor cantidad
de monedas.
8. Método ávido o voraz.
Supongamos tener billetes de $11, $5 y de $1,
y nos piden cambio de $15. El método voraz
propone empezar a dar cambio desde el billete
de mayor denominación al de menor. Así
daríamos un billete de $11 y cuatro billetes de
$1.
Si aplicáramos otro método podríamos darle 3
billetes de $5 y mejoramos la solución anterior.
No siempre la mejor solución a un caso
particular, es la mejor solución global.
9. Recursión
La recursividad es una técnica fundamental en el
diseño de algoritmos eficientes, que está basada
en la solución de versiones más pequeñas del
mismo problema, para obtener la solución general
del mismo.
La recursión permite resolver un problema T en
términos de un subproblema T’, de igual
naturaleza que el original, pero de menor tamaño.
Por ejemplo: factorial – buscar la palabra en
diccionario dividiéndolo en mitades
10. Recursión
Por ejemplo: factorial. Su definición es recursiva.
0!=1
n!=n*(n-1)!
Para calcular el factorial de 3hay que hacer:
3!= 3 *2! ahora debo calcular 2! Que es el mismo
problema que el original pero con un número más
pequeño.
2!=2*1! debo calcular el 1!
1!=1* 0! reemplazo y me queda 1!=1*1 1
Reemplazo en los pasos previos 2!=2*1 2
3!=3*2 6 que es el valor final.
11. El diseño Backtracking o Vuelta Atrás
proporciona una manera sistemática de
generar todas las posibles soluciones.
Podríamos hablar de un proceso de prueba y
error en el cual se va trabajando por etapas
construyendo gradualmente una solución.
Ejemplo: el cálculo del factorial, el juego de
las 9 reinas
12. Ejemplo: el cálculo del factorial, el juego de las 9
reinas
El resultado del factorial se construye en el camino de
regreso luego de haber obtenido el valor del factorial
de 1. Se reemplaza cada resultado en el paso previo y
se obtiene un resultado parcial.
En el caso del juego de tablero, en cada paso se coloca
la reina en una posición del tablero y se observa que
no se la coma ninguna otra pieza (no puede estar en la
misma diagonal o recta que otra pieza). Si en la
ubicación actual la reina queda mal ubicada, entonces
hay que deshacer ese paso, volver un paso atrás y
probar con otra ubicación de la reina anterior. Y volver
a probar de ubicar la reina actual sin que la maten.
Notas del editor
Ejemplo monedas de 11, 5 y 1 cambio de 15={11,1,1,1,1} pero es menor con 5,5,5
Ejemplo monedas de 11, 5 y 1 cambio de 15={11,1,1,1,1} pero es menor con 5,5,5