Está en la página 1de 6

UPC – Departamento de Ciencias – MATEMATICA DISCRETA (MA265)

Invariante de un algoritmo

CONTENIDO

Unidad 2: LÓGICA Y ALGORITMOS


2.4 Invariante de un algoritmo
▪ Introducción
▪ Invariante de un algoritmo iterativo

Profesores MA265 1
UPC – Departamento de Ciencias – MATEMATICA DISCRETA (MA265)

Análisis de algoritmos

Introducción
Un algoritmo es una secuencia de pasos lógicos necesarios para llevar a cabo una tarea
específica, como la solución de un problema. Los algoritmos son independientes tanto del
lenguaje de programación en que se expresan como de la computadora que los ejecuta.
Invariante de un algoritmo iterativo
En informática se conoce como invariante a una condición que se sigue cumpliendo después
de la ejecución de determinadas instrucciones. Se cumple tanto antes como después de estas
instrucciones, permaneciendo sin variación, por ello se denomina invariante. Las invariantes
se pueden utilizar para demostrar el buen funcionamiento de algoritmos y cumplen con un
papel importante en el diseño.
Ejemplo 1
Para el siguiente algoritmo:
𝑆𝑈𝐵𝑅𝑈𝑇𝐼𝑁𝐴 𝑆𝑈𝑀𝐴 (𝑋, 𝑌; 𝑍)
1. 𝑍 ← 𝑋/𝑌
2. 𝑊 ← 𝑌
𝑊𝐻𝐼𝐿𝐸 (𝑊 > 0)
𝑎. 𝑍 ← 𝑍 + 𝑋
𝑏. 𝑊 ← 𝑊 − 1
3. 𝑅𝐸𝑇𝑈𝑅𝑁
𝐹𝐼𝑁 𝐷𝐸 𝐿𝐴 𝑆𝑈𝐵𝑅𝑈𝑇𝐼𝑁𝐴 𝑆𝑈𝑀𝐴
a) Determine el invariante.
b) Pruebe la validez de la invariante mediante inducción matemática.
Resolución
Cálculo de la invariante
Antes del ciclo
𝑍0 = 𝑋/𝑌 𝑊0 = 𝑌
En el ciclo
𝑋
𝑍1 = 𝑍0 + 𝑋 = 𝑌 + 𝑋 𝑊1 = 𝑊0 − 1 = 𝑌 − 1
𝑋
𝑍2 = 𝑍1 + 𝑋 = 𝑌 + 2𝑋 𝑊2 = 𝑊1 − 1 = 𝑌 − 2
𝑋
𝑍3 = 𝑍2 + 𝑋 = 𝑌 + 3𝑋 𝑊3 = 𝑊2 − 1 = 𝑌 − 3

………… …………

Profesores MA265 2
UPC – Departamento de Ciencias – MATEMATICA DISCRETA (MA265)

………… …………
𝑋
𝑍𝑛 = + 𝑛𝑋 𝑊𝑛 = 𝑌 − 𝑛
𝑌
Despejando, 𝑛 = 𝑌 − 𝑊𝑛 , reemplazamos en 𝑍𝑛
𝑋
𝑍𝑛 = + (𝑌 − 𝑊𝑛 )𝑋
𝑌
𝑋
𝑍𝑛 = + 𝑌𝑋 − 𝑊𝑛 𝑋
𝑌
𝑿
Invariante: 𝒁𝒏 + 𝑾𝒏 𝑿 = 𝒀 + 𝒀𝑿
Se observa que la invariante es una expresión independiente de 𝑛

Demostración de la validez de la invariante


