Tupla

Lista finita ordenada de elementos

En matemáticas , una tupla es una secuencia finita o lista ordenada de números o, de forma más general, objetos matemáticos , que se denominan elementos de la tupla. Una n -tupla es una tupla de n elementos, donde n es un entero no negativo . Solo hay una 0-tupla, llamada tupla vacía . Una 1-tupla y una 2-tupla se denominan comúnmente singleton y par ordenado , respectivamente. El término "tupla infinita" se utiliza ocasionalmente para "secuencias infinitas" .

Las tuplas se escriben generalmente enumerando los elementos entre paréntesis " ( ) " y separados por comas; por ejemplo, (2, 7, 4, 1, 7) denota una 5-tupla. A veces se utilizan otros tipos de corchetes, aunque pueden tener un significado diferente. [a]

Una n -tupla puede definirse formalmente como la imagen de una función que tiene como dominio el conjunto de los n primeros números naturales . Las tuplas también pueden definirse a partir de pares ordenados mediante una recurrencia que comienza a partir de pares ordenados ; de hecho, una n -tupla puede identificarse con el par ordenado de sus ( n − 1) primeros elementos y su n- ésimo elemento.

En informática , las tuplas se presentan en muchas formas. La mayoría de los lenguajes de programación funcional tipados implementan tuplas directamente como tipos de producto , [1] estrechamente asociados con tipos de datos algebraicos , coincidencia de patrones y asignación de desestructuración . [2] Muchos lenguajes de programación ofrecen una alternativa a las tuplas, conocidas como tipos de registro , que presentan elementos no ordenados a los que se accede por etiqueta. [3] Algunos lenguajes de programación combinan tipos de producto de tupla ordenados y tipos de registro no ordenados en una sola construcción, como en las estructuras de C y los registros de Haskell. Las bases de datos relacionales pueden identificar formalmente sus filas (registros) como tuplas .

Las tuplas también aparecen en el álgebra relacional , en la programación de la web semántica con el Marco de Descripción de Recursos (RDF), en lingüística [ 4] y en filosofía [5] .

Etimología

El término se originó como una abstracción de la secuencia: simple, pareja/doble, triple, cuádruple, quíntuple, séxtuple, séptuple, óctuple, ..., n -tupla, ..., donde los prefijos se toman de los nombres latinos de los numerales. La única 0-tupla se llama tupla nula o tupla vacía . Una 1-tupla se llama simple (o singleton ), una 2-tupla se llama par o pareja ordenada , y una 3-tupla se llama triple (o triplete ). El número n puede ser cualquier entero no negativo . Por ejemplo, un número complejo se puede representar como una 2-tupla de reales, un cuaternión se puede representar como una 4-tupla, un octonión se puede representar como una 8-tupla y un sedenión se puede representar como una 16-tupla.

Aunque estos usos tratan a -uple como sufijo, el sufijo original era -ple como en "triple" (triple) o "decuple" (décuple). Esto se origina del latín medieval plus (que significa "más") relacionado con el griego -πλοῦς, que reemplazó al clásico y antiguo ‑plex (que significa "plegado"), como en "dúplex". [6] [b]

Propiedades

La regla general para la identidad de dos n -tuplas es

( a 1 , a 2 , , a norte ) = ( b 1 , b 2 , , b norte ) {\displaystyle (a_{1},a_{2},\ldots ,a_{n})=(b_{1},b_{2},\ldots ,b_{n})} si y sólo si . a 1 = b 1 ,   a 2 = b 2 ,   ,   a n = b n {\displaystyle a_{1}=b_{1},{\text{ }}a_{2}=b_{2},{\text{ }}\ldots ,{\text{ }}a_{n}=b_{n}}

Por lo tanto, una tupla tiene propiedades que la distinguen de un conjunto :

  1. Una tupla puede contener múltiples instancias del mismo elemento, por lo tanto
    tupla ; pero conjunto . ( 1 , 2 , 2 , 3 ) ( 1 , 2 , 3 ) {\displaystyle (1,2,2,3)\neq (1,2,3)} { 1 , 2 , 2 , 3 } = { 1 , 2 , 3 } {\displaystyle \{1,2,2,3\}=\{1,2,3\}}
  2. Los elementos de la tupla están ordenados: tupla , pero conjunto . ( 1 , 2 , 3 ) ( 3 , 2 , 1 ) {\displaystyle (1,2,3)\neq (3,2,1)} { 1 , 2 , 3 } = { 3 , 2 , 1 } {\displaystyle \{1,2,3\}=\{3,2,1\}}
  3. Una tupla tiene un número finito de elementos, mientras que un conjunto o un multiconjunto puede tener un número infinito de elementos.

Definiciones

