martes, 21 de octubre de 2014

El elemento neutro de la suma y el producto

Hay recuerdos muy lejanos al aprender a sumar o a multiplicar, en el cole (o en la universidad) nos explicaban las propiedades de la suma y del producto: propiedad transitiva, propiedad distributiva, etc. una de las propiedades (generalmente la primera) es la propiedad del elemento neutro que dice:

A todo número que se le sume cero da el mismo número. -> El 0 es el elemento neutro de la suma

A todo número que se le multiplique por uno da el mismo número. -> El 1 es el elemento neutro de la multiplicación.

¿A que viene todo esto del elemento neutro? Esto va relacionado a operaciones que hacemos de forma acumulativa, por ejemplo:

1. Calcule la suma de los N primeros números enteros.
2. Calcula el factorial de un número N.

En ambos casos, una de las soluciones por las que se podría optar es hacer un bucle que acumule la suma o el producto de esta forma:

//ejemplo 1
Para i=1 hasta N hacer
  suma = suma + i;
Fin_Para

//ejemplo 2
Para i=1 hasta N hacer
  factorial = factorial *  i;
Fin_Para

En ambos casos al estar calculando un valor acumulado, reutiliza el valor de la variable en la iteración anterior (suma utiliza a suma para calcularse a si misma, lo mismo con factorial).
¿Pero qué pasa en la primera iteración? En la primera iteración es necesario que suma y factorial simplemente sean igual a "i", por este motivo es necesario (indispensable) inicializar ambas variables con el valor del elemento neutro. Los algoritmos completos quedarían así:

//ejemplo 1
suma = 0: //variable inicializada con el valor del elemento neutro de la operación que haremos
Para i=1 hasta N hacer
  suma = suma + i //la primera iteración: suma = 0 + i;
Fin_Para

//ejemplo 2
factorial = 1 //variable inicializada con el valor del elemento neutro de la operación que haremos
Para i=1 hasta N hacer
  factorial = factorial *  i: //la primera iteración:  factorial = 1 * i
Fin_Para

Para cualquier cálculo en que utilicemos acumuladores es absolutamente necesario inicializarlos correctamente, por lo general con el valor del elemento neutro de la operación de acumulación.

No hay comentarios:

Publicar un comentario