𝑿
𝑷(𝒏): 𝒁𝒏 + 𝑾𝒏 𝑿 = + 𝒀𝑿, 𝒑𝒂𝒓𝒂 𝒕𝒐𝒅𝒐 𝒏 ≥ 𝟎
𝒀
Demostremos que 𝑃(0) es verdadero
𝑋
𝑃(0): 𝑍0 + 𝑊0 𝑋 = + 𝑌𝑋
𝑌
𝑋 𝑋
+ 𝑌𝑋 = 𝑌 + 𝑌𝑋 …………. Verdadero
𝑌
Asumimos que 𝑃(𝑛) es verdadero y por lo tanto 𝑃(𝑘) es verdadero
𝑋
𝑃(𝑘): 𝑍𝑘 + 𝑊𝑘 𝑋 = + 𝑌𝑋
𝑌
Debemos demostrar que 𝑃(𝑘 + 1) es verdadero
𝑋
𝑃(𝑘 + 1): 𝑍𝑘+1 + 𝑊𝑘+1 𝑋 = + 𝑌𝑋
𝑌
𝑋
𝑃(𝑘 + 1): 𝑍𝑘 + 𝑋 + (𝑊𝑘 − 1)𝑋 = + 𝑌𝑋
𝑌
𝑋
𝑃(𝑘 + 1): 𝑍𝑘 + 𝑋 + 𝑊𝑘 𝑋 − 𝑋 = + 𝑌𝑋
𝑌
𝑋
𝑃(𝑘 + 1): 𝑍𝑘 + 𝑊𝑘 𝑋 = + 𝑌𝑋
𝑌
𝑋 𝑋
𝑃(𝑘 + 1): 𝑌 + 𝑌𝑋 = 𝑌 + 𝑌𝑋 …………….. Verdadero
Por lo tanto 𝑃(𝑛) se cumple para todo 𝑛 ≥ 0
Ejemplo 2
Para el siguiente algoritmo:
𝑆𝑈𝐵𝑅𝑈𝑇𝐼𝑁𝐴 𝑃𝑅𝑂𝐷𝑈𝐶𝑇𝑂 𝑆𝑈𝑀𝐴 (𝑋, 𝑌; 𝑍)
1. 𝑍 ← 𝑋
2. 𝑊 ← 𝑌
𝑊𝐻𝐼𝐿𝐸 (𝑊 > 0)
𝑎. 𝑍 ← 𝑌𝑍 + 𝑋
𝑏. 𝑊 ← 𝑊 − 1
3. 𝑅𝐸𝑇𝑈𝑅𝑁
𝐹𝐼𝑁 𝐷𝐸 𝐿𝐴 𝑆𝑈𝐵𝑅𝑈𝑇𝐼𝑁𝐴 𝑃𝑅𝑂𝐷𝑈𝐶𝑇𝑂 𝑆𝑈𝑀𝐴

Profesores MA265 3
UPC – Departamento de Ciencias – MATEMATICA DISCRETA (MA265)

a) Determine el invariante.
b) Pruebe la validez de la invariante mediante inducción matemática.
Resolución
Cálculo de la invariante
Antes del ciclo
𝑍0 = 𝑋 𝑊0 = 𝑌
En el ciclo
𝑍1 = 𝑌𝑍0 + 𝑋 = 𝑌𝑋 + 𝑋 𝑊1 = 𝑊0 − 1 = 𝑌 − 1
𝑍2 = 𝑌𝑍1 + 𝑋 = 𝑌 2 𝑋 + 𝑌𝑋 + 𝑋 𝑊2 = 𝑊1 − 1 = 𝑌 − 2
𝑍3 = 𝑌𝑍2 + 𝑋 = 𝑌 3 𝑋 + 𝑌 2 𝑋 + 𝑌𝑋 + 𝑋 𝑊3 = 𝑊2 − 1 = 𝑌 − 3
………… …………
𝑍𝑛 = 𝑌 𝑛 𝑋 + 𝑌 𝑛−1 𝑋 + ⋯ + 𝑌𝑋 + 𝑋 𝑊𝑛 = 𝑌 − 𝑛
𝑌 𝑛+1 −1
𝑍𝑛 = 𝑋 ( ) 𝑊𝑛 = 𝑌 − 𝑛
𝑌−1

