Si tengo un algoritmo que devuelve la entrada de un conjunto con el mayor valor, ¿cómo demuestro que el algoritmo es verdadero matemáticamente ? (Sé que podría escribir pruebas para ello.) Entiendo cómo utilizar la inducción matemática para demostrar un algoritmo recursivo sobre una relación de recurrencia lineal o una secuencia.
Creo que la diferencia con la que estoy teniendo dificultades es que una prueba inductiva de una secuencia o ecuación trata con variables escalares, mientras que un algoritmo que devuelve la entrada de un conjunto con el mayor valor trata con variables de conjunto con múltiples entradas y de longitud arbitraria.
Aquí está el sencillo algoritmo en pseudocódigo, por si le sirve a alguna persona amable que me ayude con esto:
function maximum(Set s) {
if (s.length == 0) {
return null;
} else if (s.length == 1) {
return s[0];
} else if (s[0] > s[s.length - 1]) {
s = s.removeLast();
return maximum(s);
} else {
s = s.removeFirst();
return maximum(s);
}
}
Que removeFirst y removeLast devuelvan una nueva vista del conjunto, para que el conjunto original no sea troceado.
Así que no sé cómo aplicar la inducción a esto o si debo utilizar algún otro método.
Gracias de antemano por cualquier ayuda.
Chris