Existen varias definiciones de tuplas que les otorgan las propiedades descritas en la sección anterior.

Tuplas como funciones

La -tupla puede identificarse como la función vacía . La -tupla puede identificarse con la función ( sobreyectiva ) 0 {\displaystyle 0} n 1 , {\displaystyle n\geq 1,} n {\displaystyle n} ( a 1 , , a n ) {\displaystyle \left(a_{1},\ldots ,a_{n}\right)}

F   :   { 1 , , n }     { a 1 , , a n } {\displaystyle F~:~\left\{1,\ldots ,n\right\}~\to ~\left\{a_{1},\ldots ,a_{n}\right\}}

con dominio

domain F = { 1 , , n } = { i N : 1 i n } {\displaystyle \operatorname {domain} F=\left\{1,\ldots ,n\right\}=\left\{i\in \mathbb {N} :1\leq i\leq n\right\}}

y con codominio

codomain F = { a 1 , , a n } , {\displaystyle \operatorname {codomain} F=\left\{a_{1},\ldots ,a_{n}\right\},}

que se define por i domain F = { 1 , , n } {\displaystyle i\in \operatorname {domain} F=\left\{1,\ldots ,n\right\}}

F ( i ) := a i . {\displaystyle F(i):=a_{i}.}

Es decir, ¿la función está definida por F {\displaystyle F}

1 a 1 n a n {\displaystyle {\begin{alignedat}{3}1\;&\mapsto &&\;a_{1}\\\;&\;\;\vdots &&\;\\n\;&\mapsto &&\;a_{n}\\\end{alignedat}}}

En cuyo caso la igualdad

( a 1 , a 2 , , a n ) = ( F ( 1 ) , F ( 2 ) , , F ( n ) ) {\displaystyle \left(a_{1},a_{2},\dots ,a_{n}\right)=\left(F(1),F(2),\dots ,F(n)\right)}

necesariamente se cumple.

Tuplas como conjuntos de pares ordenados

Las funciones se identifican comúnmente con sus gráficos , que son un conjunto determinado de pares ordenados. De hecho, muchos autores utilizan los gráficos como definición de una función. Utilizando esta definición de "función", la función anterior se puede definir como: F {\displaystyle F}

F   :=   { ( 1 , a 1 ) , , ( n , a n ) } . {\displaystyle F~:=~\left\{\left(1,a_{1}\right),\ldots ,\left(n,a_{n}\right)\right\}.}

Tuplas como pares ordenados anidados

Otra forma de modelar tuplas en la teoría de conjuntos es como pares ordenados anidados . Este enfoque supone que el concepto de par ordenado ya se ha definido.

  1. La tupla 0 (es decir, la tupla vacía) está representada por el conjunto vacío . {\displaystyle \emptyset }
  2. Una n -tupla, con n > 0 , se puede definir como un par ordenado de su primera entrada y una ( n − 1) -tupla (que contiene las entradas restantes cuando n > 1) :
    ( a 1 , a 2 , a 3 , , a n ) = ( a 1 , ( a 2 , a 3 , , a n ) ) {\displaystyle (a_{1},a_{2},a_{3},\ldots ,a_{n})=(a_{1},(a_{2},a_{3},\ldots ,a_{n}))}

Esta definición se puede aplicar recursivamente a la ( n − 1) -tupla:

( a 1 , a 2 , a 3 , , a n ) = ( a 1 , ( a 2 , ( a 3 , ( , ( a n , ) ) ) ) ) {\displaystyle (a_{1},a_{2},a_{3},\ldots ,a_{n})=(a_{1},(a_{2},(a_{3},(\ldots ,(a_{n},\emptyset )\ldots ))))}

Así, por ejemplo:

( 1 , 2 , 3 ) = ( 1 , ( 2 , ( 3 , ) ) ) ( 1 , 2 , 3 , 4 ) = ( 1 , ( 2 , ( 3 , ( 4 , ) ) ) ) {\displaystyle {\begin{aligned}(1,2,3)&=(1,(2,(3,\emptyset )))\\(1,2,3,4)&=(1,(2,(3,(4,\emptyset ))))\\\end{aligned}}}

Una variante de esta definición comienza "despegando" elementos del otro extremo:

  1. La tupla 0 es el conjunto vacío . {\displaystyle \emptyset }
  2. Para n > 0 :
    ( a 1 , a 2 , a 3 , , a n ) = ( ( a 1 , a 2 , a 3 , , a n 1 ) , a n ) {\displaystyle (a_{1},a_{2},a_{3},\ldots ,a_{n})=((a_{1},a_{2},a_{3},\ldots ,a_{n-1}),a_{n})}

Esta definición se puede aplicar recursivamente:

