Sunteți pe pagina 1din 28

Razonamiento Explcito y

Experimentacin en la
Algoritmia
J. ngel Velzquez Iturbide
Departamento de Lenguajes y Sistemas Informticos
Universidad Rey Juan Carlos
angel.velazquez@urjc.es
Reflexiones sobre la
Docencia de la Algoritmia
J. ngel Velzquez Iturbide
Departamento de Lenguajes y Sistemas Informticos
Universidad Rey Juan Carlos
angel.velazquez@urjc.es
Seminario de Investigacin e Innovacin
en Tecnologas del Software
Jornada sobre Innovacin e
Investigacin en la Algoritmia
ndice
1. Introduccin
2. Diseo grueso de algoritmos
3. Diseo fino de algoritmos
4. Anlisis de algoritmos
5. Conclusiones
Seminario de Investigacin e Innovacin
en Tecnologas del Software
Jornada sobre Innovacin e
Investigacin en la Algoritmia
1. Introduccin
Importancia de la Algoritmia:
ACM Computing Curricula
Troncalidad en planes de estudios
espaoles
Algunas reflexiones basadas en mi
experiencia investigadora y docente
Seminario de Investigacin e Innovacin
en Tecnologas del Software
Jornada sobre Innovacin e
Investigacin en la Algoritmia
2. Diseo Grueso de Algoritmos
Suele basarse en tcnicas de diseo:
Un esquema o patrn que puede aplicarse a una
clase amplia de problemas
Enfoque ingenieril
Punto de vista docente: ayuda al alumno
Tcnicas ms frecuentes:
Divide y vencers
Algoritmos voraces
Programacin dinmica
Bsqueda en espacios de estados en rbol
Otras tcnicas
Seminario de Investigacin e Innovacin
en Tecnologas del Software
Jornada sobre Innovacin e
Investigacin en la Algoritmia
2.1. Definicin de las Tcnicas de
Diseo
Definiciones compuestas:
Esquema de cdigo
Caracterizacin de los problemas:
Tipos de datos
Restricciones semnticas. P.ej. vuelta atrs:
P(x
1
,...,x
i+1
) P(x
1
,...,x
i
)
o
P(x
1
,,x
i
) P(x
1
,...,x
i+1
)
Metodologas de diseo
Seminario de Investigacin e Innovacin
en Tecnologas del Software
Jornada sobre Innovacin e
Investigacin en la Algoritmia
2.1. Definicin de las Tcnicas de
Diseo
Confusiones frecuentes:
Bsqueda exhaustiva vs. vuelta atrs
Recursividad mltiple vs. programacin
dinmica:
P.ej. nmeros de Fibonacci
Programacin dinmica incluye:
problema optimizacin satisface principio optimidad
algoritmo directo con recursividad mltiple redundante
optimizacin del algoritmo mediante tabulacin
Seminario de Investigacin e Innovacin
en Tecnologas del Software
Jornada sobre Innovacin e
Investigacin en la Algoritmia
2.2. Metodologas de Diseo
Programacin dinmica:
1. Comprobar que el problema cumple el principio
de optimidad
2. Disear un algoritmo recursivo mltiple: resolver
el problema en etapas (incrementalmente)
3. Tabular el algoritmo anterior:
a. Obtener un rbol de recursin
b. Obtener el grafo de dependencia
c. Determinar un orden lineal de cmputo
d. Determinar el tamao mnimo de la tabla necesaria
e. Implementar un algoritmo iterativo a partir de (c) y (d)
Seminario de Investigacin e Innovacin
en Tecnologas del Software
Jornada sobre Innovacin e
Investigacin en la Algoritmia
2.2. Metodologas de Diseo
Problema de la mochila 0/1:

ps=(3,6,9,5)
bs=(7,2,8,4)
c=15

