數(shù)學(xué)上,n 元組或多元組是對(duì)象個(gè)數(shù)有限的序列。多元組被數(shù)學(xué)家們用來(lái)描述確定成分的數(shù)學(xué)對(duì)象。例如,有向圖被定義成一個(gè)二元組 (V, E),這里 V 是節(jié)點(diǎn)的集合,E 是 V × V 的子集,表示邊。
在類型論中,多元組與重類別相關(guān)。
多元組的名稱
長(zhǎng)度為 n 的多元組通常稱為 n元組。二元組就是一個(gè)有序?qū)Α?n 可以是任意正整數(shù),例如,四元數(shù)就可以被表示成一個(gè)四元組。
形式定義
多元組區(qū)別于集合的主要性質(zhì)在于:(1)它可以多次含有某個(gè)對(duì)象;(2)對(duì)象按照一定順序出現(xiàn)。可以看到(1)使它區(qū)別于偏序集,(2)使它區(qū)別于多樣集。下列規(guī)則通常用來(lái)形式化兩個(gè) n 元組的一致性:
(a, a, ...,a) = (b, b, ..., b) 當(dāng)且僅當(dāng) a = b, a = b 等等。另一種形式化多元組的方式是將它們映射到集合論中更基本的結(jié)構(gòu)諸如有序?qū)Α@纾粋€(gè) n 元組( n > 2)能夠定義成其第一項(xiàng)和由其他項(xiàng)組成的 ( n?1) 元組組成的有序?qū)Γ?/p>
(a, a, ..., a) = (a, (a, ..., a))采用通常的有序?qū)Φ募险摱x,并用空集來(lái)表示 0 元組,就可以得到下列歸納定義:
0 元組用 ? 表示;若 x 是 n 元組(a, a, ..., a),則(n + 1) 元組(a,a, a, ..., a)等同于{{a}, {a, x}} 。(n≥0)采用這個(gè)定義,(1,2,2) 為
(1,(2,(2))) = (1,(2, {{2}, {2, ?}} )) = (1, {{2}, {2, {{2}, {2, ?}}}} ) = {{1}, {1, {{2}, {2, {{2}, {2, ?}}}}}}這里與LISP最初使用有序?qū)w納地產(chǎn)生其所有的 n 元組和表結(jié)構(gòu)的方法有非常重要的類似:
特殊符號(hào) NIL 表示空表;若 X 是一個(gè)表,A 是任意值,則對(duì) (A, X) 表示一個(gè)表,其頭(第一個(gè)元素)為 A,其尾(表中除了第一個(gè)元素的其他元素)為 X。
應(yīng)用
在計(jì)算機(jī)科學(xué)(特別是在程序設(shè)計(jì)語(yǔ)言和數(shù)據(jù)庫(kù)的關(guān)系模型)中,多元組通常被定義為從字段名到特定值的有限函數(shù)。其目的和在數(shù)學(xué)中一樣,指出特定的實(shí)體或?qū)ο蟀囟ǖ牟糠智遥ɑ颍┚哂刑囟ǖ男再|(zhì)。但是,這里的部分通過(guò)唯一的字段名來(lái)識(shí)別,而不是通過(guò)位置,從而得到更多用戶友好的表示。
多元組的一個(gè)例子:
( 選手 : "Harry", 成績(jī) : 25 )就是一個(gè)映射字段名“選手”到字符串 "Harry",映射字段名“成績(jī)”到數(shù) 25 的函數(shù)。注意,這里各個(gè)部分的順序互不相關(guān),所以相同的多元組也可以寫成:
( 成績(jī) : 25, 選手 : "Harry" )在關(guān)系模型中,這樣的多元組是表示一個(gè)簡(jiǎn)單命題的典型。這個(gè)例子的意思就是有一個(gè)選手的名字叫 "Harry",他的成績(jī)是 25。
在程序設(shè)計(jì)語(yǔ)言中,多元組被用來(lái)構(gòu)建數(shù)據(jù)結(jié)構(gòu)。例如,下列多元組可以表示雙向鏈表中的一個(gè)節(jié)點(diǎn):
( 值 : 16, 前驅(qū)節(jié)點(diǎn) : 1174782, 后繼節(jié)點(diǎn) : 1174791 )
參考資料 >