( a 1 , a 2 , a 3 , , a n ) = ( ( ( ( ( , a 1 ) , a 2 ) , a 3 ) , ) , a n ) {\displaystyle (a_{1},a_{2},a_{3},\ldots ,a_{n})=((\ldots (((\emptyset ,a_{1}),a_{2}),a_{3}),\ldots ),a_{n})}

Así, por ejemplo:

( 1 , 2 , 3 ) = ( ( ( , 1 ) , 2 ) , 3 ) ( 1 , 2 , 3 , 4 ) = ( ( ( ( , 1 ) , 2 ) , 3 ) , 4 ) {\displaystyle {\begin{aligned}(1,2,3)&=(((\emptyset ,1),2),3)\\(1,2,3,4)&=((((\emptyset ,1),2),3),4)\\\end{aligned}}}

Tuplas como conjuntos anidados

Utilizando la representación de Kuratowski para un par ordenado , la segunda definición anterior puede reformularse en términos de teoría de conjuntos pura :

  1. La tupla 0 (es decir, la tupla vacía) está representada por el conjunto vacío ; {\displaystyle \emptyset }
  2. Sea una n -tupla , y sea . Entonces, . (La flecha hacia la derecha, , podría leerse como "adjunto con".) x {\displaystyle x} ( a 1 , a 2 , , a n ) {\displaystyle (a_{1},a_{2},\ldots ,a_{n})} x b ( a 1 , a 2 , , a n , b ) {\displaystyle x\rightarrow b\equiv (a_{1},a_{2},\ldots ,a_{n},b)} x b { { x } , { x , b } } {\displaystyle x\rightarrow b\equiv \{\{x\},\{x,b\}\}} {\displaystyle \rightarrow }

En esta formulación:

( ) = ( 1 ) = ( ) 1 = { { ( ) } , { ( ) , 1 } } = { { } , { , 1 } } ( 1 , 2 ) = ( 1 ) 2 = { { ( 1 ) } , { ( 1 ) , 2 } } = { { { { } , { , 1 } } } , { { { } , { , 1 } } , 2 } } ( 1 , 2 , 3 ) = ( 1 , 2 ) 3 = { { ( 1 , 2 ) } , { ( 1 , 2 ) , 3 } } = { { { { { { } , { , 1 } } } , { { { } , { , 1 } } , 2 } } } , { { { { { } , { , 1 } } } , { { { } , { , 1 } } , 2 } } , 3 } } {\displaystyle {\begin{array}{lclcl}()&&&=&\emptyset \\&&&&\\(1)&=&()\rightarrow 1&=&\{\{()\},\{(),1\}\}\\&&&=&\{\{\emptyset \},\{\emptyset ,1\}\}\\&&&&\\(1,2)&=&(1)\rightarrow 2&=&\{\{(1)\},\{(1),2\}\}\\&&&=&\{\{\{\{\emptyset \},\{\emptyset ,1\}\}\},\\&&&&\{\{\{\emptyset \},\{\emptyset ,1\}\},2\}\}\\&&&&\\(1,2,3)&=&(1,2)\rightarrow 3&=&\{\{(1,2)\},\{(1,2),3\}\}\\&&&=&\{\{\{\{\{\{\emptyset \},\{\emptyset ,1\}\}\},\\&&&&\{\{\{\emptyset \},\{\emptyset ,1\}\},2\}\}\},\\&&&&\{\{\{\{\{\emptyset \},\{\emptyset ,1\}\}\},\\&&&&\{\{\{\emptyset \},\{\emptyset ,1\}\},2\}\},3\}\}\\\end{array}}}

norte-tuplas demetro-conjuntos

En matemáticas discretas , especialmente combinatoria y teoría de probabilidad finita , las n -tuplas surgen en el contexto de varios problemas de conteo y se tratan de manera más informal como listas ordenadas de longitud n . [7] Las n -tuplas cuyas entradas provienen de un conjunto de m elementos también se denominan arreglos con repetición , permutaciones de un multiconjunto y, en alguna literatura no inglesa, variaciones con repetición . El número de n -tuplas de un m -conjunto es m n . Esto se deduce de la regla combinatoria del producto . [8] Si S es un conjunto finito de cardinalidad m , este número es la cardinalidad de la potencia cartesiana de n -veces S × S × ⋯ × S. Las tuplas son elementos de este conjunto producto.

Teoría de tipos

En la teoría de tipos , que se utiliza habitualmente en los lenguajes de programación , una tupla tiene un tipo de producto ; esto fija no solo la longitud, sino también los tipos subyacentes de cada componente. Formalmente:

