要素の有限順序リスト
数学 において 、 タプル とは、有限の シーケンス または 数値 、またはより一般的には 数学的オブジェクト の 順序付けられたリスト であり、これらはタプルの 要素 と呼ばれます。 n タプルは n 個の要素を持つタプル で、 n は負でない 整数 です。 0 タプルは 1 つだけあり、これは 空のタプル と呼ばれます。 1 タプルと 2 タプルは、それぞれ一般に シングルトン と 順序付きペアと呼ばれます。 「無限タプル」 という用語は、 「無限シーケンス」を 表すために使用されることがあります 。
タプルは通常、要素を括弧「 () 」内に列挙し、コンマで区切って記述されます。たとえば、 (2, 7, 4, 1, 7) は 5 つのタプルを表します。他の種類の括弧が使用されることもありますが、意味が異なる場合があります。 [a]
nタプル は 、最初の n 個の 自然数 の集合を定義 域 とする 関数 の 像 として正式に定義できます 。タプルは、 順序付きペア から始まる 再帰 によって、順序付きペアから定義することもできます。実際、 nタプルは、その ( n − 1) 番目の要素と n 番目の要素の順序付きペアと同一視できます 。
コンピュータサイエンス では 、タプルにはさまざまな形式があります。ほとんどの型付き 関数型プログラミング言語は、タプルを 積型 として直接実装し 、 [1] 代数データ型 、 パターンマッチング 、および 構造化代入 と密接に関連しています 。 [2] 多くのプログラミング言語は、ラベルでアクセスされる順序付けられていない要素を備えた レコード型 と呼ばれるタプルの代替手段を提供しています。 [3]いくつかのプログラミング言語では、 C構造体 やHaskellレコード のように、順序付けられたタプル積型と順序付けられていないレコード型を1つの構造に組み合わせています。 リレーショナルデータベースは、 行(レコード)を タプル として 正式に識別する場合があります 。
タプルは、 リレーショナル代数、 リソース記述フレームワーク (RDF) を使用した セマンティックウェブの プログラミング、 言語 学 [4] 、 哲学 [5] でも使用されます。
語源
この用語は、シングル、カップル/ダブル、トリプル、クアドラプル、クインタプル、セクスタプル、セプタプル、オクタプル、...、 n タプル、... というシーケンスの抽象化として生まれました。ここで、プレフィックスは 数字の ラテン語名から取られています。一意の 0 タプルは、 ヌルタプル または 空のタプル と呼ばれます。1 タプルは シングル (または シングルトン )、2 タプルは 順序付きペア または カップル 、3 タプルは トリプル (または トリプレット ) と呼ばれます。数値 n は 任意の非負の整数 です 。たとえば、 複素数は 2 タプルの実数として表すことができ、 四元数は 4 タプルとして表すことができ、 八元数 は 8 タプルとして表すことができ、 七元数は 16 タプルとして表すことができます。
これらの用法では ‑uple を 接尾辞として扱っているが、元々の接尾辞は 「triple」(3倍)や「decuple」(10倍)のような ‑pleであった。これは 中世ラテン語の plus (「さらに」を意味する)に由来し、 ギリシャ語の ‑πλοῦς と関連があり、古典的で後期古代の ‑plex (「折り畳まれた」を意味する)(「duplex」など)に取って代わった。 [6] [b]
プロパティ
2つのn 組
の同一性に関する一般的な規則は
(
1つの
1
、
1つの
2
、
…
、
1つの
ん
)
=
(
b
1
、
b
2
、
…
、
b
ん
)
{\displaystyle (a_{1},a_{2},\ldots ,a_{n})=(b_{1},b_{2},\ldots ,b_{n})}
の場合に限ります 。
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}}
したがって、タプルにはセット と区別される特性があります 。
タプルには同じ要素のインスタンスが複数含まれることがあるため、 tuple ; ではなく set となります 。
(
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\}}
タプルの要素は順序付けられます: タプル です が、 セット です 。
(
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\}}
タプルには有限数の要素がありますが、セットまたは マルチセット には無限の数の要素が含まれる場合があります。
定義
前のセクションで説明したプロパティを与えるタプルの定義はいくつかあります。
関数としてのタプル
-タプルは 空関数 として識別される 。 -タプルは ( 全射 ) 関数 として識別される。
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\}}
ドメイン 付き
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\}}
そして共 ドメイン
codomain
F
=
{
a
1
,
…
,
a
n
}
,
{\displaystyle \operatorname {codomain} F=\left\{a_{1},\ldots ,a_{n}\right\},}
それは 次のよう
に定義されます
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}.}
つまり、 関数は次のように定義されます。
F
{\displaystyle F}
1
↦
a
1
⋮
n
↦
a
n
{\displaystyle {\begin{alignedat}{3}1\;&\mapsto &&\;a_{1}\\\;&\;\;\vdots &&\;\\n\;&\mapsto &&\;a_{n}\\\end{alignedat}}}
その場合、平等
(
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)}
必然的に成立する。
順序付きペアの集合としてのタプル
関数は一般にグラフ で識別されます 。グラフは特定の順序付きペアの集合です。実際、多くの著者はグラフを関数の定義として使用しています。この「関数」の定義を使用すると、上記の関数は次 のように定義できます。
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\}.}
ネストされた順序付きペアとしてのタプル
集合論でタプルをモデル化する別の方法は、ネストされた 順序付きペア としてモデル化することです。このアプローチでは、順序付きペアの概念がすでに定義されていることを前提としています。
0 タプル (つまり空のタプル) は空集合によって表されます 。
∅
{\displaystyle \emptyset }
n > 0 のn タプルは、その最初のエントリと ( n − 1)タプル ( 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}))}
この定義は( 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},\emptyset )\ldots ))))}
たとえば、次のようになります。
(
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}}}
この定義のバリエーションでは、もう一方の端から要素を「剥がし」始めます。
0 タプルは空集合です 。
∅
{\displaystyle \emptyset }
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})}
この定義は再帰的に適用できます。
(
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})}
たとえば、次のようになります。
(
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}}}
ネストされたセットとしてのタプル
クラトフスキーの順序付きペアの表現 を使用すると、上記の2番目の定義は純粋 集合論 の観点から再定式化できます 。
0 タプル (つまり空のタプル) は空集合によって表されます 。
∅
{\displaystyle \emptyset }
をn 組 とし 、 とします 。このとき、と なります 。(右矢印 は、 「 と結合する」と読むことができます。)
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 }
この定式化では、
(
)
=
∅
(
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}}}
ん -タプルの メートル -セット
離散数学 、特に 組合せ論 と有限 確率論 では 、 n 組は様々な計数問題の文脈で登場し、長さ n の順序付きリストとしてより非公式に扱われます。 [7]エントリが m 要素の集合から得られる n 組は、繰り返しのある配置 、 多重集合の順列 、および英語以外の文献では 繰り返しのある変形と も呼ばれます。 m集合の n 組 の数は m n です 。これは、積の組み合わせ 規則 に従います。 [8] S が 濃度 m の有限集合である 場合、この数は n 倍の デカルト冪 S × S × ⋯ × S の濃度です 。組はこの積集合の要素です。
型理論
プログラミング言語 で一般的に使用される 型理論 では 、タプルには 積型 があり、これにより長さだけでなく、各コンポーネントの基礎となる型も決まります。正式には次のようになります。
(
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}}
そして、 射影は 項コンストラクタです。
π
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}}
リレーショナルモデル で使用されるラベル付き要素を持つタプルは レコード型を 持ちます。これらの型は両方とも、 単純型ラムダ計算 の単純な拡張として定義できます 。 [9]
型理論におけるタプルの概念と集合論におけるタプルの概念は、次のように関連しています。型理論の自然な モデル を考え、スコット括弧を使用して意味解釈を示すと、モデルは次のようないくつかのセット (ここでの斜体の使用はセットと型を区別するためです) で構成されます。
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}}
基本的な用語の解釈は次のとおりです。
[
[
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}]\!]}
。
型理論のn組 は集合論の n 組として自然に解釈できる : [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}]\!]\,)}
ユニット タイプには、 意味解釈として 0 タプルがあります。
参照
注記
参考文献
^ 「代数的データ型 - HaskellWiki」. wiki.haskell.org .
^ 「構造化代入」。MDN Web Docs 。2023年4月18日。
^ 「JavaScript はオブジェクト プロパティの順序を保証しますか?」。 Stack Overflow 。
^ Matthews, PH編 (2007年1月)。「N‐tuple」。The Concise Oxford Dictionary of Linguistics 。 オックスフォード大学出版局。ISBN 9780199202720 . 2015年 5月1日 閲覧 。
^ ブラックバーン、サイモン (1994)。「順序付きnタプル」。オックスフォード哲学辞典。オックスフォードガイドラインクイックリファレンス(第3版)。オックスフォード:オックスフォード大学出版局(2016年出版) 。p.342。ISBN
9780198735304 . 2017-06-30 に取得 。 順序付き n タプル [:] [...] 順序付きペアの概念を n 個のオブジェクトのシーケンスに一般化したもの。
^ OED 、 sv "トリプル"、"クワッド"、"クインタプル"、"デカップル"
^ ダンジェロ&ウェスト 2000、9ページ
^ ダンジェロ&ウェスト 2000、101ページ
^ ピアス、ベンジャミン (2002)。 型とプログラミング言語 。MIT プレス。pp. 126–132。ISBN 0-262-16209-1 。
^ Steve Awodey、セットからタイプ、カテゴリ、セットへ、2009年、 プレプリント
出典
ダンジェロ、ジョン P.; ウェスト、ダグラス B. (2000)、 数学的思考/問題解決と証明 (第 2 版)、Prentice-Hall、 ISBN 978-0-13-014412-6
キース・デブリン 『 セットの喜び 』Springer Verlag、第2版、1993年、 ISBN 0-387-94094-4、7 ~8ページ
アブラハム・アドルフ・フランケル 、 イェホシュア・バーヒレル 、 アズリエル・レヴィ 、 「学校集合論の基礎」 、エルゼビア論理学研究第67巻、第2版、改訂、1973年、 ISBN 0-7204-2270-1 、p. 33
ガイシ・タケウティ 、WM・ザリング、 「公理的集合論入門」 、Springer GTM 1、1971年、 ISBN 978-0-387-90024-7 、p. 14
ジョージ・J・トゥーラキス 『論理と集合論の講義ノート』第2巻:集合論 、ケンブリッジ大学出版局、2003年、 ISBN 978-0-521-75374-6 、pp. 182–193
外部リンク
ウィクショナリーのタプルの辞書定義