Professional Documents
Culture Documents
Universidad de Salamanca
curso 2016-2017
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 1 / 289
Contenidos
1 Introduccin a la Algoritmia
2 Notacin asinttica
3 Anlisis de Algoritmos
5 Esquemas Algortmicos
1 Introduccin a la Algoritmia
Resolucin de problemas
La importancia de los algoritmos
Definiciones y conceptos bsicos
Algoritmo
Algoritmia
Dominio de definicin
La eficiciencia de los algoritmos
Operacin elemental
Introduccin a la Algoritmia Resolucin de problemas
1 Introduccin a la Algoritmia
Resolucin de problemas
La importancia de los algoritmos
Definiciones y conceptos bsicos
Algoritmo
Algoritmia
Dominio de definicin
La eficiciencia de los algoritmos
Operacin elemental
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 4 / 289
Introduccin a la Algoritmia Resolucin de problemas
1 Resolucin de Problemas
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 5 / 289
Introduccin a la Algoritmia Resolucin de problemas
Resolviendo el problema
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 6 / 289
Introduccin a la Algoritmia Resolucin de problemas
Resolviendo el problema
Ms formalmente
1 Introduccin a la Algoritmia
Resolucin de problemas
La importancia de los algoritmos
Definiciones y conceptos bsicos
Algoritmo
Algoritmia
Dominio de definicin
La eficiciencia de los algoritmos
Operacin elemental
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 8 / 289
Introduccin a la Algoritmia La importancia de los algoritmos
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 9 / 289
Introduccin a la Algoritmia La importancia de los algoritmos
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 10 / 289
Introduccin a la Algoritmia La importancia de los algoritmos
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 11 / 289
Introduccin a la Algoritmia Definiciones y conceptos bsicos
1 Introduccin a la Algoritmia
Resolucin de problemas
La importancia de los algoritmos
Definiciones y conceptos bsicos
Algoritmo
Algoritmia
Dominio de definicin
La eficiciencia de los algoritmos
Operacin elemental
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 12 / 289
Introduccin a la Algoritmia Definiciones y conceptos bsicos
Definicin (DRAE)
Conjunto ordenado y finito de operaciones que permite hallar la solucin
de un problema
Definicin ms informtica
Secuencia finita de reglas que proporcionan una secuencia de operaciones
para la resolucin de un determinado tipo de problema, bien sea a mano o,
ms frecuentemente, en una mquina
Algoritmo determinista
Para los mismos datos de entrada producen los mismos datos de salida
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 14 / 289
Introduccin a la Algoritmia Definiciones y conceptos bsicos
Ejemplo
Algoritmo ms conocido
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 15 / 289
Introduccin a la Algoritmia Definiciones y conceptos bsicos
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 16 / 289
Introduccin a la Algoritmia Definiciones y conceptos bsicos
Definicin: Algoritmo
Un algoritmo es un mtodo computacional que termina en un nmero
finito de pasos para todo x en I
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 17 / 289
Introduccin a la Algoritmia Definiciones y conceptos bsicos
Diseo de algoritmos
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 19 / 289
Introduccin a la Algoritmia Definiciones y conceptos bsicos
Algoritmia
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 20 / 289
Introduccin a la Algoritmia Definiciones y conceptos bsicos
2 5 9 6
x 1 2 3
Algoritmo 1.2 multiplicacinClsica(mo,mr) 7 7 8 8
Salida: Producto de mo y mr 2 5 9 6
1: resultado 0 3 1 9 3 0 8
2: mientras mr tenga cifras hacer
3: sumando cifra_mr mo 2 5 9 6
4: resultado resultado + x 1 2 3
10posici on_cifra_mr sumando 2 5 9 6
5: fin mientras 5 1 9 2
6: devolver resultado 7 7 8 8
3 1 9 3 0 8
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 21 / 289
Introduccin a la Algoritmia Definiciones y conceptos bsicos
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 24 / 289
Introduccin a la Algoritmia Definiciones y conceptos bsicos
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 25 / 289
Introduccin a la Algoritmia Definiciones y conceptos bsicos
Dominio de definicin
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 26 / 289
Introduccin a la Algoritmia Definiciones y conceptos bsicos
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 27 / 289
Introduccin a la Algoritmia Definiciones y conceptos bsicos
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 28 / 289
Introduccin a la Algoritmia Definiciones y conceptos bsicos
Qu estrategia es mejor?
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 29 / 289
Introduccin a la Algoritmia Definiciones y conceptos bsicos
Recursos considerados
Principio de invariancia
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 31 / 289
Introduccin a la Algoritmia Definiciones y conceptos bsicos
Unidad de medida
Resumiendo
No habr unidad para medir la eficiencia, nos limitaremos a decir que
el tiempo de ejecucin de un algoritmo ser t(n), es decir, una
funcin del tamao de los ejemplares
En unas mquinas el tiempo de ejecucin ser a t(n) y en otras ser
b t(n), siendo a y b sendas constantes reales
Por tanto, hablaremos de un tiempo requerido, salvo una constante
multiplicativa tiempo del orden de t(n)
Y en particular, nos interesar la forma en que se comporta el
algoritmo, como aumenta su tiempo de ejecucin, al aumentar el
tamao de los datos
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 32 / 289
Introduccin a la Algoritmia Definiciones y conceptos bsicos
Funciones tpicas
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 33 / 289
Introduccin a la Algoritmia Definiciones y conceptos bsicos
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 34 / 289
Introduccin a la Algoritmia Definiciones y conceptos bsicos
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 35 / 289
Introduccin a la Algoritmia Definiciones y conceptos bsicos
Operacin elemental
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 36 / 289
Introduccin a la Algoritmia Definiciones y conceptos bsicos
Operacin elemental
Problemas aadidos:
Suma, producto de nmeros enteros operacin elemental?. El
tiempo de ejecucin crece con el tamao de los operandos
Operaciones con nmeros reales: la precisin requerida. Problema
similar al anterior
No siempre operaciones aparentemente sencillas equivalen a
operaciones elementales. Puede haber dependencia de la
implementacin, tamao operandos, etc.
Sin embargo, generalmente, sumas, restas, multiplicaciones,
divisiones, operaciones mdulo, operaciones booleanas, comparaciones
y asignaciones se consideran operaciones elementales de coste unitario
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 37 / 289
Introduccin a la Algoritmia Definiciones y conceptos bsicos
Notacin
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 38 / 289
Introduccin a la Algoritmia Definiciones y conceptos bsicos
Notacin
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 39 / 289
Introduccin a la Algoritmia Definiciones y conceptos bsicos
Observaciones finales
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 40 / 289
Contenidos
1 Introduccin a la Algoritmia
2 Notacin asinttica
3 Anlisis de Algoritmos
5 Esquemas Algortmicos
Introduccin
Notacin El orden de
Notacin Omega
Notacin Theta
Notacin asinttica Introduccin
2 Notacin asinttica
Introduccin
Notacin El orden de
Notacin Omega
Notacin Theta
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 43 / 289
Notacin asinttica Introduccin
1 Introduccin
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 44 / 289
Notacin asinttica Introduccin
Un ejemplo
Sean dos algoritmos, A y B, que resuelven el mismo problema
A, requiere ejecutar ta (n) = 100n + 10 instrucciones
B, requiere ejecutar tb (n) = 2n2 instrucciones
Cul es mejor?
n ta (n) = 100n + 10 tb (n) = 2n2
1 110 2
2 210 8
3 310 18
4 410 32
5 510 50
6 610 72
... ... ...
50 5010 5000
51 5110 5202
52 5210 5408
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 45 / 289
Notacin asinttica Introduccin
Notacin asinttica
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 46 / 289
Notacin asinttica Notacin El orden de
2 Notacin asinttica
Introduccin
Notacin El orden de
Notacin Omega
Notacin Theta
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 47 / 289
Notacin asinttica Notacin El orden de
2 Notacin el orden de
Definicin del conjunto el orden de f (n)
Sea f : N R0 una funcin cualquiera. Se define:
Por t(n) O(f (n)) denotamos que la funcin t(n) es del orden
f (n) o que f (n) es una cota superior asinttica de t(n)
Podemos decir que t(n) est en el orden de f (n) incluso si:
t(n) es negativo: n3 3n2 n 8 < 0 para n 3
n
t(n) no est definido para un conjunto finito de valores: , para
log n
n=0yn=1
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 48 / 289
Notacin asinttica Notacin El orden de
Grficamente
t(n) es del orden f (n)
t(n) O(f (n)) f (n) es cota superior asinttica de t(n)
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 49 / 289
Notacin asinttica Notacin El orden de
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 50 / 289
Notacin asinttica Notacin El orden de
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 51 / 289
Notacin asinttica Notacin El orden de
Formalmente
Sean p, q : N R0 definidas para todo nmero natural n, y sea t(n) una
funcin arbitraria t : N R0
)
p(n) = f (n) + g(n)
t(n) O(p(n)) si y slo si t(n) O(q(n))
q(n) = max (f (n), g(n))
Regla til para demostrar que una funcin es del orden de otra
Sean f , g : N R0 dos funciones arbitrarias de los nmeros
naturales en los reales no negativos. Entonces:
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 52 / 289
Notacin asinttica Notacin El orden de
f (n)
Si lim R+ entonces f (n) O(g(n)) y g(n) O(f (n))
n g(n)
f (n)
Si lim = 0 entonces f (n) O(g(n)) pero g(n)
/ O(f (n))
n g(n)
f (n)
Si lim = + entonces f (n)
/ O(g(n)) pero g(n) O(f (n))
n g(n)
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 53 / 289
Notacin asinttica Notacin El orden de
f (n) = log n
g(n) = n
Observaciones
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 55 / 289
Notacin asinttica Notacin Omega
2 Notacin asinttica
Introduccin
Notacin El orden de
Notacin Omega
Notacin Theta
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 56 / 289
Notacin asinttica Notacin Omega
3 Notacin Omega
Graficamente
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 57 / 289
Notacin asinttica Notacin Omega
Regla de la dualidad
Regla de la dualidad:
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 58 / 289
Notacin asinttica Notacin Theta
2 Notacin asinttica
Introduccin
Notacin El orden de
Notacin Omega
Notacin Theta
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 59 / 289
Notacin asinttica Notacin Theta
4 Notacin Theta
Graficamente
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 60 / 289
Notacin asinttica Notacin Theta
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 61 / 289
Notacin asinttica Notacin Theta
Sublineales Superlineales
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 62 / 289
Notacin asinttica Notacin Theta
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 63 / 289
Contenidos
1 Introduccin a la Algoritmia
2 Notacin asinttica
3 Anlisis de Algoritmos
5 Esquemas Algortmicos
Introduccin
Operaciones elementales e instrucciones
Estructuras secuenciales
Estructuras alternativas
Estructuras repetitivas
Bucles para (for)
Bucles mientras (while) y repetir (repeat)
Algoritmos Recursivos y Recurrencias
Recursividad frente a Iteracin
Anlisis de Algoritmos Introduccin
3 Anlisis de Algoritmos
Introduccin
Operaciones elementales e instrucciones
Estructuras secuenciales
Estructuras alternativas
Estructuras repetitivas
Bucles para (for)
Bucles mientras (while) y repetir (repeat)
Algoritmos Recursivos y Recurrencias
Recursividad frente a Iteracin
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 66 / 289
Anlisis de Algoritmos Introduccin
Introduccin
Ideas iniciales
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 67 / 289
Anlisis de Algoritmos Introduccin
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 68 / 289
Anlisis de Algoritmos Operaciones elementales e instrucciones
3 Anlisis de Algoritmos
Introduccin
Operaciones elementales e instrucciones
Estructuras secuenciales
Estructuras alternativas
Estructuras repetitivas
Bucles para (for)
Bucles mientras (while) y repetir (repeat)
Algoritmos Recursivos y Recurrencias
Recursividad frente a Iteracin
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 69 / 289
Anlisis de Algoritmos Operaciones elementales e instrucciones
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 70 / 289
Anlisis de Algoritmos Estructuras secuenciales
3 Anlisis de Algoritmos
Introduccin
Operaciones elementales e instrucciones
Estructuras secuenciales
Estructuras alternativas
Estructuras repetitivas
Bucles para (for)
Bucles mientras (while) y repetir (repeat)
Algoritmos Recursivos y Recurrencias
Recursividad frente a Iteracin
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 71 / 289
Anlisis de Algoritmos Estructuras secuenciales
3 Estructuras secuenciales
sentencia 1
sentencia 2
...
sentencia s
Sean f1 (n), f2 (n), ..., fs (n) las funciones que representan los tiempos
de ejecucin de cada una de dichas sentencias
Regla de la composicin secuencial:
El tiempo de ejecucin de la estructura estar en el orden de
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 72 / 289
Anlisis de Algoritmos Estructuras alternativas
3 Anlisis de Algoritmos
Introduccin
Operaciones elementales e instrucciones
Estructuras secuenciales
Estructuras alternativas
Estructuras repetitivas
Bucles para (for)
Bucles mientras (while) y repetir (repeat)
Algoritmos Recursivos y Recurrencias
Recursividad frente a Iteracin
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 73 / 289
Anlisis de Algoritmos Estructuras alternativas
4 Estructuras alternativas
si expresin entonces
bloque de sentencias
si no
otro bloque de sentencias
fin si
o cualquier estructura alternativa en escalera
La expresin, el primer bloque de sentencias y el segundo
bloque de sentencias tendrn unos tiempos de ejecucin
representados que estn en el orden de
3 Anlisis de Algoritmos
Introduccin
Operaciones elementales e instrucciones
Estructuras secuenciales
Estructuras alternativas
Estructuras repetitivas
Bucles para (for)
Bucles mientras (while) y repetir (repeat)
Algoritmos Recursivos y Recurrencias
Recursividad frente a Iteracin
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 75 / 289
Anlisis de Algoritmos Estructuras repetitivas
Estructuras repetitivas
Bucles para (for)
t(n) (mtP )
considerando m y tP funciones de n
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 77 / 289
Anlisis de Algoritmos Estructuras repetitivas
t(n) (mtP )
Ejemplos bucles "para" iterando sobre el tamao del ejemplar(m = n)
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 78 / 289
Anlisis de Algoritmos Estructuras repetitivas
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 79 / 289
Anlisis de Algoritmos Estructuras repetitivas
Pm
t(n) i=1 tP (i)
Ejemplos bucles "para" iterando sobre el tamao del ejemplar(m = n)
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 80 / 289
Anlisis de Algoritmos Estructuras repetitivas
Situacin tpica
El valor lmite de iteracin del bucle coincide con el tamao del
ejemplar (m = n)
El orden de P(i) depende de la variable con controla el bucle
tP (i) (i)
n n
X X (1 + n)n
t(n) tP (i) = i = 1 + 2 + ... + n = (n2 )
i=1 i=1
2
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 81 / 289
Anlisis de Algoritmos Estructuras repetitivas
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 82 / 289
Anlisis de Algoritmos Estructuras repetitivas
Ejemplo 1
Se define una funcin d, dependiente de las variables involucradas en el bucle
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 83 / 289
Anlisis de Algoritmos Estructuras repetitivas
Ejemplo 2
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 84 / 289
Anlisis de Algoritmos Estructuras repetitivas
Ejemplo 3
x 0 Bucle "mientras" interno, anlogo al anterior:
i 1
repetir inicio j 0 = 1 = 20 Condicin FIN j>n
j 1 iteracin 1 j 1 = 21 En la ltima Iteracin jk > n
iteracin 2 j 2 = 22
mientras j n iteracin 3 j 3 = 23 2k1 n
... ... k 1 lg n k lg n + 1
hacer iteracin k j k = 2k t(i) lg n + 1 (lg n)
x x +1
j j 2 Bucle externo "repetir" equivale a bucle "para":
fin mientras
i i +1 t(n) =
Pn
t(i) =
Pn
(lg n + 1) = n(lg n + 1) (n lg n)
i=1 i=1
hasta que i > n
Resultado ejecucin para n variando en potencias de 2!!!
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 85 / 289
Anlisis de Algoritmos Estructuras repetitivas
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 86 / 289
Anlisis de Algoritmos Algoritmos Recursivos y Recurrencias
3 Anlisis de Algoritmos
Introduccin
Operaciones elementales e instrucciones
Estructuras secuenciales
Estructuras alternativas
Estructuras repetitivas
Bucles para (for)
Bucles mientras (while) y repetir (repeat)
Algoritmos Recursivos y Recurrencias
Recursividad frente a Iteracin
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 87 / 289
Anlisis de Algoritmos Algoritmos Recursivos y Recurrencias
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 90 / 289
Anlisis de Algoritmos Algoritmos Recursivos y Recurrencias
(
1, si n = 0
n! =
n(n 1)!, si n 1
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 92 / 289
Anlisis de Algoritmos Algoritmos Recursivos y Recurrencias
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 93 / 289
Anlisis de Algoritmos Algoritmos Recursivos y Recurrencias
T (n) = 4 + T (n 1)
= 4 + (4 + T (n 2))
= 4 + (4 + (4 + T (n 3)))
...
= 4k + T (n k)
T (n) = 4k + T (n k)
= 4n + T (0)
= 4n + 2 O(n) por la regla del mximo
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 94 / 289
Anlisis de Algoritmos Algoritmos Recursivos y Recurrencias
a0 T (n) + a1 T (n 1) + ... + ak T (n k) = 0
a0 x n + a1 x n1 + ... + ak x nk = 0
Eliminando la solucin x = 0
a0 x k + a1 x k1 + ... + ak = 0
p(x ) = a0 x k + a1 x k1 + ... + ak
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 95 / 289
Anlisis de Algoritmos Algoritmos Recursivos y Recurrencias
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 97 / 289
Anlisis de Algoritmos Algoritmos Recursivos y Recurrencias
T (n) T (n 1) T (n 2) = 0
con coeficientes a0 = 1 y a1 = a2 = 1
Mediante el cambio x n = T (n) la ecuacin caracterstica
x n x n1 x n2 = 0 x n2 (x 2 x 1) = 0
x2 x 1 = 0
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 98 / 289
Anlisis de Algoritmos Algoritmos Recursivos y Recurrencias
Resolviendo recurrencias
Solucin de ecuaciones lineales homogneas
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 99 / 289
Anlisis de Algoritmos Recursividad frente a Iteracin
3 Anlisis de Algoritmos
Introduccin
Operaciones elementales e instrucciones
Estructuras secuenciales
Estructuras alternativas
Estructuras repetitivas
Bucles para (for)
Bucles mientras (while) y repetir (repeat)
Algoritmos Recursivos y Recurrencias
Recursividad frente a Iteracin
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 100 / 289
Anlisis de Algoritmos Recursividad frente a Iteracin
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 101 / 289
Anlisis de Algoritmos Recursividad frente a Iteracin
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 102 / 289
Anlisis de Algoritmos Recursividad frente a Iteracin
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 103 / 289
Anlisis de Algoritmos Recursividad frente a Iteracin
Iterativo
resultado 1
para i 2 hasta n hacer
Pn
t(n) i=2 1 (n)
resultado resultado i
fin para
devolver resultado
Recursivo
si n 0 entonces
devolver 1
t(n) 4n + 2 (n)
si no
devolver n factorial(n 1)
fin si
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 104 / 289
Anlisis de Algoritmos Recursividad frente a Iteracin
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 105 / 289
Anlisis de Algoritmos Recursividad frente a Iteracin
Recursivo
si n 0 entonces
devolver 0
si no, si n = 1 entonces
devolver 1
si no t(n) O(n )
devolver fibonacciRecursivo(n 1) + fibonacciRecursivo(n 2)
fin si
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 106 / 289
Anlisis de Algoritmos Recursividad frente a Iteracin
Observaciones
Iteracin
Aportada a bajo nivel (instrucciones en cdigo mquina) por el propio
funcionamiento del ordenador. Secuencia de instrucciones que se
repiten atendiendo a un determinado criterio
En general es ms eficiente en trminos de tiempo de ejecucin y
memoria utilizada que la solucin recursiva
Para determinados problemas puede ser difcil encontrar la solucin
iterativa
Recursividad
Las definiciones recursivas y las demostraciones por induccin,
estrechamente relacionadas, existen desde antes de los ordenadores
En muchos casos es el mtodo ms natural y elegante de describir
funciones y tipos de datos
Menos eficiente que la solucin iterativa
Siempre se puede simular utilizando una pila
Generalmente, si la versin iterativa del algoritmo tiene una forma
simple, ser la opcin preferible
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 107 / 289
Anlisis de Algoritmos Recursividad frente a Iteracin
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 108 / 289
Contenidos
1 Introduccin a la Algoritmia
2 Notacin asinttica
3 Anlisis de Algoritmos
5 Esquemas Algortmicos
Introduccin
Algoritmos de bsqueda
Bsqueda secuencial
Bsqueda binaria
Algoritmos de ordenacin
Burbuja
Seleccin
Insercin
QuickSort
MergeSort
Distribucin
Algoritmos de bsqueda y ordenacin Introduccin
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 111 / 289
Algoritmos de bsqueda y ordenacin Introduccin
1 Introduccin
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 112 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de bsqueda
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 113 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de bsqueda
2 Algoritmos de BSQUEDA
Enunciado del problema
Problema a resolver
Bsqueda en un conjunto de datos de un elemento especfico y la
recuperacin de alguna informacin asociada al mismo
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 114 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de bsqueda
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 116 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de bsqueda
Divide y vencers
La solucin de todo caso suficientemente grande se reduce a un caso ms
pequeo, en este caso de tamao la mitad
(Tema 5. Esquemas Algortmicos)
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 118 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de bsqueda
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 119 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de bsqueda
Anlisis
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 120 / 289
Sean:
d valor de j i + 1 antes de la iteracin considerada
d valor de j i + 1 despus de la iteracin considerada
i, j, iy j definidos de forma similar
Calculamos el valor de la funcin d despus cada iteracin del bucle y
para cada uno de los tres casos que se pueden dar:
( )
i = i d
Si x<T[k] j k 1 d
j = [(i + j) 2 1] 2
d = j i + 1 = [(i + j) 2 1] i + 1 = [(i + j) 2] i
i +j i + j 2i j i j i +1 d
i = = < =
2 2 2 2 2
( )
i = [(i + j) 2 + 1] d
Si x>T[k] i k + 1 d
j = j 2
Evolucin de la funcin d = j i + 1
d
d
suceda lo que suceda
Conclusin: 2
d = n antes de la primera iteracin
d 1 despus de la ltima iteracin
Invocacin de la funcin
posici on busquedaBinariaRecursiva(T [1..n], unValor )
Ecuacin de recurrencia que expresa el consumo de tiempo, suponiendo
que el valor buscado s est en la lista
(
a, si n = 1
T (n) =
T (n /2 ) + b, si n > 1
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 123 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de bsqueda
Anlisis
Ecuacin de recurrencia que expresa el consumo de tiempo
(
a, si n = 1
T (n) =
T (n /2 ) + b, si n > 1
T (n) = T ( n2 ) + b
= (T ( 2n2 ) + b) + b = T ( 2n2 ) + 2b
= (T ( 2n3 ) + b) + 2b = T ( 2n3 ) + 3b
...
= T ( 2nk ) + kb
T (n) = T ( 2nk ) + kb
= T (1) + b lg n
= a + b lg n O(lg n) por la regla del mximo
Algoritmos de bsqueda
Secuencial versus Binaria
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 125 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 126 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
3 Algoritmos de ORDENACIN
Enunciado del problema
Problema a resolver
Ordenacin de un conjunto, vector o lista de datos de un determinado
tipo, simple o estructurado
O ms formalmente:
Problema a resolver
Dado un conjunto de n elementos a1 , a2 , ..., an y una relacin de orden
total () sobre ellos, el problema de la ordenacin consiste en encontrar
una permutacin de esos elementos ordenada de forma creciente
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 127 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
El problema de la ordenacin
Algunas consideraciones
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 128 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
Ejemplo
1a iteracin b. externo: i = 1 (b. interno j varia de n 1 a 1)
i 1 23 1 23 1 23 j 1 23 1 7
2 12 2 12 j 2 12 j +1 2 7 2 23
3 42 j 3 42 j +1 3 7 3 12 3 12
j 4 7 j +1 4 7 4 42 4 42 4 42
j +1 5 15 5 15 5 15 5 15 5 15
2a iteracin b. externo: i = 2 (b. interno j vara de n 1 a 2)
1 7 1 7 1 7 1 7
i 2 23 2 23 j 2 23 2 12
3 12 j 3 12 j +1 3 12 3 23
j 4 42 j +1 4 15 4 15 4 15
j +1 5 15 5 42 5 42 5 42
3a iteracin b. externo: i = 3 (b. interno j vara de n 1 a 3)
1 7 1 7 1 7
2 12 2 12 2 12
i 3 23 j 3 23 3 15
j 4 15 j +1 4 15 4 23
j +1 5 42 5 42 5 42
4a iteracin b. externo: i = 4 (b. interno j vara de n 1 a 4)
1 7 1 7
2 12 2 12
3 15 3 15
i, j 4 23 4 23
j +1 5 42 5 42
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 130 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
Algoritmo y Anlisis
Se necesitan dos bucles:
Uno externo que indica la posicin hasta la que se realiza el intercambio (i
vara de 1 a (n 1))
Otro interno que va intercambiando ("burbujeando") el elemento ms
pequeo, entre los elementos desordenados, para situarlo en la posicin
adecuada de intercambio (j vara desde (n 1) hasta i)
Anlisis
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 131 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 132 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
Ejemplo
1a iteracin b. externo: i = 1 (b. interno j vara de 2 a n)
i 1 23 1 23 1 23 1 23 1 7
j 2 12 2 12 2 12 2 12 2 12
3 42 j 3 42 3 42 3 42 3 42
4 7 4 7 j 4 7 4 7 4 23
5 15 5 15 5 15 j 5 15 5 15
2a iteracin b. externo: i = 2 (b. interno j vara de 3 a n)
1 7 1 7 1 7 1 7
i 2 12 2 12 2 12 2 12
j 3 42 3 42 3 42 3 42
4 23 j 4 23 4 23 4 23
5 15 5 15 j 5 15 5 15
3a iteracin b. externo: i = 3 (b. interno j vara de 4 a n)
1 7 1 7 1 7
2 12 2 12 2 12
i 3 42 3 42 3 15
j 4 23 4 23 4 23
5 15 j 5 15 5 42
4a iteracion b. externo: i = 4 (b. interno j vara de 5 a n)
1 7 1 7
2 12 2 12
3 15 3 15
i 4 23 4 23
j 5 42 5 42
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 133 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
Algoritmo y Anlisis
Se necesitan dos bucles:
Uno externo que indica la posicin de intercambio del elemento seleccionado (i vara de 1 a (n 1))
Otro interno que busca ("selecciona") el elemento ms pequeo entre los elementos desordenados para situarlo en la
posicin adecuada de intercambio (j vara desde i + 1 hasta n)
Anlisis exhaustivo
n1 n n1
X X X
t(n) = [b + c] = [b + (n (i + 1) + 1)c]
n1 n1 n1
Entrada: vector T [1..n] X X X
Salida: vector T [1..n] ordenado orden creciente = [b + (n i)c] = b+ (n i)c
1: para i 1 hasta n 1 hacer
2: posSelecci on i i=1 i=1 i=1
3: valorSelecci on T [i] n(n 1)
4: para j (i + 1) hasta n hacer = b(n 1) + c
5: si T [j] < valorSelecci on entonces 2
6: posSelecci on j 1 2 1 2
= cn + (b c)n b (n )
7: valorSelecci on T [j] 2 2
8: fin si
9: fin para
10: T [posSelecci on] T [i] Anlisis utilizando instruccin baromtro: (T [j] < valorSelecci on)
11: T [i] valorSelecci on
12: fin para
n1 n n1
n(n 1)
X X X
2
t(n) = 1= (n i) = (n )
2
i=1 j=i+1 i=1
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 134 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 135 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
Ejemplo
1a iteracin b. externo: i = 2 (b. interno j vara de 1 a 0; x = 12)
j 1 23 j +1 1 23 j +1 1 12
i, j + 1 2 12 2 23 2 23
3 42 3 42 3 42
4 7 4 7 4 7
5 15 5 15 5 15
1 7 1 7 1 7 1 7
2 12 2 12 j 2 12 j 2 12
3 23 j 3 23 j +1 3 23 j +1 3 15
j 4 42 j +1 4 42 4 23 4 23
i, j + 1 5 15 5 42 5 42 5 42
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 136 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
Algoritmo y Anlisis
Se necesitan dos bucles:
Uno externo que indica el elemento de la lista desordenada que debe
insertarse en la lista ordenada (i vara de 2 a n)
Otro interno que busca la posicin de la lista ordenada donde debe
insertarse el elemento(cmo vara j? Depende del conjunto original!!!)
El tiempo de ejecucin depende del orden original de los elementos
Caso peor: j vara desde i 1 hasta 1
Caso mejor: j no vara (no entra en bucle!!!)
Caso medio: requiere suponer a priori una distribucin
Instruccin barmetro: condicin del bucle "mientras" (el cuerpo del bucle puede
que no se ejecute nunca!!!!)
Instruccin barmetro de orden constante((1))
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 137 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
ordenacinInsercin(T [1..n])
Evolucin variable j que controla el bucle "mientras" (' "para")
Entrada: vector T [1..n]
Salida: vector T [1..n] ordenado orden creciente iteracin 1 j1 = i 1 Condicin FIN j 0
1: para i 2 to n hacer iteracin 2 j2 = i 2 jk = 0
2: x T [i] iteracin 3 j3 = i 3 i k =0
3: j i 1 ... ...
4: mientras j > 0 and T [j] > x hacer iteracin k jk = i k k = i nmero iteraciones
5: T [j + 1] T [j]
6: j j1 t(i) = i
7: fin mientras
8: T [j + 1] x
9: fin para
La instruccin barmetro bucle interno se ejecuta "i" veces por cada iteracin del bucle externo
n n
2+n n2 + n 2
X X
2
t(n) = ct(i) = c i = (n 1)c = (n )
2 2
i=2 i=2
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 138 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
ordenacinInsercin(T [1..n])
Entrada: vector T [1..n]
Una iteracin cualquiera !!
Salida: vector T [1..n] ordenado orden creciente
1: para i 2 to n hacer 1 7
2: x T [i] 2 12
3: j i 1 j 3 15
4: mientras j > 0 and T [j] > x hacer i 4 23
5: T [j + 1] T [j] 5 42
6: j j1
7: fin mientras
8: T [j + 1] x
9: fin para
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 139 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
ordenacinInsercin(T [1..n]) Rango parcial de T [i]: posicin k del valor T [i] en T [1..i] si
estuviera ordenado
Entrada: vector T [1..n] k determina las veces que se ejecuta la instruccin barmetro!!
Salida: vector T [1..n] ordenado orden creciente 1 k = 1 i veces
1: para i 2 to n hacer 2 k = 2 i 1 veces
2: x T [i] ... ... ...
3: j i 1 k k = k i k + 1 veces
4: mientras j > 0 and T [j] > x hacer ... ... ...
5: T [j + 1] T [j] i 1 k = i 1 2 veces
6: j j1 i k = i 1 vez
7: fin mientras ... ...
8: T [j + 1] x n
9: fin para
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 140 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
13+n+1 n2 + 3n 4
t(n) = (n 1) = (n2 )
2 2 4
En el caso medio hace, aproximadamente, la mitad de comparaciones
que en el caso peor
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 141 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
Observaciones
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 142 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 144 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 145 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
1 2 3 4 5 6 7 8 9 10 11 12
7 19 24 13 31 8 82 18 44 63 5 29
pivote
base tope
1 2 3 4 5 6 7 8 9 10 11 12
5 7 24 13 31 8 82 18 44 63 19 29
iP 1 iP iP + 1
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 146 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
Ejemplo
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 147 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 148 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
Algoritmo COLOCAR
1 Escoger elemeno base como pivote
2 Buscar posicin definitiva avanzando e intercambiando elementos cada vez que se
encuentra uno menor que el pivote
3 Colocar pivote y devolver posicin
Es necesario un bucle para que busque la posicin del pivote y efecte los intercambios
necesarios (i vara de base + 1 hasta tope)
Anlisis
Pivote el primer elemento de la lista
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 150 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
T (n) = (n 1) + T (n 1)
= (n 1) + (n 2) + T (n 2)
n = (n 1) + (n 2) + (n 3) + T (n 3)
0 si n 1
T (n) = = (n 1) + (n 2) + + (n k) + T (n k)
(n 1) + T (n 1) + T (0) si n > 1
Caso base n k = 1 k = n 1
n(n 1)
T (n) = (n 1) + (n 2) + + 1 + 0 =
2
2 De forma grfica, mediante el rbol de recursividad
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 151 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
Una invocacin cualquiera del algoritmo, distinta del caso base, recibe
una sublista a ordenar de k-elementos y ejecuta la funcin colocar
que:
Realiza k-1 comparaciones para situar el pivote en la posicin i
Produce dos sublistas a ordenar de i-1 y k-i elementos
Si todas las posiciones posibles del pivote son igualmente probables,
cada valor de i entre 1 y k tiene una probabilidad de ocurrir de k1
Y denotamos T(k) como el nmero promedio de comparaciones
realizadas para ordenar una lista de k elementos
El promedio de comparaciones para ordenar la lista inicial de
n-elementos vendr dado por
(
0 si n 1
T (n) = 1 Pn
(n 1) + n i=1 [T (i 1) + T (n i)] si n > 1
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 152 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
Desplegando el sumatorio, teniendo en cuenta que T (0) = T (1) = 0 y que los trminos se repiten a ambos lados de la
suma:
n
X
[T (i 1) + T (n i)] = T (0) +T (n 1)
i=1
+ T (1) +T (n 2)
+ T (2) +T (n 3)
+ ... +...
+ T (n 2) +T (1)
n1 n1
X X
+ T (n 1) +T (0) = T (i) + T (i)
i=2 i=2
0 si n 1
n1
X
T (n) =
(n 1) + n2 T (i) si n > 1
i=2
Ecuacin de recurrencia complicada de resolver. T(n) depende de todos los valores anteriores
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 153 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
Simplificamos la ecuacin de recurrencia anterior suponiendo que la funcin colocar se comporta muy bien y genera,
cada vez que se invoca, dos listas del mismo tamao aproximadamente, es decir, divide por dos la lista inicial
n
0 si n 1
T (n) =
(n 1) + 2T ( n2 ) si n > 1
T (n) = (n 1) + 2T ( n2 )
= (n 1) + 2[( n2 1) + 2T ( n2 )] = (n 1) + (n 2) + 22 T ( n2 )
2 2
= (n 1) + (n 2) + 22 [( n2 1) + 2T ( n3 )] = (n 1) + (n 2) + (n 22 ) + 23 T ( n3 )
2 2 2
...
= (n 20 ) + (n 21 ) + (n 22 ) + ...(n 2k1 ) + 2k T ( nk )
2
k1 k1 k1
n n n
X X X
i k i k k k
= (n 2 ) + 2 T ( )= n 2 + 2 T( ) = kn (2 1) + 2 T ( )
2k 2k 2k
i=0 i=0 i=0
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 154 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
Observaciones
QuickSort "rompe" con la filosofa de caso mejor, caso peor y caso
medio. El tiempo de ejecucin depende del orden inicial de los
elementos y tambin de la eleccin del pivote
La eleccin del pivote utilizada (primer elemento de la lista) lleva a
tres casos desfavorables: lista inicial con todos los elementos iguales y
lista clasificada en orden asecendente o descendente
Una mala eleccin del pivote adems agrava el coste de la
recursividad. Cada llamada recursiva supone consumo de memoria en
la pila del programa para almacenar objetos locales y estado de
ejecucin. Para un tamao pequeo puede resultar menos eficiente
que otros algoritmos de ordenacin
Mejoras
Elegir como pivote un valor aleatorio, el valor de la posicin mitad o la
mediana de los valores base, tope y mitad
Utilizar otro algortimo de ordenacin para listas de tamao pequeo
(caso base)
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 155 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
Mejora quickSort
Pivote elemeto mitad de la lista(T [(base + tope)/2])
1: i base
2: j tope
3: inidiceP (base + tope) 2
4: x T [indiceP]
5: repetir
6: mientras T [i] < x hacer
7: i i +1
8: fin mientras
9: mientras T [j] > x hacer
10: j j 1
11: fin mientras
12: si i j entonces
13: intercambiar(T [i], T [j])
14: i i +1
15: j j 1
16: fin si
17: hasta que i > j
18: si base < j entonces
19: quickSort(T[base..j])
20: fin si
21: si tope > i entonces
22: quickSort(T[i..tope])
23: fin si
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 156 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
Mejora quickSort
Utilizando otro algortimo de ordenacin para sublistas pequeas
Mejora quickSort
Eliminado la recursividad de cola
Recordando que
Iteratividad y recursividad son dos formas de expresar lo mismo:
repeticin de un conjunto de instrucciones un cierto nmero de veces
Generalmente la iteratividad consume menos recursos (no es necesario
copiar valores a la pila de memoria)
Recursividad por cola cuando la ltima instruccin de la funcin
recursiva es una llamada recursiva
La recursividad por cola se puede eliminar fcilmente
En la pila se guardan valores intermedios (variables locales y
parmetros), pero como es la ltima instruccin y no van a ser
modificados posteriormente no es necesario guardarlos
Proceso
Sustituir ltima llamada recursiva por un bucle (recursin por
iteratividad)
Ajustar valores de acuerdo a la invocacin recursiva eliminada
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 158 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
Mejora quickSort
Eliminado la recursividad de cola
1 2 3 4 5 6 7 8 9 10 11 12
7 19 24 13 31 8 82 18 44 63 5 29
1 2 3 4 5 6 7 8 9 10 11 12
7 8 13 19 24 31 5 18 29 44 63 82
baseA topeA baseB topeB
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 161 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 162 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
Algoritmo FUSIONAR
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 163 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
Fusionar es de orden lineal respecto a la suma de los tamaos de las listas que inspecciona
El tiempo para fusionar o intercalar dos vectores ordenados es lineal porque a lo sumo se hacen
n 1 comparaciones (Recibe dos sublistas ordenadas de n2 -elementos cada una) = (n)
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 164 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
Ejemplo completo
Las sucesivas invocaciones recursivas van produciendo dos subvectores aproximadamente del mismo tamao
Las sucesivas vueltas recursivas van fusionando (intercalando) los subvectores produciendo otros ms grandes ordenados
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 165 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
Observaciones
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 166 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
Ejemplo
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 168 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
Ejemplo
Ordenar Grupo A
Ordenar Grupo B
...
Ordenar Grupo Z
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 169 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
Observaciones
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 172 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 175 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
Observaciones
Ventajas segunda versin
Se mantiene el orden al pasar de cifras menos significativas a ms
significativas
Si la posicin del dgito en que difieren dos valores es la i-sima, ambos
valores tendrn y mantendrn el orden relativo correcto a partir del
i-sima iteracin
No hace falta ningn algoritmo de ordenacin adicional
No hay problemas de ndice|punteros pues la distribucin se realiza
siempre a partir de una nica lista
Implementacin
La estructura ms adecuada para representar el conjunto de elementos
a ordenar es una lista enlazada
En la fase de distribucin se forman 10 listas enlazadas extrayendo los
nodos de la lista inicial y aadindolos al grupo correspondiente (vector
de punteros a los primeros nodos de cada grupo)
En la fase de concatenacin se vacan los 10 grupos para formar de
nuevo una nica lista enlazada (un vector de punteros a los ltimos
nodos de cada grupo evita el recorrido de cada lista!!!!)
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 176 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
Ejemplo y Pseudocdigo
Inicio. Lista enlazada inicial y nGrupos vacos
Algoritmo 4.16 radixSort(ref lista:nodo,
nGrupos,nCifras:entero)
1: ptGrupos[0..nGrupos 1] :nodo
2: pt Ultimos[0..nGrupos 1] :nodo
3: para cifra 1 to nCifras hacer
4: para k 0 to nGrupos 1 hacer
5: ptGrupos[k] NULL
6: pt Ultimos[k] NULL
7: fin para
8: distribuir (cifra, lista, ptGrupos, pt Ultimos)
Cada grupo se implementa mediante una lista enlazada 9: concatenar (lista, ptGrupos, pt Ultimos)
10: fin para
Distribucin de los nodos en los diferentes grupos
Concatenacin de los grupos
Distribuir
Ejemplo y Pseudocdigo
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 178 / 289
Algoritmos de bsqueda y ordenacin Algoritmos de ordenacin
Concatenar
Ejemplo y Pseudocdigo
Cada llamada a concatenar vuelve a llenar la lista con los nodos iniciales
pero ordenados segn la cifra en proceso!!!
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 179 / 289
Contenidos
1 Introduccin a la Algoritmia
2 Notacin asinttica
3 Anlisis de Algoritmos
5 Esquemas Algortmicos
5 Esquemas Algortmicos
Introduccin
Esquema Divide y Vencers
Esquema Voraz
Rastreo Inverso o Backtraking
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 182 / 289
Esquemas Algortmicos Introduccin
Proceso a seguir
1 Clasificacin del problema como miembro de una familia (se cumplen
propiedades?)
2 Seleccin del esquema algortmico (qu hacer!)
3 Instanciacin del esquema en un algoritmo concreto(cmo hacer!)
4 Verificacin, anlisis y refinamientos sucesivos del algoritmo
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 183 / 289
Esquemas Algortmicos Esquema Divide y Vencers
5 Esquemas Algortmicos
Introduccin
Esquema Divide y Vencers
Esquema Voraz
Rastreo Inverso o Backtraking
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 184 / 289
Esquemas Algortmicos Esquema Divide y Vencers
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 185 / 289
Esquemas Algortmicos Esquema Divide y Vencers
Ejemplos
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 186 / 289
Esquemas Algortmicos Esquema Divide y Vencers
http://olmo.pntic.mec.es/~aserra10/articulos/hanoi.html
Descripcin ms matemtica del problema y la solucin
http://hanoitower.mkolar.org/Hanoi.html?English
Versin iterativa del juego, incluye una simulacin de la solucin
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 187 / 289
Esquemas Algortmicos Esquema Divide y Vencers
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 188 / 289
Esquemas Algortmicos Esquema Divide y Vencers
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 189 / 289
Esquemas Algortmicos Esquema Divide y Vencers
Seudocdigo y Anlisis
T (n) = 2T (n 1) + 1
= 2[2T (n 2) + 1] + 1 = 22 T (n 2) + 2 + 1
= 22 [2T (n 3) + 1] + 2 + 1 = 23 T (n 3) + 22 + 2 + 1
...
= 2k T (n k) + 2k1 + ... + 22 + 2 + 1
Siendo k el nmero de invocaciones recursivas. Se llega al caso base cuando: n k = 0 k = n Sustituimos k por su valor
k k1 2 k n
T (n) = 2 T (0) + 2 + ... + 2 + 2 + 1 = 2 1 = 2 1
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 192 / 289
Esquemas Algortmicos Esquema Divide y Vencers
T (3) = 20 + 21 + 22 = 7
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 193 / 289
Esquemas Algortmicos Esquema Divide y Vencers
1 + 2 + 4 + + 2n1 = 2n 1
Para n = 3: T (3) = 23 1 = 7
Para el caso de la leyenda, donde n = 64 tenemos:
2n 1 = 264 1 1, 8x 1019
Si un ao son, aproximadamente, 3.2x 107 segundos, y los monjes son
incansables y tan rpidos que realizan cada movimiento exactamente
en un segundo, entonces la tarea total tardara unos 5x 1011 aos
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 194 / 289
Esquemas Algortmicos Esquema Divide y Vencers
Ejemplo
Versin recursiva de la bsqueda binaria
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 196 / 289
Esquemas Algortmicos Esquema Voraz
5 Esquemas Algortmicos
Introduccin
Esquema Divide y Vencers
Esquema Voraz
Rastreo Inverso o Backtraking
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 197 / 289
Esquemas Algortmicos Esquema Voraz
2. Tcnica Voraz
Idea bsica
Problema a resolver
Disear un algoritmo para pagar una cierta cantidad a un cliente utilizando
el menor nmero de monedas
Entrada: cantidad ilimitada de todas las monedas disponibles
{1ct, 2cts, 5cts, 10cts, 20cts, 50cts, 1, 2} y cantidad a pagar
Salida: conjunto de monedas que sumen la cantidad
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 200 / 289
Esquemas Algortmicos Esquema Voraz
Esquema GENERAL
Los algoritmos voraces avanzan paso a paso hasta encontrar una solucin ptima (o no!)
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 201 / 289
Esquemas Algortmicos Esquema Voraz
Formalizacin solucin
Obtencin de un ptimo global tomando decisiones localmente ptimas.
Si cada solucin x del dominio X puede descomponerse en un conjunto de
elementos ms simples x = {x1 , x2 , ..., xn }, para cada i se selecciona el
valor xi que resulta ms prometedor y que, unido a las decisiones ya
tomadas, permite seguir formando una solucin factible
Refinando el ESQUEMA
Conjunto de candidatos: C = {c1 , c2 , c3 , c4 , c5 , c6 , c7 , c8 } = {1, 2, 5, 10, 20, 50, 100, 200} valor monedas ordenado creciente
Conjunto solucin: S = {x1 , x2 , x3 , x4 , x5 , x6 , x7 , x8 } donde xi es el nmero de monedas usadas de valor ci
P8 P8
Formulacin: minimizar xi tal que xi ci = cambio con xi 0
i=1 i=1
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 203 / 289
Esquemas Algortmicos Esquema Voraz
Representacin y pseudocdigo
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 205 / 289
Esquemas Algortmicos Esquema Voraz
Enunciado
Se dispone de una mochila de capacidad C y n objetos. Cada objeto ni
tiene un peso positivo pi y un valor positivo vi . El objetivo es llenar la
mochila maximizando el valor de los objetos transportados pero
respetando la limitacin de su capacidad C (peso mximo que puede
transportar).
Se supone que los objetos se pueden dividir en trozos ms pequeos, es
decir, se puede aadir a la mochila una fraccin xi del objeto ni siendo su
contribucin en peso xi pi y en valor xi vi
Formalizacin
Maximizar ni=1 xi vi tal que ni=1 xi pi C
P P
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 206 / 289
Esquemas Algortmicos Esquema Voraz
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 208 / 289
Esquemas Algortmicos Esquema Voraz
1 2 3 4 5
valor 55 55 75 76 95
peso 50 25 40 35 45
SALIDA o SOLUCIN
1 2 3 4 5 pesoMochila = 45 + 35 + 0, 75 40 = 110
X 0 0 0,75 1 1 valorMochila = 95 + 76 + 0, 75 75 = 227, 25
1 2 3 4 5
valor 55 95 75 76 55
peso 50 45 40 35 25
SOLUCIN
1 2 3 4 5
valor 55 75 95 76 55
peso 50 40 45 35 25
valor/peso 1,10 1,87 2,11 2,17 2,20
SOLUCIN
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 209 / 289
Esquemas Algortmicos Esquema Voraz
Formalizando el algoritmo
Seudocdigo
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 210 / 289
Esquemas Algortmicos Esquema Voraz
Enunciado
Se dispone de una mochila de capacidad C y n objetos. Cada objeto ni
tiene un peso positivo pi y un valor positivo vi . El objetivo es llenar la
mochila maximizando el valor de los objetos transportados pero
respetando la limitacin de su capacidad C (peso mximo que puede
transportar).
Se supone que los objetos no se pueden dividir en trozos mas pequeos, es
decir, o se aade el objeto entero a la mochila o no se aade
Formalizacin (0,1)
Maximizar ni=1 xi vi tal que ni=1 xi pi C
P P
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 211 / 289
Esquemas Algortmicos Esquema Voraz
1 2 3
p 3 3 5
v 6 6 11
v/p 2,0 2,0 2,2
SOLUCIN
pesoMochila = 5 < 6
1 2 3
valorMochila = 11
X 0 0 1
Observaciones
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 213 / 289
Esquemas Algortmicos Rastreo Inverso o Backtraking
5 Esquemas Algortmicos
Introduccin
Esquema Divide y Vencers
Esquema Voraz
Rastreo Inverso o Backtraking
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 214 / 289
Esquemas Algortmicos Rastreo Inverso o Backtraking
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 215 / 289
Esquemas Algortmicos Rastreo Inverso o Backtraking
12 soluciones distintas
El problema de las 8 reinas tiene 92
soluciones pero solo 12 de ellas son
distintas. El resto puede obtenerse
mediante simetras y rotaciones de
estas 12 soluciones
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 216 / 289
Esquemas Algortmicos Rastreo Inverso o Backtraking
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 218 / 289
Esquemas Algortmicos Rastreo Inverso o Backtraking
rbol de soluciones
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 220 / 289
Esquemas Algortmicos Rastreo Inverso o Backtraking
Definicin
Consiste en construir la solucin de un problema mediante ensayos
parciales de solucin
Formalizacin solucin
Se parte del ensayo neutro [ ] o y se van construyendo ensayos
parciales
En cada etapa intermedia del proceso, se tiene un ensayo parcial
[x1 , x2 , ..., xi1 , xi ] y se tantea sistemticamente con cada posibilidad
xi+1 de extender el ensayo
Si [x1 , x2 , ..., xi1 , xi , xi+1 ] es un ensayo aceptable se extiende y se
contina con este ltimo ensayo parcial
Si ninguna de las posibilidades para xi+1 hacen que el ensayo
[x1 , x2 , ..., xi1 , xi , xi+1 ] sea aceptable, significa que [x1 , x2 , ..., xi ] no es
extensible a solucin y hay que retroceder al ensayo anterior, se retira
la ltima opcin xi y se contina con el ensayo parcial anterior
[x1 , x2 , ..., xi1 ]
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 221 / 289
Esquemas Algortmicos Rastreo Inverso o Backtraking
El parmetro xito se actualiza a verdadero cuando se encuentra solucin (fin de la recursividad) y fin del blucle
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 222 / 289
Esquemas Algortmicos Rastreo Inverso o Backtraking
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 223 / 289
Esquemas Algortmicos Rastreo Inverso o Backtraking
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 224 / 289
Esquemas Algortmicos Rastreo Inverso o Backtraking
Refinando el esquema
Cuestiones a resovler:
Representacin de los datos: tablero, reinas, posiciones y solucin
Implementacin de las reglas (depende de la represenacin de los
datos): posicin vlida o no, colocar o eliminar una reina de una
posicin,...
Primera idea, utilizar una matriz cuadrada para representar las ocho
reinas sobre el tablero. Esta alternativa "sencilla" complica las
operaciones de colocar|eliminar una reina en|de una posicin
Colocar una reina supone marcar como no vlidas todas las casillas que
amenza (columna, fila y diagonal que se cruzan con posicin reina)
Eliminar una reina de una posicin supone marcar vlidas todas las
posiciones que su colocacin hizo invlidas
Segunda idea, ms refinada, se basa en que cada reina debe ocupar
una fila y una columna que no puede coincidir con filas y columnas
ocupadas por otras reinas
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 225 / 289
Esquemas Algortmicos Rastreo Inverso o Backtraking
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 226 / 289
Esquemas Algortmicos Rastreo Inverso o Backtraking
Representacin
Representacin SOLUCIN
1 2 3 4 5 6 7 8
a V|F V|F V|F V|F V|F V|F V|F V|F filas libre|ocupadas
-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7
b V|F V|F V|F V|F V|F V|F V|F V|F V|F V|F V|F V|F V|F V|F V|F
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
c V|F V|F V|F V|F V|F V|F V|F V|F V|F V|F V|F V|F V|F V|F V|F
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 227 / 289
Esquemas Algortmicos Rastreo Inverso o Backtraking
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 229 / 289
Esquemas Algortmicos Rastreo Inverso o Backtraking
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 230 / 289
Esquemas Algortmicos Rastreo Inverso o Backtraking
rbol de expansin
La estrategia de backtraking equivale al recorrido en profundidad del
rbol expansin, rbol implcito (rbol de soluciones presentado en
transparencia 37) donde:
cada nodo se corresponde con un ensayo parcial
cada arista con una opcin de tanteo
cada nodo hoja con un ensayo NO extensible a solucin (poda) o
solucin
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 231 / 289
Esquemas Algortmicos Rastreo Inverso o Backtraking
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 232 / 289
Esquemas Algortmicos Rastreo Inverso o Backtraking
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 233 / 289
Contenidos
1 Introduccin a la Algoritmia
2 Notacin asinttica
3 Anlisis de Algoritmos
5 Esquemas Algortmicos
Introduccin
Listas
Nivel abstracto o de definicin
Nivel de representacin o de implementacin
Pilas
Nivel abstracto o de definicin
Nivel de representacin o de implementacin
Colas
Nivel abstracto o de definicin
Nivel de representacin o de implementacin
Tipos Abstractos de Datos Introduccin
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 236 / 289
Tipos Abstractos de Datos Introduccin
1 Introduccin
Dos conceptos fundamentales que comparten propiedades
Definicin
Modelo matemtico con una serie de operaciones definidas sobre l
Tipo de datos
Define el conjunto de valores que puede tomar una variable
Los tipos de datos bsicos o primitivos son dependientes del lenguaje
de programacin
Tipo abstracto de datos (TAD)
Es un modelo matemtico, junto con varias operaciones definidas sobre
ese modelo
Generalmente, los algoritmos se implementan en funcin de los TAD,
sin embargo, el TAD se debe representar en funcin de los tipos y
operaciones bsicas del lenguaje de programacin
Para implementar el modelo matemtico de un TAD se emplean las
estructuras de datos
Estructuras de datos
Conjuntos de variables, del mismo o diferente tipo, conectadas entre s
de diferentes formas (matrices, registros, punteros, ...)
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 239 / 289
Tipos Abstractos de Datos Introduccin
Especificacin e implementacin
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 241 / 289
Tipos Abstractos de Datos Listas
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 242 / 289
Tipos Abstractos de Datos Listas
2 TAD Listas
2.1 Nivel abstracto o de definicin
Definicin
Secuencia ordenada de cero o ms elementos de un determinado tipo de
dato a1 , a2 , a3 , . . . , an . El orden de los elementos est determinado por su
posicin en la secuencia, el elemento ai est en la posicin i
Propiedades:
El valor n representa el nmero de elementos de la lista, tamao o
longitud. Si n = 0 entonces la lista est vaca (lista nula)
a1 es el primer elemento
ai precede a ai+1 , para i = 1, 2, . . . , n 1
ai sucede a ai1 , para i = 2, 3, . . . , n
an es el ltimo elemento
Los elementos son accesibles y se pueden insertar y suprimir en
cualquier posicin de la lista
Conviene postular la existencia de una posicin que sucede a la del
ltimo elemento de la lista (funcin fin(l))
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 243 / 289
Tipos Abstractos de Datos Listas
Caractersticas
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 244 / 289
Tipos Abstractos de Datos Listas
TAD Lista
Nivel abstracto o de definicin: especificacin de operaciones
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 245 / 289
Tipos Abstractos de Datos Listas
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 247 / 289
Tipos Abstractos de Datos Listas
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 248 / 289
Tipos Abstractos de Datos Listas
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 249 / 289
Tipos Abstractos de Datos Listas
Entrada: la lista l
Salida: posicin que sucede a la del ltimo elemento de la lista
1: devolver l.ultimo + 1
Recordamos la especificacin
Devuelve la posicin del elemento x en la lista l
Si aparece ms de una vez devuelve la posicin de la primera aparicin, y
si no aparece, devuelve fin(l)
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 250 / 289
Tipos Abstractos de Datos Listas
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 252 / 289
Tipos Abstractos de Datos Listas
un nodo que no contiene ningn elemento de la lista pero tiene la direccin del
primer elemento de la lista o direccin nula si la lista est vacia con nodo
ficticio, falso o de encabezamiento
En los dos casos las declaraciones bsicas son las mismas y cualquier variable de tipo lista
precisa la direccin de la primera celda: encabezamiento o raz
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 253 / 289
Tipos Abstractos de Datos Listas
Declaraciones bsicas
Iguales se utilice o no nodo ficticio
Posicin pi puntero a la celda que contiene el elemento ai de la lista (Definicin ambigua...que da lugar a diferentes
cosideraciones y quiz problemas ...insertar o suprimir antes o despus de pi )
Variable de tipoLista: puntero miLista a la celda que contiene el elemento a1 de la lista
Posicin pi puntero a la celda que contiene, en su campo sig, la direccin o puntero de la celda que almacena el
elemento ai de la lista
Variable de tipoLista: puntero miLista al nodo ficticio de la lista
Lista vaca (miLista .sig = NULO)
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 255 / 289
Tipos Abstractos de Datos Listas
Recordamos la especificacin
Inserta el elemento x en la posicin p de la lista l, pasando los elementos de la posicin p y
siguientes a la posicin inmediata posterior
Si l es a1 , a2 , . . . , ap1 , ap , ap+1 , . . . , an pasa a ser a1 , a2 , . . . , ap1 , x , ap , ap+1 , . . . , an
Si p es fin(l) entonces l se convierte en a1 , a2 , . . . , an , x
Si l no tiene posicin p, el resultado no est definido
1: temp nuevaCelda()
2: si temp = NULO entonces
3: tratar excepcin segn diseo ->no hay memoria!
4: si no
5: temp .elemento x
6: si p = miLista entonces
7: temp .sig = miLista ->la primera posicin es epecial!
8: miLista = temp
9: si no
10: previo miLista
11: mientras (previo 6= NULO) Y(previo .sig 6= p) hacer
12: previo previo .sig ->la ltima posicin es epecial!
13: fin mientras
14: si previo 6= NULO entonces
15: temp .sig = previo .sig
16: previo .sig = temp
17: fin si
18: fin si
19: fin si
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 256 / 289
Tipos Abstractos de Datos Listas
Observaciones
Justificacin del nodo ficticio
Soluciones
1 Descender un nivel de abstraccin y especificiar una interfaz con
funciones ms cercanas a la implementacin
(insertarAntesDePosicin, insertarDespuesDePosicion,
insertarComienzo, insertarFinal...visto en asignatura de Programacin
II)
2 Utilizar Nodo Ficticio
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 257 / 289
Tipos Abstractos de Datos Listas
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 258 / 289
Tipos Abstractos de Datos Listas
Observaciones
Definicin de posicin con nodo ficticio
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 259 / 289
Tipos Abstractos de Datos Listas
Recordamos la especificacin
Devuelve la posicin que sucede al ltimo elemento de la lista
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 263 / 289
Tipos Abstractos de Datos Listas
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 264 / 289
Tipos Abstractos de Datos Listas
Observaciones
Qu implemetacin elegir?
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 265 / 289
Tipos Abstractos de Datos Pilas
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 266 / 289
Tipos Abstractos de Datos Pilas
3 TAD Pila
3.1 Nivel abstracto o de definicin
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 267 / 289
Tipos Abstractos de Datos Pilas
creaVaca(p) Inicia o crea la pila p como una pila vaca, sin ningn
elemento
tope(p) Devuelve el valor del elemento del tope o cima de la pila p.
No siempre utilizada
suprime(p) Elimina el elemento del tope o cima de la pila.
Generalmente, adems de eliminarlo, tambin devuelve el
valor almacenado en esa posicin. En este caso la operacin
tope(p) no se utiliza
inserta(x, p) Aade el elemento x en la posicin a continuacin del
tope o cima pasando a ser este el nuevo tope o cima de la
pila
vaca(p) Devuelve verdadero si la pila p est vaca, y falso en caso
contrario
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 268 / 289
Tipos Abstractos de Datos Pilas
Observaciones
Gestin de errores y uso
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 269 / 289
Tipos Abstractos de Datos Pilas
1: miPila : tipoPila
2: car acter , car acter 2 : tipoCar acter
3: creaVacia(miPila)
4: car acter leerCar acter (fichero)
5: mientras car acter 6= EOF hacer
6: si car acter {0 [0 ,0 {0 ,0 (0 } entonces
7: inserta(car acter , miPila)
8: si no
9: si vac ia(miPila) entonces
10: error ("no hay correspondencia)
11: si no
12: car acter 2 suprime(miPila)
13: si car acter 6= cierre de car acter 2 entonces
14: error ("no hay correspondencia)
15: fin si
16: fin si
17: fin si
18: car acter leerCar acter (fichero)
19: fin mientras
20: si NO vac ia(miPila) entonces
21: error ("no hay correspondencia)
22: fin si
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 270 / 289
Tipos Abstractos de Datos Pilas
Mediante matrices
Los elementos se almacenan en celdas contiguas de una matriz
Todo lo visto en listas utilizando matrices para su implementacin es
vlido para pilas. Una pila no deja de ser caso particular de Lista
Esta reperesentacin requiere conocer el tamao de la matriz en
tiempo de compilacin
Es la mejor opcin si el tamao mximo de las variables pila no es muy
elevado. En caso contrario, la mejor opcin es una lista enlazada
Mediante punteros (listas enlazadas)
Si no se conoce en tiempo de compilacin la cantidad de memoria
necesaria, o el tamao mximo a ocupar
Si la diferencia entre el tamao mximo necesario y el ocupado
realmente es muy elevada
Al realizar las inserciones y supresiones de valores por un nico extremo
de la lista, la implementacin mediante listas simplemente enlazadas es
muy sencilla
Fundamental realizar comprobacin de errores, aunque resulten
redundantes y parezca que se consume ms tiempo en esta tarea que
en las propias de manipulacin de la pila:
Nunca se debera poder sacar un elemento de una pila vaca
Sera conveniente que no se produjese un desbordamiento de pila
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 271 / 289
Tipos Abstractos de Datos Pilas
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 272 / 289
Tipos Abstractos de Datos Pilas
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 274 / 289
Tipos Abstractos de Datos Pilas
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 275 / 289
Tipos Abstractos de Datos Pilas
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 277 / 289
Tipos Abstractos de Datos Colas
4 TAD Cola
4.1 Nivel abstracto o de definicin
Las operaciones tpicas que incluye un TAD cola son creaVaca, vaca,
inserta, suprime y frente. Dependiendo de la especificacin de
suprime, frente puede que no se necesite
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 278 / 289
Tipos Abstractos de Datos Colas
creaVaca(c) Inicia o crea la cola c como una cola vaca, sin ningn
elemento
frente(c) Devuelve el valor del elemento del frente de la cola c. No
siempre utilizada
suprime(c) Elimina el elemento del frente o primer elemento de la cola,
pasando a ser el nuevo frente el siguiente elemento.
Generalmente, adems de suprimirlo, tambin devuelve el
valor almacenado en esa posicin y no se utiliza la funcin
frente(c)
inserta(x, c) Aade el elemento x en la posicin a continuacin del
fondo, o ltimo elemento de la cola, pasando a ser el nuevo
fondo de la misma
vaca(c) Devuelve verdadero si la cola p est vaca, y falso en caso
contrario
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 279 / 289
Tipos Abstractos de Datos Colas
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 281 / 289
Tipos Abstractos de Datos Colas
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 282 / 289
Tipos Abstractos de Datos Colas
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 283 / 289
Tipos Abstractos de Datos Colas
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 284 / 289
Tipos Abstractos de Datos Colas
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 285 / 289
Tipos Abstractos de Datos Colas
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 286 / 289
Tipos Abstractos de Datos Colas
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 287 / 289
Tipos Abstractos de Datos Colas
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 288 / 289
Tipos Abstractos de Datos Colas
Licencia
Ms info: http://creativecommons.org/licenses/by-sa/3.0/es/
Ivn lvarez Navia - M.J.Polo Martn (USAL) Estructuras de Datos y Algoritmos I curso 2016-2017 289 / 289