( x 1 , x 2 , , x n ) : T 1 × T 2 × × T n {\displaystyle (x_{1},x_{2},\ldots ,x_{n}):{\mathsf {T}}_{1}\times {\mathsf {T}}_{2}\times \ldots \times {\mathsf {T}}_{n}}

y las proyecciones son constructores de términos:

π 1 ( x ) : T 1 ,   π 2 ( x ) : T 2 ,   ,   π n ( x ) : T n {\displaystyle \pi _{1}(x):{\mathsf {T}}_{1},~\pi _{2}(x):{\mathsf {T}}_{2},~\ldots ,~\pi _{n}(x):{\mathsf {T}}_{n}}

La tupla con elementos etiquetados que se utiliza en el modelo relacional tiene un tipo de registro . Ambos tipos pueden definirse como extensiones simples del cálculo lambda de tipo simple . [9]

La noción de tupla en la teoría de tipos y en la teoría de conjuntos están relacionadas de la siguiente manera: si consideramos el modelo natural de una teoría de tipos y utilizamos los corchetes de Scott para indicar la interpretación semántica, entonces el modelo consta de algunos conjuntos (nota: el uso de cursiva aquí distingue a los conjuntos de los tipos) tales que: S 1 , S 2 , , S n {\displaystyle S_{1},S_{2},\ldots ,S_{n}}

[ [ T 1 ] ] = S 1 ,   [ [ T 2 ] ] = S 2 ,   ,   [ [ T n ] ] = S n {\displaystyle [\![{\mathsf {T}}_{1}]\!]=S_{1},~[\![{\mathsf {T}}_{2}]\!]=S_{2},~\ldots ,~[\![{\mathsf {T}}_{n}]\!]=S_{n}}

y la interpretación de los términos básicos es:

[ [ x 1 ] ] [ [ T 1 ] ] ,   [ [ x 2 ] ] [ [ T 2 ] ] ,   ,   [ [ x n ] ] [ [ T n ] ] {\displaystyle [\![x_{1}]\!]\in [\![{\mathsf {T}}_{1}]\!],~[\![x_{2}]\!]\in [\![{\mathsf {T}}_{2}]\!],~\ldots ,~[\![x_{n}]\!]\in [\![{\mathsf {T}}_{n}]\!]} .

La n -tupla de la teoría de tipos tiene la interpretación natural como una n -tupla de la teoría de conjuntos: [10]

[ [ ( x 1 , x 2 , , x n ) ] ] = ( [ [ x 1 ] ] , [ [ x 2 ] ] , , [ [ x n ] ] ) {\displaystyle [\![(x_{1},x_{2},\ldots ,x_{n})]\!]=(\,[\![x_{1}]\!],[\![x_{2}]\!],\ldots ,[\![x_{n}]\!]\,)}

El tipo de unidad tiene como interpretación semántica la 0-tupla.

Véase también

Notas

  1. ^ Los corchetes se utilizan para matrices , incluidos los vectores fila . Las llaves se utilizan para conjuntos . Cada lenguaje de programación tiene su propia convención para los diferentes corchetes.
  2. ^ Compárese la etimología de ploidía , del griego para -pliegue.

Referencias

  1. ^ "Tipo de datos algebraicos - HaskellWiki". wiki.haskell.org .
  2. ^ "Tarea de desestructuración". MDN Web Docs . 18 de abril de 2023.
  3. ^ "¿JavaScript garantiza el orden de las propiedades de los objetos?". Desbordamiento de pila .
  4. ^ Matthews, PH, ed. (enero de 2007). "N-tupla". Diccionario Oxford de lingüística conciso . Oxford University Press. ISBN 9780199202720. Recuperado el 1 de mayo de 2015 .
  5. ^ Blackburn, Simon (1994). "ordered n-tuple". Diccionario Oxford de Filosofía. Referencia rápida de las directrices de Oxford (3.ª ed.). Oxford: Oxford University Press (publicado en 2016). pág. 342. ISBN 9780198735304. Recuperado el 30 de junio de 2017. n-tupla ordenada[:] Una generalización de la noción de un [...] par ordenado a secuencias de n objetos.
  6. ^ OED , sv "triple", "cuádruple", "quíntuple", "decuple"
  7. ^ D'Angelo y West 2000, pág. 9
  8. ^ D'Angelo y West 2000, pág. 101
  9. ^ Pierce, Benjamin (2002). Tipos y lenguajes de programación . MIT Press. págs. 126-132. ISBN. 0-262-16209-1.
  10. ^ Steve Awodey, De conjuntos a tipos, a categorías, a conjuntos, 2009, preimpresión

Fuentes

  • La definición del diccionario de tupla en Wikcionario
Retrieved from "https://en.wikipedia.org/w/index.php?title=Tuple&oldid=1250889744"