Tarea 6 de Análisis de Algoritmos
Trimestre 2012 Otoño
Entrega: 18:00 del 22 de noviembre de 2012
en G206.
- [10+10 puntos] Considera el siguiente algoritmo iterativo
que genera cadenas binarias de N bits en el arreglo C[1], ...,
C[N], usando dos posiciones adicionales C[0] y C[N+1]:
Para i de 0 a N+1
C[i] = 0
mientras C[n+1] = 0
procesa(C)
incrementa(C)
donde además incrementa(C) está dada por:
i = 1
mientras C[i-1] = 0
complementa el bit C[i]
i = i+1
(a) Demuestra que procesa(C) se llama exactamente una vez con
cada cadena de N bits. (b) Demuestra que la cantidad de veces
que se complementa algún bit es exactamente igual a 2N+1
- N - 2.
- [10+10 puntos] Considera el siguiente algoritmo recursivo
que genera cadenas binarias de N bits en el arreglo C[1], ...,
C[N]:
genera(N)
si N = 0 entonces procesa(C)
en caso contrario
genera(N-1)
complementa el bit C[N]
genera(N-1)
(a) Demuestra que procesa(C) se llama exactamente una vez con
cada cadena de N bits. (b) Demuestra que la cantidad de veces
que se complementa algún bit es exactamente igual a 2N
- 1.