Despejando, 𝑛 = 𝑌 − 𝑊𝑛 , reemplazamos en 𝑍𝑛
𝑌−𝑊𝑛 +1
𝑍𝑛 (𝑌 − 1) = 𝑋𝑌 −𝑋
𝑌+1
𝑋𝑌
𝑍𝑛 (𝑌 − 1) = 𝑊 − 𝑋
𝑌 𝑛
𝑋𝑌 𝑌+1
𝑍𝑛 (𝑌 − 1) + 𝑋 = 𝑊
𝑌 𝑛
(𝑍𝑛 (𝑌 − 1) + 𝑋)𝑌 𝑛 = 𝑋𝑌 𝑌+1
𝑊

Invariante: (𝒁𝒏 (𝒀 − 𝟏) + 𝑿)𝒀𝑾𝒏 = 𝑿𝒀𝒀+𝟏


Se observa que la invariante es una expresión independiente de 𝑛
Demostración de la validez de la invariante
𝑷(𝒏): (𝒁𝒏 (𝒀 − 𝟏) + 𝑿)𝒀𝑾𝒏 = 𝑿𝒀𝒀+𝟏 , 𝒑𝒂𝒓𝒂 𝒕𝒐𝒅𝒐 𝒏 ≥ 𝟎
Demostremos que 𝑃(0) es verdadero
𝑃(0): (𝑍0 (𝑌 − 1) + 𝑋)𝑌 𝑊0 = 𝑋𝑌 𝑌+1
(𝑋(𝑌 − 1) + 𝑋)𝑌 𝑌 = 𝑋𝑌 𝑌+1 …………. Verdadero
Asumimos que 𝑃(𝑛) es verdadero y por lo tanto 𝑃(𝑘) es verdadero
𝑃(𝑘): (𝑍𝑘 (𝑌 − 1) + 𝑋)𝑌 𝑊𝑘 = 𝑋𝑌 𝑌+1
Debemos demostrar que 𝑃(𝑘 + 1) es verdadero
𝑃(𝑘 + 1): (𝑍𝑘+1 (𝑌 − 1) + 𝑋)𝑌 𝑊𝑘+1 = 𝑋𝑌 𝑌+1
𝑃(𝑘 + 1): ((𝑌𝑍𝑘 + 𝑋)(𝑌 − 1) + 𝑋)𝑌 𝑊𝑘−1 = 𝑋𝑌 𝑌+1
𝑃(𝑘 + 1): (𝑌 2 𝑍𝑘 − 𝑌𝑍𝑘 + 𝑋𝑌)𝑌 𝑊𝑘−1 = 𝑋𝑌 𝑌+1
𝑃(𝑘 + 1): (𝑌1 𝑍𝑘 − 𝑍𝑘 + 𝑋)𝑌 𝑊𝑘 = 𝑋𝑌 𝑌+1
𝑃(𝑘 + 1): (𝑍𝑘 (𝑌 − 1) + 𝑋)𝑌 𝑊𝑘 = 𝑋𝑌 𝑌+1
𝑃(𝑘 + 1): 𝑋𝑌 𝑌+1 = 𝑋𝑌 𝑌+1 …………….. Verdadero
Por lo tanto 𝑃(𝑛) se cumple para todo 𝑛 ≥ 0

Profesores MA265 4
UPC – Departamento de Ciencias – MATEMATICA DISCRETA (MA265)

EJERCICIOS PROPUESTOS
1. Para el siguiente algoritmo:
𝑆𝑈𝐵𝑅𝑈𝑇𝐼𝑁𝐴 𝑅𝐸𝑆𝑇𝐴 (𝑋, 𝑌; 𝑍)
1. 𝑍 ← 𝑋
2. 𝑊 ← 𝑌 ∗ 𝑌
𝑊𝐻𝐼𝐿𝐸 (𝑊 > 0)
𝑎. 𝑍 ← 𝑍 − 𝑌
𝑏. 𝑊 ← 𝑊 − 1
3. 𝑅𝐸𝑇𝑈𝑅𝑁
𝐹𝐼𝑁 𝐷𝐸 𝐿𝐴 𝑅𝑈𝑇𝐼𝑁𝐴 𝑅𝐸𝑆𝑇𝐴
a. Determine el invariante.
b. Pruebe la validez de la invariante mediante inducción matemática.