+ + +
< +
=
contrario caso en ps p i m bs p i m mx
ps p si p i m
p i m
i i
i
) , 1 ( ), , 1 ( (
) , 1 (
) , (
0 ) , 1 ( = + p n m
Seminario de Investigacin e Innovacin
en Tecnologas del Software
Jornada sobre Innovacin e
Investigacin en la Algoritmia
2.2. Metodologas de Diseo
Problema de la mochila 0/1:

ps=(3,6,9,5)
bs=(7,2,8,4)
c=15
Seminario de Investigacin e Innovacin
en Tecnologas del Software
Jornada sobre Innovacin e
Investigacin en la Algoritmia
2.2. Metodologas de Diseo
Problema de la mochila 0/1:

ps=(3,6,9,5)
bs=(7,2,8,4)
c=15
Seminario de Investigacin e Innovacin
en Tecnologas del Software
Jornada sobre Innovacin e
Investigacin en la Algoritmia
2.2. Metodologas de Diseo
Problema de la mochila 0/1:
Seminario de Investigacin e Innovacin
en Tecnologas del Software
Jornada sobre Innovacin e
Investigacin en la Algoritmia
2.3. Catalogaciones de Tcnicas de
Diseo
Problemas con las tcnicas usuales:
Distinto nivel de generalidad de las tcnicas
Incapacidad de incluir otras tcnicas (p.ej.
particin binaria o fuerza bruta)
Propuesta no jerrquica (no permite
agrupar y relacionar tcnicas)
Incapacidad de clasificar muchos algoritmos
clsicos (p.ej. Euclides, de dispersin, etc.)
Seminario de Investigacin e Innovacin
en Tecnologas del Software
Jornada sobre Innovacin e
Investigacin en la Algoritmia
2.3. Catalogaciones de Tcnicas de
Diseo
Propuesta de Ananin Levitin:
Seminario de Investigacin e Innovacin
en Tecnologas del Software
Jornada sobre Innovacin e
Investigacin en la Algoritmia
2.3. Catalogaciones de Tcnicas de
Diseo
Propuesta de Alsuwaiyel:
Seminario de Investigacin e Innovacin
en Tecnologas del Software
Jornada sobre Innovacin e
Investigacin en la Algoritmia
2.4. Relaciones entre Tcnicas de
Diseo
Relaciones evidentes:
Tcnicas de bsqueda en espacios de
estados en rbol
Relaciones no evidentes:
Programacin dinmica vs. bsqueda en
espacios de estados en rbol
Seminario de Investigacin e Innovacin
en Tecnologas del Software
Jornada sobre Innovacin e
Investigacin en la Algoritmia
2.4. Relaciones entre Tcnicas de
Diseo
Problema de la
mochila 0/1:

+ + +
< +
=
contrario caso en ps p i m bs p i m mx
ps p si p i m
p i m
i i
i
) , 1 ( ), , 1 ( (
) , 1 (
) , (
0 ) , 1 ( = + p n m
Seminario de Investigacin e Innovacin
en Tecnologas del Software
Jornada sobre Innovacin e
Investigacin en la Algoritmia
2.4. Relaciones entre Tcnicas de
Diseo
Otras relaciones:
(a) Bsqueda exhaustiva (b) Vuelta atrs
(c) Programacin dinmica (d) Algoritmos voraces
Seminario de Investigacin e Innovacin
en Tecnologas del Software
Jornada sobre Innovacin e
Investigacin en la Algoritmia
3. Diseo Fino de Algoritmos
Decisiones menores que influyen
decisivamente en la forma del cdigo
final
Seminario de Investigacin e Innovacin
en Tecnologas del Software
Jornada sobre Innovacin e
Investigacin en la Algoritmia
3.1. Manipulacin de Algoritmos y
Mejora de su Eficiencia
Transformaciones de programas
Ejemplo de equivalencia:
if (cond) sentencia-then else sentencia-else
if (!cond) sentencia-else else sentencia-then
Ejemplo de optimizacin (Hrner):
p
n
(x) = c
n
x
n
+ c
n-1
x
n-1
+ + c
1
x + c
0
p
n
(x) = (((c
n
x + c
n-1
)x + c
n-2
)x + )x + c
0

Seminario de Investigacin e Innovacin
en Tecnologas del Software
Jornada sobre Innovacin e
Investigacin en la Algoritmia
3.2. Eliminacin de la Recursividad
Operacin implcita en la presentacin
del cdigo final:
Algoritmos voraces: conversin de la
recursividad lineal en iteracin
Programacin dinmica: eliminacin de la
recursividad mltiple
Seminario de Investigacin e Innovacin
en Tecnologas del Software
Jornada sobre Innovacin e
Investigacin en la Algoritmia
3.3. Visualizaciones del
Comportamiento
Visualizaciones ad hoc para problemas
Visualizaciones generales:
rbol de recursin
Grafo de dependencia
Visualizaciones para una tcnica:
rboles de bsqueda
Tablas
Seminario de Investigacin e Innovacin
en Tecnologas del Software
Jornada sobre Innovacin e
Investigacin en la Algoritmia
3.3. Visualizaciones del
Comportamiento
n producir equvocos:
Permutaciones:


(x1,x2,x3)
(x1)
( )
i = 1
i = 3
i = 2
(x1,x2)

(x1,x2,x3)
(x1)
( )
(x1,x2)
Seminario de Investigacin e Innovacin
en Tecnologas del Software
Jornada sobre Innovacin e
Investigacin en la Algoritmia
3.4. Codificacin de los Algoritmos
Problemas con algunos algoritmos:
Codificacin engorrosa (p.ej. Strassen)
Salida compleja:
Se piden todas las soluciones
Problemas de optimizacin: valor y secuencia
de decisiones
Algoritmos voraces: ordenacin previa
Seminario de Investigacin e Innovacin
en Tecnologas del Software
Jornada sobre Innovacin e
Investigacin en la Algoritmia
4. Anlisis de Algoritmos
Complejidad asinttica: enfoque formal
Tomar medidas de ejecucin: enfoque
experimental
Medir tiempo de ejecucin
Planificacin cuidadosa del experimento
Seminario de Investigacin e Innovacin
en Tecnologas del Software
Jornada sobre Innovacin e
Investigacin en la Algoritmia
4.1. Anlisis del Espacio
Medida de la eficiencia citada pero
frecuentemente ignorada
Razn para mostrar algoritmos voraces
en formato iterativo
Compromisos espacio-tiempo:
Algoritmos recursivos eficientes (p.ej.
ordenacin)
Comprobaciones incrementales en vuelta
atrs
Seminario de Investigacin e Innovacin
en Tecnologas del Software
Jornada sobre Innovacin e
Investigacin en la Algoritmia
4.2. Otras Medidas Experimentales
de Rendimiento
Nmero de veces de ejecucin de una
operacin clave
Algoritmos recursivos:
Nmero de llamadas recursivas
Profundidad mxima de recursin
Vuelta atrs:
Nmero de nodos realmente generados
Porcentaje sobre nmero potencial
Seminario de Investigacin e Innovacin
en Tecnologas del Software
Jornada sobre Innovacin e
Investigacin en la Algoritmia
5. Conclusiones
Reflejado algunas reflexiones sobre la
docencia de los algoritmos: problemas y
soluciones
Cuestiones no abordadas:
Cuestiones pedaggicas y organizativas:
laboratorios, aprendizaje activo, etc.
Relacin (y trasvases) con otras
asignaturas

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