多元组
定义数学上,n 元组或多元组是对象个数有限的序列。多元组被数学家们用来描述确定成分的数学对象。例如,有向图被定义成一个二元组 (V,E),这里V是节点的集合,E是V×V的子集,表示边。
在类型论中,多元组与重类别相关。
多元组的名称长度为n的多元组通常称为n元组。二元组就是一个有序对。n可以是任意正整数,例如,四元数就可以被表示成一个四元组。
形式定义多元组区别于集合的主要性质在于:(1)它可以多次含有某个对象;(2)对象按照一定顺序出现。可以看到(1)使它区别于偏序集,(2)使它区别于多样集。下列规则通常用来形式化两个n元组的一致性:
(a1, a2, ...,an) = (b1, b2, ..., bn) 当且仅当 a1 = b1, a2 = b2 等等。另一种形式化多元组的方式是将它们映射到集合论中更基本的结构诸如有序对。例如,一个n元组(n> 2)能够定义成其第一项和由其他项组成的 (n−1) 元组组成的有序对:
(a1, a2, ..., an) = (a1, (a2, ..., an))采用通常的有序对的集合论定义,并用空集来表示 0 元组,就可以得到下列归纳定义:
0 元组用 ∅ 表示;若 x 是 n 元组,则 {{a}, {a, x}} 是 (n + 1) 元组。采用这个定义,(1,2,2) 为
(1,(2,(2,()))) = (1,(2, {{2}, {2, ∅}} )) = (1, {{2}, {2, {{2}, {2, ∅}}}} ) = {{1}, {1, {{2}, {2, {{2}, {2, ∅}}}}}}这里与LISP最初使用有序对归纳地产生其所有的n元组和表结构的方法有非常重要的类似:
特殊符号 NIL 表示空表;若 X 是一个表,A 是任意值,则对 (A, X) 表示一个表,其头(第一个元素)为 A,其尾(表中除了第一个元素的其他元素)为 X。
在计算机科学中的应用在计算机科学(特别是在程序设计语言和数据库的关系模型)中,多元组通常被定义为从字段名到特定值的有限函数。其目的和在数学中一样,指出特定的实体或对象包含特定的部分且(或)具有特定的性质。但是,这里的部分通过唯一的字段名来识别,而不是通过位置,从而得到更多用户友好的表示。
多元组的一个例子:
( 选手 : "Harry", 成绩 : 25 )就是一个映射字段名“选手”到字符串 "Harry",映射字段名“成绩”到数 25 的函数。注意,这里各个部分的顺序互不相关,所以相同的多元组也可以写成:
( 成绩 : 25, 选手 : "Harry" )在关系模型中,这样的多元组是表示一个简单命题的典型。这个例子的意思就是有一个选手的名字叫 "Harry",他的成绩是 25。
在程序设计语言中,多元组被用来构建数据结构。例如,下列多元组可以表示双向链表中的一个节点:
( 值 : 16, 前驱节点 : 1174782, 后继节点 : 1174791 )