2. Para el siguiente algoritmo:


𝑺𝑼𝑩𝑹𝑼𝑻𝑰𝑵𝑨 𝑆𝑈𝑀𝐴 (𝑋, 𝑌; 𝑍)
1. 𝑍 ← 𝑋/𝑌
2. 𝑊 ← 𝑌
𝑊𝐻𝐼𝐿𝐸 (𝑊 > 0)
𝑎. 𝑍 ← 𝑍 + 𝑋
𝑏. 𝑊 ← 𝑊 − 1
3. 𝑅𝐸𝑇𝑈𝑅𝑁
𝐹𝐼𝑁 𝐷𝐸 𝐿𝐴 𝑅𝑈𝑇𝐼𝑁𝐴 𝑃𝑅𝑂𝐷𝑈𝐶𝑇𝑂
a. Determine el invariante.
b. Pruebe la validez de la invariante mediante inducción matemática.

3. Para el siguiente algoritmo:


𝑆𝑈𝐵𝑅𝑈𝑇𝐼𝑁𝐴 𝑃𝑅𝑂𝐷𝑈𝐶𝑇𝑂 (𝑋, 𝑌; 𝑍)
1. 𝑍 ← 𝑋 ∗ 𝑌
2. 𝑊 ← 𝑌
𝑊𝐻𝐼𝐿𝐸 (𝑊 > 0)
𝑎. 𝑍 ← 𝑍 ∗ 𝑌
𝑏. 𝑊 ← 𝑊 − 1
3. 𝑅𝐸𝑇𝑈𝑅𝑁
𝐹𝐼𝑁 𝐷𝐸 𝐿𝐴 𝑅𝑈𝑇𝐼𝑁𝐴 𝑃𝑅𝑂𝐷𝑈𝐶𝑇𝑂
a. Determine el invariante.
b. Pruebe la validez de la invariante mediante inducción matemática.

Profesores MA265 5
UPC – Departamento de Ciencias – MATEMATICA DISCRETA (MA265)

4. Para el siguiente algoritmo:


𝑺𝑼𝑩𝑹𝑼𝑻𝑰𝑵𝑨 𝑅𝐸𝑆𝑇𝐴 (𝑋, 𝑌; 𝑍)
1. 𝑍 ← 𝑋
2. 𝑊 ← 𝑌
𝑊𝐻𝐼𝐿𝐸 (𝑊 > 0)
𝑎. 𝑍 ← 𝑍 + 𝑋 + 𝑌
𝑏. 𝑊 ← 𝑊 − 1
3. 𝑅𝐸𝑇𝑈𝑅𝑁
𝐹𝐼𝑁 𝐷𝐸 𝐿𝐴 𝑅𝑈𝑇𝐼𝑁𝐴 𝑃𝑅𝑂𝐷𝑈𝐶𝑇𝑂
a. Determine el invariante.
b. Pruebe la validez de la invariante mediante inducción matemática.

RESPUESTAS DE EJERCICIOS PROPUESTOS


1. Invariante: 𝑍𝑛 − 𝑌𝑊𝑛 = 𝑋 − 𝑌 3
𝑋
2. 𝑍𝑛 + 𝑊 = + 𝑌𝑋
𝑌
3. Invariante: 𝑍𝑛 𝑌 𝑊𝑛 = 𝑋𝑌 𝑌+1
4. 𝑍𝑛 + 𝑊𝑛 (𝑋 + 𝑌) = 𝑌𝑋 + 𝑋 + 𝑌 2

BIBLIOGRAFÍA
EPP, S. (2012). Matemática discreta con aplicaciones. México DF, México: Cengage Learning.
(https://n9.cl/uqq6) Revisar páginas desde 244 hasta 267.

Profesores MA265 6

También podría gustarte