










Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Asignatura: Analisis y diseño de algoritmos I, Profesor: , Carrera: I. T. Infor. Sistemas, Universidad: UCA
Tipo: Apuntes
1 / 18
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!











Dpto. de Lenguajes y Sistemas Informáticos UNIVERSIDAD DE CÁDIZ
Francisco Palomo Lozano Inmaculada Medina Bulo Análisis y Diseño de Algoritmos I. 2006-07.
Pág. 3.1 Tiempo y espacio algorítmicos
∫
π
∑
∏
Tiempo y espacio algorítmicos El análisis de algoritmos proporciona las herra- mientas necesarias para comparar distintos al- goritmos que resuelven un mismo problema. Esta comparación se hace atendiendo a crite- rios de eficiencia computacional, es decir, a có- mo consumen los algoritmos los recursos compu- tacionales, principalmente, tiempo y espacio. Estos conceptos de «tiempo» y «espacio» algo- rítmicos son abstractos, a diferencia de los con- sumidos por los programas, que son reales. En general, el consumo depende de cada entra- da pero, a veces, conviene medirlo en función del tamaño de la entrada. A cada d ∈ D se asocia n = ‖d‖ ∈ N, que depende de la re- presentación interna.
Pág. 3.3 Enfoques en el análisis
∫
π
∑
∏
Enfoques en el análisis I Teórico Cálculo de la función de tiempo del algorit- mo y estudio matemático. I Empírico Programación del algoritmo, medida de los tiempos reales del programa y estudio cua- litativo de los resultados. I Híbrido Obtención de un modelo teórico de la fun- ción de tiempo del algoritmo, programación del algoritmo, medida de los tiempos reales del programa y ajuste de los parámetros del modelo mediante regresión.
Pág. 3.4 Peor caso, mejor caso y promedio
∫
π
∑
∏
Peor caso, mejor caso y promedio Un algoritmo no tarda el mismo tiempo en resol- ver todos los ejemplares del mismo tamaño. En realidad, el tiempo de un algoritmo es función de su entrada y no del tamaño de dicha entrada. Esto complica el análisis: no podemos, en gene- ral, considerar todas las posibles entradas. Una alternativa es estudiar, para cada tamaño n que pueda tomar la entrada, cuál es el peor caso que puede producirse. Definimos el tiempo en el peor caso como:
tm ´ax(n) = m ´ax{t(d) | d ∈ D ∧ ‖d‖ = n}
Análogamente, el tiempo en el mejor caso es:
tm´ın(n) = m´ın{t(d) | d ∈ D ∧ ‖d‖ = n}
Pág. 3.6 Análisis de las estructuras de control
∫
π
∑
∏
Análisis de las estructuras de control Para calcular t(n) basta fijar una operación crí- tica y contar cuántas veces se ejecuta según el tipo de análisis deseado. Pero al llegar a una estructura de control hay que analizar cada una de sus componentes fren- te a n para luego poder combinar los resultados. Si una instrucción altera n, esto se complica: hay que calcular su nuevo valor y analizar las instrucciones siguientes en función de él. En los casos en que esto no ocurre, podemos obtener las siguientes reglas generales. I Composición C 1 ← tC 1 (n) C 2 ← tC 2 (n) t(n) = tC 1 (n) + tC 2 (n)
Pág. 3.
∫ π
∑ ∏
Condicional^ si
B
←
tB
(n
)
C
1
←
tC
( 1 n)
si no
C
2
←
tC
( 2 n)
Peor caso:
t(
n) =
t
n) +
m ´
ax
{t
C^1
(n
), t
C^2
(n
Mejor caso:
t(
n) =
t
n) +
m´
ın
{t
C^1
(n
), t
C^2
(n
Promedio:
t(
n) =
t
n) +
)t
C^1
(n
tC
n)
Hay que tener en cuenta que las probabilidades que aparecen enel caso promedio pueden depender de
n
.
Análisis y Diseño de Algoritmos I
Tema 3. 2006-07.
Pág. 3.9 Ejemplo: mínimo
∫
π
∑
∏
Ejemplo: mínimo Sea 〈V, ≤〉 un orden total y v ∈ Vn^ un vector. Se desea el mínimo de v según ≤. mínimo : v × n → m m ← v[ 1 ] desde i ← 2 hasta n si v[i] < m ← operación crítica m ← v[i]
El invariante implica que m = m´ın 1 ≤α<i v[α]. Mediremos el tiempo en número de comparacio- nes entre elementos del vector. El tiempo viene dado por t(n), que no depende del contenido de v, sólo de n. No hay diferencia entre el mejor caso, el peor caso y el promedio.
t(n) = n − 1 ∈ Θ(n)
Pág. 3.10 Ejemplo: ordenado
∫
π
∑
∏
Ejemplo: ordenado Se trata de comprobar si v está ordenado. ordenado : v × n → b 〈b, i〉 ← 〈>, 1〉 mientras i < n ∧ b 〈b, i〉 ← 〈v[i] ≤ v[i + 1 ], i + 1 〉 El invariante implica que b ≡ ord(v, 1, i) con:
ord(v, i, j) ≡ ∀α ∈ [i, j) v[α] ≤ v[α + 1 ]
Analizaremos el número de comparaciones en- tre elementos del vector cuando n > 1, ya que si n ≤ 1 no se hace ninguna. El tiempo viene dado por t(n), que depende del contenido de v, y no sólo de n. Hay diferencia entre el mejor caso, el peor caso y el promedio.
tmin(n) = 1 tmax(n) = n − 1
Pág. 3.
∫ π
∑ ∏
Para simplificar, podemos asumir que todos los elementos del vectorson distintos: esto reduce el número de entradas posibles a las
n
permutaciones de
n
elementos distintos.
Si conocemos la probabilidad de que
i^
acabe en cada posible valor y
el tiempo que se emplea en cada caso, podemos calcular
t(
n)
.
t(
n
n∑ α=^1
i^ =
α
)t
(i
α
Nótese que
(i
α
)^ es difícil de calcular directamente, pero:
i^ =
α
i^ ≥
α
(i
α
α < n
i^ ≥
n
α^
n
Análisis y Diseño de Algoritmos I
Tema 3. 2006-07.
Pág. 3.
∫ π
∑ ∏
Todo lo que se necesita es conocer
(i
α
): la probabilidad de que
el vector contenga un prefijo ordenado de longitud mínima
α
(i
α
n α−^1
n
α
n!
(α
Y^
t(
i^ =
α
α
, luego:
t(
n
n−
1 ∑^ α=
i^ ≥
α
(i
α
α^
(i
n
n
n∑ α=^2
i^ ≥
α
n∑ α=^2
(α
Cuando
n
es grande,
t(
n
e
. En todo caso,
t(
n
Análisis y Diseño de Algoritmos I
Tema 3. 2006-07.
Pág. 3.15 Ejemplo: inserción en orden
∫
π
∑
∏
Si p es la posición final de v[n] nos queda:
t(n) =
∑^ n
α= 1
P(p = α)t(p = α)
La hipótesis implica que p está uniformemente distribuida en el intervalo discreto [1, n]:
P(p = 1 ) = · · · = P(p = n) = 1 n Pero, cuando p = α, la operación crítica se ejecuta n − α + 1 veces, salvo si α = 1 , ya que entonces se ejecuta una vez menos:
t(n) =
n
(n − 1 ) +
n
∑^ n
α= 2
(n − α + 1 )
n
n − 1 + n(n^ −^1 ) 2
= n^ +^1 2
n
∈ Θ(n)
Pág. 3.16 Ejemplo: mejora de la inserción
∫
π
∑
∏
Ejemplo: mejora de la inserción I Los intercambios se producen en cadena y pueden sustituirse por asignaciones simples (ahorramos 2/3 de las asignaciones). I En la comparación v[n] < v[n− 1 ], el valor de v[n] es siempre el mismo y puede sus- tituirse por una variable x que lo contenga (ahorramos un acceso por comparación). inserción : v × n → v x ← v[n] mientras n > 1 ∧ x < v[n − 1 ] v[n] ← v[n − 1 ] n ← n − 1 v[n] ← x La constante multiplicativa disminuye, pero el re- sultado principal no cambia: el orden no varía.