多元組

有限元素所組成的有序集合

多元組,也稱為順序組(英語:Tuple),泛指有限個元素所組成的序列。在數學及電腦科學分別有其特殊的意義。

數學上,n元組多元組是物件個數有限序列。元組由三部分組成:邊界符、分隔符和元素。通常採用的邊界符是小括號「」,分隔符是逗號。

多元組被數學家用來描述包含特定部件的數學物件。例如,有向圖被定義成一個二元組(V, E),這裏V是節點的集合,EV × V的子集,表示邊。

類型論中,多元組與重類別相關。

多元組的名稱

長度為n的多元組通常稱為n元組。二元組就是一個有序對n可以是任意正整數,例如,四元數就可以被表示成一個四元組。

形式定義

多元組區別於集合的主要性質在於:(1)它可以多次含有某個物件;(2)物件按照一定順序出現。可以看到(1)使它區別於全序集,(2)使它區別於多重集。兩個n元組的相等性通常以下列規則來表明:

(a1, a2, ...,an) = (b1, b2, ..., bn) 當且僅當 a1 = b1, a2 = b2, ..., an = bn

另一種形式化多元組的方式是將它們作為在集合論中更基本的構造,一個方法是利用有序對。例如,一個n元組(n > 1)能夠定義成其第一項和由其他項組成的 (n−1)元組組成的有序對:

(a1, a2, ..., an) = (a1, (a2, ..., an))

採用有序對的一般集合論定義,並用空集來表示0元組,就可以得到下列歸納定義:

  1. 0元組用∅表示;
  2. xn元組(a1, a2, ..., an),則 (n + 1)元組(a, a1, a2, ..., an)等同於{{a}, {a, x}}。(n≥0)

採用這個定義,(1,2,2)為

(1,(2, (2))) = (1,(2, {{2}, {2, ∅}} )) = (1, {{2}, {2, {{2}, {2, ∅}}}} ) = {{1}, {1, {{2}, {2, {{2}, {2, ∅}}}}}}

這裏與LISP最初使用有序對歸納地產生其所有的n元組和表結構的方法有非常重要的類似:

  1. 特殊符號NIL表示空表;
  2. X是一個表,A是任意值,則對 (A, X)表示一個表,其(第一個元素)為A,其(表中除了第一個元素的其他元素)為X

在電腦科學中的應用

電腦科學(特別是在程式語言資料庫關係模型),多元組通常被定義為從欄位名到特定值的有限函數(在此情況又可譯為值組)。其目的和在數學中一樣,就是指出特定的實體,或那些包含特定部件且(或)具有特定性質的物件。但是,這裏的部件透過唯一的欄位名來辨識,而不是透過位置,這樣通常會是更用戶友好的記法。

多元組的例子:

(選手:"Harry", 分數:25)

就是一個對映欄位名「選手」到字串"Harry",對映欄位名「分數」到數25的函數。注意,這裏各個部件的順序是不相關的,所以這個多元組也可以寫成:

(分數:25, 選手:"Harry")

關係模型,一般以這樣的多元組來表示一個簡單命題,比如這個多元組的意思就是有一個選手的名字叫"Harry",他的分數是25。

在程式語言中,多元組被用來構建數據結構。例如,下列多元組可以表示雙向鏈結串列中的一個節點:

(值:16, 前驅節點:1174782, 後繼節點:1174791)