多元組
多元組,也稱為順序組(英語:Tuple),泛指有限個元素所組成的序列。在數學及電腦科學分別有其特殊的意義。
數學上,n元組或多元組是物件個數有限的序列。元組由三部分組成:邊界符、分隔符和元素。通常採用的邊界符是小括號「」,分隔符是逗號。
多元組被數學家用來描述包含特定部件的數學物件。例如,有向圖被定義成一個二元組(V, E),這裏V是節點的集合,E是V × V的子集,表示邊。
多元組的名稱
形式定義
多元組區別於集合的主要性質在於:(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元組,就可以得到下列歸納定義:
- 0元組用∅表示;
- 設x是n元組(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元組和表結構的方法有非常重要的類似:
- 特殊符號NIL表示空表;
- 若X是一個表,A是任意值,則對 (A, X)表示一個表,其頭(第一個元素)為A,其尾(表中除了第一個元素的其他元素)為X。
在電腦科學中的應用
在電腦科學(特別是在程式語言和資料庫的關係模型),多元組通常被定義為從欄位名到特定值的有限函數(在此情況又可譯為值組)。其目的和在數學中一樣,就是指出特定的實體,或那些包含特定部件且(或)具有特定性質的物件。但是,這裏的部件透過唯一的欄位名來辨識,而不是透過位置,這樣通常會是更用戶友好的記法。
多元組的例子:
- (選手:"Harry", 分數:25)
就是一個對映欄位名「選手」到字串"Harry",對映欄位名「分數」到數25的函數。注意,這裏各個部件的順序是不相關的,所以這個多元組也可以寫成:
- (分數:25, 選手:"Harry")
在關係模型,一般以這樣的多元組來表示一個簡單命題,比如這個多元組的意思就是有一個選手的名字叫"Harry",他的分數是25。
在程式語言中,多元組被用來構建數據結構。例如,下列多元組可以表示雙向鏈結串列中的一個節點:
- (值:16, 前驅節點:1174782, 後繼節點:1174791)