多重集合
数学における多重集合(たじゅうしゅうごう、multiset)あるいはバッグ(テンプレート:Lang; かばん)は、集合に同じ値の元がいくつも含まれるとき、各元がそれぞれいくつ含まれるかという重複度を考え合わせた集合概念である。非順序対、非順序組 テンプレート:Lang ともいうテンプレート:Efn。
クヌースによれば、1970年代に最初に多重集合 (multiset) という言葉を提案したのは、オランダ人数学者のニコラース・ホーバート・ド・ブラン (IPA: テンプレート:IPA) であるという[1][2]。しかし、数学における多重集合の概念は、"multiset" という名称がつけられる90年以上も前にすでに使用が認められる。実際、1888年に発表されたリヒャルト・デデキントの有名な論文 "Was sind und was sollen die Zahlen?" (「数とは何か、何であるべきか?」)において、実質的に多重集合の概念が用いられている[3][4][2]。
導入
集合と多重集合の峻別のために、集合のように 波括弧 テンプレート:Mathで囲む代わりに、二重波括弧 テンプレート:Math ()テンプレート:Efn や角括弧 テンプレート:Math[5] あるいは中抜き波括弧 テンプレート:Math().[6] などで囲むこともある。
集合と多重集合と順序対(あるいは組)は例えば次のような点で差異が認められる。テンプレート:Math として、
- 順序対: テンプレート:Math と テンプレート:Math とは順序三つ組として異なる(各成分の現れる順番を変えてはいけない)。これらはもちろん テンプレート:Math とも異なる。
- 多重集合: テンプレート:Math と テンプレート:Math は多重集合として一致する(元の現れる順番は関係無い)が、テンプレート:Math と テンプレート:Math は多重集合として異なる(重複度が異なるなら多重集合としては異なる)。
- 集合: テンプレート:Math と テンプレート:Math と テンプレート:Math はいずれも同じ集合である(元の現れる順番は関係なく、また同じ元は何度現われてもひとつあることと同じ)テンプレート:Efn。
建前上は基本的に集合のみを扱い多重集合を扱わないというような(しばしば初等的な)文脈でも、「重複度を込めて」という注釈とともに一時的に多重集合が扱われることがある。たとえば、二次式 テンプレート:Math に対して、テンプレート:Math とおき、その根の集合
を考えると、この集合の濃度(根の個数)は テンプレート:Math のとき テンプレート:Math だが、テンプレート:Math のときは退化して テンプレート:Math になってしまう。これを テンプレート:Math のときは 2 つの根がたまたま重なったもの(重根)と考えて重複度 テンプレート:Math を与えることにより、根は テンプレート:Math のときも含めて常に テンプレート:Math 個であると考えることができる。この例は一般に、代数方程式論の基本定理の一つの表現「[[代数方程式|テンプレート:Mvar-次方程式]]は必ず重複度まで込めてちょうど テンプレート:Mvar 個の根を持つ」として述べることができる。同様の例として、複素解析函数に対する零点や極の位数(重複度)あるいは曲線の接触の位数(接触度)なども挙げられる(重複度 (数学)の項を参照)。
またたとえば、自然数 テンプレート:Mvar の素因数分解
(実際には テンプレート:Mvar ごとに右辺に現れる素因子は有限個、つまり殆どの テンプレート:Math が テンプレート:Math となる実質有限積である)は、自然数 テンプレート:Mvar を素数全体の成す集合 テンプレート:Math を台とする多重集合 テンプレート:Math として表示する方法を与えるものと解釈することができる(素因数分解が積の順番の違いを除いて一意であるということが多重集合の性質に対応する)。置換の巡回置換分解あるいは巡回置換型も同様である。
同様に、自然数 テンプレート:Mvar の分割を考えることは、分割に現れる各整数 テンプレート:Math の個数を重複度 テンプレート:Math ととれば、自然数全体の成す集合 テンプレート:Math を台とする多重集合 テンプレート:Math であって、重複度関数 テンプレート:Mvar が次の二条件
を満たすようなものを一つ定めることに他ならない。ゆえに、分割数は、各自然数 テンプレート:Mvar に対してこのような重複度関数 テンプレート:Mvar のとり方が テンプレート:Math 通りあることを示している。
歴史
Wayne Blizard は、“in ancient times, the number n was often represented by a collection of n strokes, tally marks, or units.”[7](「古代、数 テンプレート:Mvar は テンプレート:Mvar 本の棒、画線、単位の集まりとして表されていた」)なる論法を以って、多重集合の起源はまさに数の起源にまで遡れるとする。これら、あるいは同様の対象の集まりは、棒・画線・単位が各々区別できないもの (indistinguishable) と考えて多重集合になる。これは多重集合の概念が数学に取り入れられる以前から人々に暗に用いられていたことを示している。
そのような理由により多重集合は、この構造が必要とされるたびに何度も再発見され、異なる名称を以って文献に現れることとなる[8]。例えば、テンプレート:Harvtxt はこれを bag と呼んでおり[9]、その語は テンプレート:Harv の影響によるものである[10]。多重集合は他にも aggregate, heap, bunch, sample, weighted set, occurrence set, and fireset (finitely repeated element set) などと呼ばれている[8][11]。
ただ多重集合の概念が古代より暗に用いられていたと言っても、それらが明示的に調べられるようになるのはずっと後になってからのことである。多重集合の最初の研究として知られるのは1150年ごろ、インドの数学者バースカラ2世による、多重集合の順列に関するものである[1]テンプレート:Rp。テンプレート:仮リンク (1498–1576) の業績には多重集合の概念に関する別の先駆的言及が含まれる[12]。テンプレート:Harvtxt は一つの元のみ重複する場合の多重集合の順列の数を求めた[13]。テンプレート:仮リンクは1675年に多重集合の順列に関する一般法則を著した[14]。テンプレート:Harvtxt はこの法則をより詳細に説明している[15]
明確な形で多重集合が現れるのはリヒャルト・デーデキントの手による[16][17]が、数学者が多重集合を定式化して明確な数学的対象としてその研究を始めたのは20世紀に入ってからである。
定義
テンプレート:Mvar を全体集合とし、その任意の部分集合 テンプレート:Mvar と テンプレート:Mvar から非負整数全体の集合 テンプレート:Math への写像 テンプレート:Math で、テンプレート:Math すなわち テンプレート:Mvar に属さない元 テンプレート:Mvar に対しては恒等的に テンプレート:Math を満たすものの組 テンプレート:Math を、テンプレート:Mvar を台集合とする多重集合といい、台集合 テンプレート:Mvar の各元 テンプレート:Mvar に対してその テンプレート:Mvar による像 テンプレート:Math を テンプレート:Mvar の重複度という。紛れのおそれの無い場合、多重集合 テンプレート:Math をその台集合 テンプレート:Mvar で表す。
非負整数値の重複度を持つ多重集合 テンプレート:Math は、項の値に重複のある列の集合として
のようにも記される。
たとえば、二つの文字 テンプレート:Mvar について テンプレート:Mvar を 2 個、テンプレート:Mvar を 1 個含むような多重集合を考えると、この台集合は テンプレート:Math であり、各元の重複度 テンプレート:Math を合わせた テンプレート:Math が、同じ多重集合を台集合とその上の重複度という構造によって表したものとなる。またこれは簡単に テンプレート:Math とも記す。
新たに添字を導入して
などのように同じ元を区別すれば、通常の集合として扱うこともできる。また、各値に対して、同じ値を持つ項は有限個であるような族 テンプレート:Math に対して、同じ元からなる多重集合を テンプレート:Math で表すことがあるテンプレート:Efn。
多重集合の構成
文字集合 テンプレート:Math を固定したとき、テンプレート:Math 上の有限多重集合は、テンプレート:Math 上の文字列で文字の順番を自由に取り替えたものと同一視できるから、テンプレート:Math 上の有限文字列全体が文字列の連接を演算として空文字列を単位元とする テンプレート:Math の生成する自由モノイドとなるのと並行して、テンプレート:Math の生成する自由可換モノイドと テンプレート:Math 上の有限多重集合の全体とが同一視される。すなわち、テンプレート:Math の元からなる有限多重集合は、テンプレート:Math 上の自由モノイドのアーベル化の元である。
長さ テンプレート:Mvar の有限列([[タプル|テンプレート:Mvar-組]])に テンプレート:Mvar-次対称群を成分の(番号の)入れ替えとして作用させるとき、この作用で割って得られる同値類(軌道)あるいはその任意の代表元を(重複度まで込めた濃度が テンプレート:Mvar の)多重集合と見做すことができる。
多重集合の演算と重複度函数
テンプレート:Seealso 多重集合 テンプレート:Math に対し、台集合 テンプレート:Mvar の部分集合 テンプレート:Mvar を台集合とする多重集合 テンプレート:Math で テンプレート:Mvar の各元 テンプレート:Mvar の重複度について
が成り立つとき、多重集合 テンプレート:Math は多重集合 テンプレート:Math の部分多重集合であるといい、テンプレート:Math で表す。
また、多重集合に対する和、差、積、対称差などの概念が、通常の集合に関する和、差、積、対称差などに従って定義される。例えば、多重集合 テンプレート:Mvar の和 テンプレート:Math は包含関係 テンプレート:Math を順序とする上限、積 テンプレート:Math は テンプレート:Math に関する下限である。多重集合の演算は台集合に対しては通常の集合演算として作用するが、その元の重複度については多少の注意を要する。
| テンプレート:Mvar: 全体集合, テンプレート:Math
| |
| 交叉 | |
| 合併 | |
| 補集合 | |
| 包含 | |
| デカルト積 | |
| 濃度 |
集合 テンプレート:Mvar の(全ての元を各個に区別して)各元の重複度を テンプレート:Math としたときの重複度関数は集合 テンプレート:Mvar の指示関数である。有限集合の指示関数を数え上げ測度で積分したものは集合の基数をあたえるから、多重集合の元 テンプレート:Mvar の重複度は、同じ値 テンプレート:Mvar を持つ元を全てあわせた集合の指示関数の積分で得られる。指示関数が集合を定義するのと同様に、多重集合は重複度関数によって定義されると考えることができる(指示函数を「集合の定義函数」と呼ぶことがあるのと同様に、重複度函数を「多重集合の定義函数」と呼ぶことがある)。特に、多重集合の和、積、対称差などの重複度関数は、集合の指示関数が満たすのと同様の算術
に従う。また重複度函数の和 テンプレート:Math を重複度函数に持つ多重集合を テンプレート:Mvar と テンプレート:Mvar との結合 (join) あるいは直和(非交和、sum)と呼び
などで表す(非交和と呼ぶことがあるにもかかわらず、台集合として テンプレート:Math であることは必要でないことに注意。これは台集合の交わりに属する元であっても、それらはその重複度のために、何れの台集合に由来する元であるかの区別を受けるためである)。すなわち
が成り立つ。特に台集合が交わりを持たないときは
と書ける。
多重集合の数え上げ
テンプレート:See also 濃度 テンプレート:Mvar の有限集合から元をとって作られる濃度 テンプレート:Mvar の多重集合の総数は多重集合(係)数 (multiset coefficient, multiset number) と呼ばれる。この数はしばしば二項係数と似せて テンプレート:Math と書かれる[18]テンプレート:Efn
多重集合係数の値は
で明示的に与えることができる。ただし、二番目の式は二項係数としての表示である(多重集合を別に定義することを嫌って二項係数としてのみ書く文献も多い)であり、このような多重集合の総数は濃度 テンプレート:Math の集合内の テンプレート:Mvar-元部分集合の総数に等しい。二項係数との類似性を見るために、上記の式の分子に上昇階乗冪を用いて テンプレート:Math と書けば、二項係数が下降階乗冪を用いて テンプレート:Math と書かれることとの対比は明瞭である。
一般化された二項係数を
において テンプレート:Mvar が非負整数とは限らず、負の整数、整数でない実数、実数でない複素数などとすることによって定義することができる(テンプレート:Math ならば空積となるからこの係数の値は テンプレート:Math であるものと約束する)。この意味において、テンプレート:Mvar-元集合から得られる テンプレート:Mvar-元部分多重集合の総数は
と書ける。
漸化式
多重集合係数に対して漸化式
を初期条件 テンプレート:Math および テンプレート:Math の下で与えることができる。この漸化式は以下のように組合せ論的に解釈することができる。
以下 テンプレート:Mathと書く。位数 テンプレート:Math の(空)多重集合は常にただ一つであり、また テンプレート:Math のときそれより位数の大きな多重集合は存在しないから、初期条件はこの解釈に適合する。さて テンプレート:Math のとき、集合 テンプレート:Math の元からなる位数 テンプレート:Mvar の多重集合が末尾の元 テンプレート:Mvar を含むか含まないかに分けて考える。含むならば、テンプレート:Mvar の一つはさておいて残りのテンプレート:Math 個の元を テンプレート:Math から選んで多重集合を作りそこに テンプレート:Mvar を加えればよいから、そのようなものは テンプレート:Math 通りある。他方、含まないときは、末尾を除いた集合 テンプレート:Math から テンプレート:Mvar-元多重集合をつくることになるから、そのようなものは テンプレート:Math 通りである。従って テンプレート:Math が得られた。
多項式表現
集合 テンプレート:Math を単項式 テンプレート:Math で表すと、その冪集合 テンプレート:Math は二項式 テンプレート:Math で表すことができる。集合 テンプレート:Math を単項式 テンプレート:Mvar に対応させればその冪集合 テンプレート:Math は多項式 テンプレート:Math が対応する。同様に多重集合 テンプレート:Math を単項式 テンプレート:Math に対応させれば、その冪多重集合(部分多重集合全体の成す多重集合)テンプレート:Math は多項式 テンプレート:Math に対応する。単項式 テンプレート:Mvar で表される多重集合の冪多重集合が
で表されることは、二項係数 テンプレート:Math が テンプレート:Mvar-元集合から選んだ テンプレート:Mvar-元の組合せの総数を数え上げることになる理由を説明するものである。
集合 テンプレート:Math に元をとる有限多重集合全体の成す無限集合 テンプレート:Math は形式冪級数 テンプレート:Math で表され、形式解 テンプレート:Math に多重集合の集合としての意味を与えることができるが、中間表現である テンプレート:Math は多重集合の集合として意味を成さない。同様に、単項式 テンプレート:Mvar で表される集合に値を持つ有限多重集合全体の成す無限集合は
で表され、単項式 テンプレート:Math で表される多重集合から元をとって作られる有限多重集合全体の成す無限多重集合は テンプレート:Math なる特別の場合として テンプレート:Math で表される。さらに進めて単項式 テンプレート:Mvar に対応する多重集合に値をとる有限多重集合全体の成す無限多重集合は
である。これを「多重集合は濃度が負の集合」と形式的に説明することができる。負の二項係数 テンプレート:Math は テンプレート:Mvar-元集合から元をとって得られる テンプレート:Mvar-元多重集合の総数を数えるものである。
累積母函数
非負整数の多重集合
非負整数 テンプレート:Mvar を単項式 テンプレート:Mvar で表すと、同様にして非負整数からなる有限多重集合を多項式 テンプレート:Math で表すことができる。
これには累積母函数 テンプレート:Math を考えるのが簡便である。
- 多重集合の濃度は テンプレート:Math.
- 累積母函数の導函数は .
例えば非負整数の多重集合 テンプレート:Math に対応する多項式は テンプレート:Math であり、その累積母函数 テンプレート:Math, 濃度 テンプレート:Math, 導函数 テンプレート:Math, 平均値 テンプレート:Math などと計算できる。
ここに現れる数 テンプレート:Math は各次数の累積率と呼ばれる。
非負整数全体の成す無限集合 テンプレート:Math は形式冪級数 テンプレート:Math で表され、平均値や標準偏差は定義されないが、累積母函数 テンプレート:Math は持つ。この累積母函数の導函数は テンプレート:Math である。
実数の多重集合
実数からなる有限多重集合 テンプレート:Math は累積母函数
で表される。この表現は一意である(つまり、相異なる多重集合は相異なる累積母函数を持つ)。平均 テンプレート:Mvar, 標準偏差 テンプレート:Mvar を持つ テンプレート:Mvar 個の実数からなる多重集合の累積母函数は テンプレート:Math で与えられ、その導函数は テンプレート:Mathとなる。
ただ一つの実数 テンプレート:Mvar からなる集合 テンプレート:Math の累積母函数は テンプレート:Math であり、その導函数 テンプレート:Math はその数自身に一致する。この意味において、「実数からなる多重集合の累積母函数の導函数」は実数の概念を一般化するものである。
一つの実数 テンプレート:Mvar のみを含む テンプレート:Mvar 元の定値多重集合 テンプレート:Math は テンプレート:Math が対応し、導函数は テンプレート:Mvar に無関係に テンプレート:Math である。
性質
実数からなる二つの多重集合の元ごとの和の成す多重集合の累積母函数は、各々の多重集合の累積母函数の和に等しい:
元ごとの積の累積母函数
を計算する一般式は存在しないが、その特別の場合として定数倍は
となる。多重集合 テンプレート:Math は多重集合 テンプレート:Math とは異なることに注意せよ。例えば、テンプレート:Math に対し、テンプレート:Math である。テンプレート:Math の累積母函数は
となる。標準正規分布は実数からなる巨大な多重集合の極限
と看做せる。この極限は実数の多重集合として意味を成すものではないが、極限をとる多重集合の累積母函数の導函数には意味を持たせることができて、その極限は
と矛盾なく定義される。定数項 テンプレート:Math は微分で消え、省略した後続の項は極限をとれば消える。ゆえに平均 テンプレート:Math, 標準偏差 テンプレート:Math を持つ標準正規分布に対して、その累積母函数の導函数は テンプレート:Math となる。平均 テンプレート:Mvar, 標準偏差 テンプレート:Mvar の正規分布の累積母函数の導函数は テンプレート:Math で与えられる。
応用
多重集合は様々な応用を持つ[11]。多重集合はそのより高度な厳密さが希求されたことの結果として、組合せ論における主要な構造となり、現代組合せ論は集合ではなく多重集合に対する理論として発展した[19][20][21][22]。多重集合はデータベースにおいて重要な道具となった[23][24][25]。例えば多重集合はデータベースシステムにおける重要な関係としてしばしば用いられる。多重集合は計算機科学においても重要な役割を務める[1]。
他にも応用はある。例えば、テンプレート:仮リンクは多重集合を集合族の性質を調べる仕掛けとして用いた。ラドは「集合の概念はその各元がいくつ現れるかを考慮しないものだが、そうは言ってもこの手の情報はたびたび重要になる。多項式 f(x) の根全体の成す集合とか線型作用素のスペクトルとかを考えるだけでもそれは分かるだろう。」と書いている[8]。
一般化
重複度関数の値域を変更することにより、重複度を負の値も含めた整数値や実数値などに拡張して考えることができる。拡張された意味での多重集合に関する多重集合演算は、大抵の場合には非負整数値の場合の重複度関数の算術がそのまま成立するものとして演算後の重複度関数を定め、それによって特徴付けられる多重集合として定義される。
たとえば、ファジィ集合(曖昧集合、確率的集合)は、区間 テンプレート:Closed-closed に値をとる重複度函数を備えた多重集合と考えることもできる。この場合、ファジィ集合の帰属率函数(メンバシップ函数)が重複度函数に相当する。ただし、ある集合 X を全体集合として固定して、その部分集合となっているようなものだけにファジィ集合だけを考えるときは、(確率的な解釈を与えるため)X の任意の分割
に対して、
となるように帰属率函数に制限を加えて考えることも多い。
各種問題の研究と解法に応じて様々に異なる多重集合の一般化が存在する:
- Fuzzy multisets[26]
- Rough multisets[27]
- Real-valued multisets (in which multiplicity of an element can be any real number)[28][29]
- Hybrid sets[30]
- where multiplicity is any real-valued step function[31]
- Soft multisets[32]
- Soft fuzzy multisets[33]
- Named set (unification of all generalizations of sets)[34][35][36][37]
注釈
出典と参考文献
関連項目
外部リンク
- ↑ 1.0 1.1 1.2 テンプレート:Cite book クヌースは同書で、多重集合に対して提案された他の名前(例えば,リスト(list)、まとまり(bunch)、バッグ(bag)、堆積(heap)、標本(sample)、重みつき集合(weighted set)、コレクション(collection)、組(suite).など)も提示している。
- ↑ 2.0 2.1 テンプレート:Cite journal 多重集合の歴史に関するサーベイ論文である。
- ↑ テンプレート:Cite book
- ↑ テンプレート:Cite journal
- ↑ テンプレート:Cite book
- ↑ Cristian S. Calude, Gheorghe Păun, Grzegorz Rozenberg, Arto Salomaa, Multiset Processing: Mathematical, Computer Science, and Molecular Computing Points of View Springer Verlag 2001, ISBN 3-540-43063-6 S. 105
- ↑ テンプレート:Cite journal
- ↑ 8.0 8.1 8.2 テンプレート:Cite journal
- ↑ テンプレート:Cite book
- ↑ テンプレート:Cite report
- ↑ 11.0 11.1 テンプレート:Cite journal
- ↑ テンプレート:Cite journal
- ↑ テンプレート:Cite book
- ↑ テンプレート:Cite book
- ↑ テンプレート:Cite book
- ↑ テンプレート:Cite book
- ↑ テンプレート:Cite book
- ↑ 例えばテンプレート:Harvnb
- ↑ テンプレート:Cite book
- ↑ テンプレート:Cite book
- ↑ テンプレート:Cite book
- ↑ テンプレート:Cite book
- ↑ テンプレート:Cite journal
- ↑ テンプレート:Cite book
- ↑ テンプレート:Cite journal
- ↑ テンプレート:Cite journal
- ↑ テンプレート:Cite book
- ↑ テンプレート:Cite journal
- ↑ テンプレート:Cite journal
- ↑ テンプレート:Cite journal
- ↑ テンプレート:Cite journal
- ↑ テンプレート:Cite journal
- ↑ テンプレート:Cite journal
- ↑ テンプレート:Cite book
- ↑ テンプレート:Cite journal
- ↑ テンプレート:Cite arXiv
- ↑ テンプレート:Cite book