Para comprender realmente la inducción estructural, debe estar familiarizado con la noción de un tipo de datos algebraico. Hay muchas introducciones, incluido el artículo de Wikipedia al que me vinculé que le dará todos los detalles, pero la idea básica es que tiene dos conjuntos de constructores para hacer un objeto de un tipo particular:
- Algún conjunto de constructores que le permiten crear un objeto de su tipo sin uno anterior.
- Un conjunto de constructores que le permiten tomar múltiples objetos del mismo tipo y combinarlos para crear un nuevo objeto del mismo tipo.
El ejemplo clásico es la lista de tipos de datos enteros de Haskell, que se define mediante data List Int = Nil | Cons Int (List Int)
data List Int = Nil | Cons Int (List Int)
. Eso dice que puede crear una lista vacía sin argumentos, o puede crear una lista de enteros a partir de un entero y una lista de enteros. Si desea hacer una lista de múltiples elementos, simplemente comience con una lista vacía (Cero), y luego agregue repetidamente un elemento más (Contras).
La inducción estructural es una forma generalizada de hacer argumentos inductivos sobre los tipos de datos algebraicos. Lo que dice es esto: si una propiedad se cumple para cada objeto de tipo, puede pasar a través de los constructores en 1.), y es preservada por cada constructor en 2.), entonces se cumple para cada objeto del tipo en consideración. Si sabe algo sobre cómo funcionan las funciones recursivas con los tipos de datos algebraicos, puede ver cómo esta es una forma muy natural de razonar sobre ese tipo de programas. El artículo de Wikipedia sobre inducción estructural tiene un buen ejemplo de la aplicación de la inducción estructural para demostrar una propiedad no trivial de una función en las listas, y recomiendo tomarse el tiempo para comprender eso.
- ¿Cómo resolverías un problema difícil de matemáticas en la escuela secundaria?
- ¿Cómo es una típica entrevista de Cambridge Mathematics? ¿Alguna pregunta que la gente pueda compartir?
- ¿Qué alfabetos no se usan en matemáticas y por qué?
- ¿Cuál es el significado del plano proyectivo en matemáticas?
- Mi hermano está en octavo en Gujarati Medium y no le gusta estudiar en absoluto. Es muy pobre en matemáticas e inglés. ¿Cómo le enseño?
Ahora, ¿qué pasa con la inducción estándar? Bueno, puedes imaginar un tipo de datos algebraicos dado por data Natural = Z | S Natural
data Natural = Z | S Natural
que corresponde a los números naturales. La inducción estándar es solo inducción estructural para este tipo de datos en particular.
Si desea muchos más detalles en este sentido, [1312.2696] Principios de inducción estructural para programadores funcionales es un muy buen lugar para comenzar a leer.