fbpx
Wikipedia

Tipo de dato algebraico

En matemáticas discretas es usual introducir definiciones de estructuras recursivas dando los casos de definición y un axioma de clausura indicando que ninguna otra cosa forma parte de lo definido.

Por ejemplo, los árboles con información en los nodos pueden definirse como sigue:

Sea T un conjunto. Los árboles con información en los nodos son todos los valores que se pueden construir con las reglas siguientes.

  1. El árbol vacío es un árbol y es representado con la constante AVacio.
  2. Si y son árboles, y x es un elemento de T, entonces Nodo(,x,) es un árbol.
  3. Los árboles son únicamente los valores que se construyen utilizando las reglas 1 y 2.

La construcción correspondiente en los lenguajes de programación se llama Tipo de dato abstracto Sus reglas de tipo polimórficas fueron introducidas por Robin Milner junto con la definición del lenguaje Standard ML y han sido adoptadas desde entonces en diversos lenguajes de programación, sobre todo en los lenguajes de programación funcionales. Por ejemplo, la definición del tipo árbol binario con información en los nodos de tipo T se escribe en Ocaml como sigue:

 type 'T Arbol = AVacio | Nodo of ('T Arbol * 'T * 'T Arbol) 

y en sintaxis de Haskell (con información en los nodos de tipo t):

 data Arbol t = AVacio | Nodo (Arbol t) t (Arbol t) 

Los constructores del tipo Árbol son AVacio y Nodo los cuales, al recibir los argumentos necesarios producen un valor del tipo árbol. Por ejemplo, en Ocaml, AVacio es un árbol al igual que Nodo (AVacio,5,AVacio).

Las operaciones sobre los tipos recursivos generalmente se escriben utilizando la construcción de llamada por patrones. Por ejemplo, en Haskell, el número de niveles de un árbol se define como:

 niveles :: Arbol t -> Int niveles AVacio = 0 niveles (Nodo i n d) = 1 + max (niveles i) (niveles d) 

en Standard ML la misma función se escribe

 fun niveles AVacio = 0 | niveles Nodo(i,n,d) = 1 + max (niveles i) (niveles d) 

Corrección de programas

A cada tipo de datos del lenguaje algebraico corresponde el orden bien fundamentado de subtérminos y un esquema de inducción estructural sobre la base de la definición del tipo. En el caso de los árboles éstos son los siguientes:

 

 

Para demostrar la terminación de la función niveles aplicando este esquema de inducción estructural, se tiene que demostrar, utilizando las reglas semánticas del lenguaje, que la expresión (niveles AVacio) termina y que si (niveles i) y (niveles d) terminan entonces (niveles (Nodo (i, n, d)) termina también.

La llamada por patrones es una operación compleja que puede definirse con ayuda de dos primitivas, El operador is permite identificar el caso particular de una definición y la definición estructurada de variables permite obtener los componentes de un caso ya identificado:

En el ejemplo de árboles, el predicado e is AVacio es cierto cuando el árbol e es efectivamente un árbol vacío y e is Nodo es cierto cuando e es un nodo. Una definición del tipo let Nodo (u, x, v) = e ..., que sólo tiene sentido cuando e is Nodo es cierto, permite asociar a las variables u, x, v los componentes del nodo.

Enlaces externos

    •   Datos: Q1322511

    tipo, dato, algebraico, matemáticas, discretas, usual, introducir, definiciones, estructuras, recursivas, dando, casos, definición, axioma, clausura, indicando, ninguna, otra, cosa, forma, parte, definido, ejemplo, árboles, información, nodos, pueden, definirs. En matematicas discretas es usual introducir definiciones de estructuras recursivas dando los casos de definicion y un axioma de clausura indicando que ninguna otra cosa forma parte de lo definido Por ejemplo los arboles con informacion en los nodos pueden definirse como sigue Sea T un conjunto Los arboles con informacion en los nodos son todos los valores que se pueden construir con las reglas siguientes El arbol vacio es un arbol y es representado con la constante AVacio Si t 1 displaystyle t 1 y t 2 displaystyle t 2 son arboles y x es un elemento de T entonces Nodo t 1 displaystyle t 1 x t 2 displaystyle t 2 es un arbol Los arboles son unicamente los valores que se construyen utilizando las reglas 1 y 2 La construccion correspondiente en los lenguajes de programacion se llama Tipo de dato abstracto Sus reglas de tipo polimorficas fueron introducidas por Robin Milner junto con la definicion del lenguaje Standard ML y han sido adoptadas desde entonces en diversos lenguajes de programacion sobre todo en los lenguajes de programacion funcionales Por ejemplo la definicion del tipo arbol binario con informacion en los nodos de tipo T se escribe en Ocaml como sigue type T Arbol AVacio Nodo of T Arbol T T Arbol y en sintaxis de Haskell con informacion en los nodos de tipo t data Arbol t AVacio Nodo Arbol t t Arbol t Los constructores del tipo Arbol son AVacio y Nodo los cuales al recibir los argumentos necesarios producen un valor del tipo arbol Por ejemplo en Ocaml AVacio es un arbol al igual que Nodo AVacio 5 AVacio Las operaciones sobre los tipos recursivos generalmente se escriben utilizando la construccion de llamada por patrones Por ejemplo en Haskell el numero de niveles de un arbol se define como niveles Arbol t gt Int niveles AVacio 0 niveles Nodo i n d 1 max niveles i niveles d en Standard ML la misma funcion se escribe fun niveles AVacio 0 niveles Nodo i n d 1 max niveles i niveles d Correccion de programas EditarA cada tipo de datos del lenguaje algebraico corresponde el orden bien fundamentado de subterminos y un esquema de induccion estructural sobre la base de la definicion del tipo En el caso de los arboles estos son los siguientes t 1 lt N o d o t 1 n t 2 t 2 lt N o d o t 1 n t 2 displaystyle t 1 lt Nodo t 1 n t 2 t 2 lt Nodo t 1 n t 2 P A V a c i o i n d i d A r b o l T P i P d P N o d o i n d x x A r b o l T P x displaystyle frac P AVacio wedge forall i n d i d in Arbol T P i wedge P d Rightarrow P Nodo i n d forall x x in Arbol T P x Para demostrar la terminacion de la funcion niveles aplicando este esquema de induccion estructural se tiene que demostrar utilizando las reglas semanticas del lenguaje que la expresion niveles AVacio termina y que si niveles i y niveles d terminan entonces niveles Nodo i n d termina tambien La llamada por patrones es una operacion compleja que puede definirse con ayuda de dos primitivas El operador is permite identificar el caso particular de una definicion y la definicion estructurada de variables permite obtener los componentes de un caso ya identificado En el ejemplo de arboles el predicado e is AVacio es cierto cuando el arbol e es efectivamente un arbol vacio y e is Nodo es cierto cuando e es un nodo Una definicion del tipo let Nodo u x v e que solo tiene sentido cuando e is Nodo es cierto permite asociar a las variables u x v los componentes del nodo Enlaces externos EditarFOLDOC Algebraic data type Datos Q1322511 Obtenido de https es wikipedia org w index php title Tipo de dato algebraico amp oldid 125248819, wikipedia, wiki, leyendo, leer, libro, biblioteca,

    español

    , española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos