辞書式順序

同義語:辞書順序lexicographic order

概要

辞書式順序(lexicographic order)とは、全順序集合の直積や文字の列を、先頭の成分から順に比べ、最初に違った成分の大小で順序を決める並べ方であり、辞書順序ともいう。たとえば $\mathbb{N}^2$ では $(1,100)<(2,0)$ であり、国語辞典の単語の並びもこの順序である。辞書式順序はつねに全順序で、成分ごとに比べる直積順序を含む。整列集合の有限個の直積、特に $\mathbb{N}^n$ の辞書式順序は整列順序になるが、2 文字以上の文字からなる語全体では $\mathrm{b}>\mathrm{ab}>\mathrm{aab}>\cdots$ という無限下降列があって整列順序にならず、無限個の直積でも整列性は失われうる。

$$\newcommand{C}[0]{\mathbb{C}} \newcommand{div}[0]{\mathbin{÷}} \newcommand{N}[0]{\mathbb{N}} \newcommand{Q}[0]{\mathbb{Q}} \newcommand{R}[0]{\mathbb{R}} \newcommand{Z}[0]{\mathbb{Z}} $$

前提知識: 全順序, 直積集合, 整列順序, 最小元

国語辞典では、単語を先頭の文字から順に比べて並べる。1 文字目が違えばそれで順番が決まり、同じなら 2 文字目を比べる。英単語なら ca, car, cat, catalog, dog の順であり、ca が car より前に来るように、一方が他方の頭の部分になっているときは短いほうが先である。同じ規則を数の組に使うと、$(1,100)$ と $(2,0)$ では 1 番目の成分 $1<2$ で決まって $(1,100)<(2,0)$ となる。2 番目の成分がどれほど大きくても、1 番目の成分の差を覆さない。このように、成分を先頭から順に比べ、最初に違った場所で大小を決める並べ方が 辞書式順序 である。辞書式順序はつねに全順序になるが、「必ず最初の元がある」かどうかは場合による。自然数の組では空でないどの集合にも最初の元がある一方、単語全体では b, ab, aab, aaab, … と限りなく前へ戻る列があり、この列には最初の単語がない。

定義

以下、全順序集合 $(P,\leq)$ について $x< y$ は「$x\leq y$ かつ $x\neq y$」を表す。

直積と列の辞書式順序

添字集合 $I$ を $\{1,2,\dots,n\}$($n\ge1$)または正の整数全体 $\{1,2,3,\dots\}$ とし、各 $i\in I$ について全順序集合 $(P_i,\leq_i)$ が与えられているとする。直積集合 $\prod_{i\in I}P_i$ の元 $x=(x_i)_{i\in I}$、$y=(y_i)_{i\in I}$ について、$x\neq y$ のとき $x_i\neq y_i$ となる $i$ の最小のもの(正の整数の空でない部分集合の最小元)を $k$ とし、
$$ x<_{\mathrm{lex}}y\ :\Longleftrightarrow\ x\neq y\ \text{かつ}\ x_k<_k y_k $$
と定める。$x\leq_{\mathrm{lex}}y$ を「$x<_{\mathrm{lex}}y$ または $x=y$」で定めた関係を、$\prod_{i\in I}P_i$ 上の 辞書式順序(lexicographic order)または 辞書順序 という。$I=\{1,\dots,n\}$ でどの $P_i$ も同じ $P$ のときは $P^n$ 上の、$I$ が正の整数全体のときは無限列の集合 $P^{\mathbb{N}}$(本記事では添字を $1$ から付ける)上の辞書式順序という。

$n=2$ のとき、$(p,q)<_{\mathrm{lex}}(p',q')$ は「$p< p'$、または $p=p'$ かつ $q< q'$」であり、全順序 の記事の命題「辞書式順序の構成」の定義と一致する。
長さの違う列(単語)を比べるときは、一方が他方の先頭部分になっている場合の約束が要る。

語の辞書式順序と長さ優先順序

$\Sigma$ を全順序集合とし、その元を文字と呼ぶ。$\Sigma$ の元の有限列 $u=u_1u_2\cdots u_m$($m\ge0$。$m=0$ のものを空語という)を $\Sigma$ 上の 語 といい、$m$ を $u$ の長さ $|u|$ という。語全体の集合を $\Sigma^*$ と書く。$u$ が $v$ の 接頭辞 であるとは、$|u|\le|v|$ かつ $i\le|u|$ のすべてで $u_i=v_i$ であることをいう。

  1. 語 $u\neq v$ について、$u$ が $v$ の接頭辞であるか、または $u_i\neq v_i$ となる最小の $i$($i\le\min\{|u|,|v|\}$)で $u_i< v_i$ となるとき、$u<_{\mathrm{lex}}v$ と定める。これを $\Sigma^*$ 上の 辞書式順序 という。
  2. 語 $u\neq v$ について、$|u|<|v|$ であるか、または $|u|=|v|$ かつ $u<_{\mathrm{lex}}v$ であるとき、$u<_{\mathrm{sl}}v$ と定める。これを 長さ優先の辞書式順序(shortlex order)という。

国語辞典の並びは 1 である(全順序 の記事の例「辞書式順序による単語の並び」)。2 は、まず短い語をすべて並べ、同じ長さの中を辞書式に並べる。$\Sigma=\{\mathrm{a}<\mathrm{b}\}$ で長さ 3 までの語の一部を並べると、辞書式順序では
$$ \text{(空語)}<\mathrm{a}<\mathrm{aa}<\mathrm{aab}<\mathrm{ab}<\mathrm{b}<\mathrm{ba}<\mathrm{bb}, $$
長さ優先の辞書式順序では
$$ \text{(空語)}<\mathrm{a}<\mathrm{b}<\mathrm{aa}<\mathrm{ab}<\mathrm{ba}<\mathrm{bb}<\mathrm{aab} $$
となる。

直感

辞書式順序は、成分に「優先順位」をつけた比べ方である。1 番目の成分が決定権をもち、そこが同じときだけ 2 番目に発言権が移る。成分ごとに大小を比べる直積順序(順序集合。すべての成分で $\le$ のときだけ $\le$ とする)では $(1,0)$ と $(0,1)$ のように比べられない組が残るが、辞書式順序は優先順位によって必ず決着をつけるので全順序になる(prop-lex-total)。その代わり、後ろの成分の情報は前の成分の差に比べて「無限に小さく」扱われる。$(0,k)<(1,0)$ がどの $k$ でも成り立つのはこのためであり、自然数の組 $\mathbb{N}\times\mathbb{N}$ を辞書式に並べると、$(0,0),(0,1),(0,2),\dots$ という無限列を並べきった「その後」に $(1,0)$ が来る。

例と反例

自然数の組と 3 つ組

$\mathbb{N}^2$ の辞書式順序では $(0,5)<(1,0)<(1,1)<(1,100)<(2,0)$ である。$\mathbb{N}^3$ では $(2,0,0)>(1,9,9)>(1,9,0)>(1,0,7)$ である。どちらも、最初に違う成分だけで大小が決まっている。3 桁の数字の列 $(a,b,c)$($0\le a,b,c\le9$)の辞書式順序は、それが表す数 $100a+10b+c$ の大小と一致する。$(a,b,c)<_{\mathrm{lex}}(a',b',c')$ で $a< a'$ なら $100a+10b+c\le100a+99<100(a+1)\le100a'$ となるからである($a=a'$ の場合も同様)。

反例:単語の無限下降列

$\Sigma=\{\mathrm{a}<\mathrm{b}\}$ 上の語の辞書式順序で、語 $w_k:=\mathrm{a}^k\mathrm{b}$($\mathrm{a}$ を $k$ 個並べてから $\mathrm{b}$)を考えると、
$$ \mathrm{b}>\mathrm{ab}>\mathrm{aab}>\mathrm{aaab}>\cdots $$
である。実際 $w_k$ と $w_{k+1}$ は $k$ 文字目まで $\mathrm{a}$ で一致し、$k+1$ 文字目が $w_k$ では $\mathrm{b}$、$w_{k+1}$ では $\mathrm{a}$ なので $w_{k+1}<_{\mathrm{lex}}w_k$ である。したがって集合 $\{w_k\mid k\in\mathbb{N}\}$ は最小元をもたず、$\Sigma^*$ の辞書式順序は全順序だが整列順序でない(prop-lex-words-well-ordered の 1)。この例は「文字の集合が有限で整列していれば、語の辞書式順序も整列している」という含意を破っている。$\Sigma^*$ 全体には最小元(空語)があるが、空でない部分集合の中には最小元をもたないものがある。

反例:整数の組

$\mathbb{Z}^2$ の辞書式順序は全順序だが、整列順序でない。$\mathbb{Z}^2$ 自身が最小元をもたない($(a-1,b)<(a,b)$)。さらに、第 1 成分を $0$ に固定した $\{(0,b)\mid b\in\mathbb{Z}\}$ も最小元をもたない。各成分 $\mathbb{Z}$ が整列していないことがそのまま遺伝する。

複素数の辞書式順序と掛け算

複素数 $a+bi$ を実数の組 $(a,b)$ とみて $\mathbb{R}^2$ の辞書式順序を入れると、$\mathbb{C}$ 上の全順序が得られ、足し算と両立する(prop-lex-additive)。しかし $0<_{\mathrm{lex}}i$($(0,0)<(0,1)$)なのに $i\cdot i=-1<_{\mathrm{lex}}0$ であり、「正の元どうしの積は正」が成り立たない。順序体 の記事の例「反例:複素数体」は、どのような全順序でも $\mathbb{C}$ が順序体にならないことを示している。

性質

全順序であること

辞書式順序は全順序

def-lex-product の状況で、$\leq_{\mathrm{lex}}$ は $\prod_{i\in I}P_i$ 上の全順序である。

最初に違う位置を比べる

$x\neq y$ について、$x_i\neq y_i$ となる $i$ 全体は正の整数の空でない部分集合なので最小元をもち(数学的帰納法 の記事の定理「自然数の整列原理」)、それを $d(x,y)$ と書く。$d(x,y)=d(y,x)$ である。
反射律は定義から成り立つ。
反対称律:$x\leq_{\mathrm{lex}}y$ かつ $y\leq_{\mathrm{lex}}x$ で $x\neq y$ とすると、$k=d(x,y)$ で $x_k<_k y_k$ かつ $y_k<_k x_k$ となり、$\leq_k$ の反対称律に反する。よって $x=y$ である。
推移律:$x<_{\mathrm{lex}}y$ かつ $y<_{\mathrm{lex}}z$ とし、$k=d(x,y)$、$l=d(y,z)$ とおく。$j:=\min\{k,l\}$ とすると、$i< j$ では $x_i=y_i=z_i$ である。

  • $k< l$ なら $j=k$ で、$x_k<_k y_k=z_k$。
  • $l< k$ なら $j=l$ で、$x_l=y_l<_l z_l$。
  • $k=l$ なら $x_k<_k y_k<_k z_k$ なので $x_k\leq_k z_k$ であり、$x_k=z_k$ なら $z_k<_k y_k$ と $y_k<_k z_k$ が同時に成り立って反対称律に反するので、$x_k<_k z_k$。
    いずれの場合も $x_j<_j z_j$ かつ $i< j$ で $x_i=z_i$ なので、$d(x,z)=j$ であり $x<_{\mathrm{lex}}z$ である。$x\leq_{\mathrm{lex}}y\leq_{\mathrm{lex}}z$ で等号が入る場合は明らかである。
    全順序律:$x\neq y$ なら $k=d(x,y)$ で $x_k\neq y_k$ であり、$\leq_k$ は全順序なので $x_k<_k y_k$ または $y_k<_k x_k$、すなわち $x<_{\mathrm{lex}}y$ または $y<_{\mathrm{lex}}x$ である。$\square$

証明のうち反射律・反対称律・推移律の部分は、各 $\leq_i$ の全順序律を使っていない。したがって各 $P_i$ が単なる順序集合でも $\leq_{\mathrm{lex}}$ は順序になる。ただしこのときは全順序とは限らない。ある $P_j$ に比較できない $a,b$ があれば、$j$ 番目だけが $a,b$ で他の成分が等しい 2 つの元は比較できないからである。

語の辞書式順序は全順序

全順序集合 $\Sigma$ 上の語の辞書式順序 $\leq_{\mathrm{lex}}$($u<_{\mathrm{lex}}v$ または $u=v$)と長さ優先の辞書式順序 $\leq_{\mathrm{sl}}$ は、いずれも $\Sigma^*$ 上の全順序である。

空白の文字を補って無限列にする

$\Sigma$ に属さない新しい記号 $\bot$ を加えた $\Sigma_\bot:=\Sigma\cup\{\bot\}$ に、$\bot$ がどの文字よりも小さい全順序を入れる。語 $u=u_1\cdots u_m$ に、後ろに $\bot$ を無限に並べた列 $\iota(u):=(u_1,\dots,u_m,\bot,\bot,\dots)\in\Sigma_\bot^{\mathbb{N}}$ を対応させる。$\iota(u)$ の $\bot$ の最初の位置が $m+1$ なので、$\iota$ は単射である。
$u\neq v$ について、$u<_{\mathrm{lex}}v$ と $\iota(u)<_{\mathrm{lex}}\iota(v)$(def-lex-product の無限列の辞書式順序)が同値であることを示す。$u$ が $v$ の真の接頭辞なら、$\iota(u)$ と $\iota(v)$ が最初に違う位置は $|u|+1$ であり、そこで $\iota(u)$ は $\bot$、$\iota(v)$ は文字なので $\iota(u)<_{\mathrm{lex}}\iota(v)$ である。$v$ が $u$ の真の接頭辞なら、同様に $\iota(v)<_{\mathrm{lex}}\iota(u)$ である。どちらでもなければ $u_i\neq v_i$ となる最小の $i\le\min\{|u|,|v|\}$ があり、それが $\iota(u),\iota(v)$ の最初に違う位置なので、両方の順序で大小は $u_i,v_i$ の大小で決まる。
したがって $\leq_{\mathrm{lex}}$ は、prop-lex-total により全順序である $\Sigma_\bot^{\mathbb{N}}$ の辞書式順序を、単射 $\iota$ で $\Sigma^*$ に引き戻したものであり、全順序である(全順序の部分集合への制限は全順序:全順序 の記事の命題「部分集合への制限」)。
$\leq_{\mathrm{sl}}$ は、語 $u$ に組 $(|u|,u)\in\mathbb{N}\times\Sigma^*$ を対応させ、$\mathbb{N}\times\Sigma^*$ の 2 成分の辞書式順序($\Sigma^*$ には $\leq_{\mathrm{lex}}$)を引き戻したものである。この対応は単射で、2 成分の辞書式順序は prop-lex-total により全順序なので、$\leq_{\mathrm{sl}}$ も全順序である。$\square$

直積順序・足し算との関係

直積順序を含むこと

def-lex-product の状況で、すべての $i$ について $x_i\leq_i y_i$ なら $x\leq_{\mathrm{lex}}y$ である。すなわち辞書式順序は直積順序(順序集合)を含む全順序(直積順序の線形拡大。位相的整列)である。逆は成り立たない。

最初に違う位置でも $\leq$ が成り立つ

$x=y$ なら明らかである。$x\neq y$ なら $k=d(x,y)$ で $x_k\leq_k y_k$ かつ $x_k\neq y_k$ なので $x_k<_k y_k$、すなわち $x<_{\mathrm{lex}}y$ である。逆については、$\mathbb{N}^2$ で $(0,1)<_{\mathrm{lex}}(1,0)$ だが $1\leq0$ でないので、直積順序では $(0,1)\leq(1,0)$ でない。$\square$

足し算との両立

$\mathbb{Z}^n$ または $\mathbb{R}^n$ に辞書式順序を入れると、$x<_{\mathrm{lex}}y$ ならば任意の $z$ について $x+z<_{\mathrm{lex}}y+z$ である。

差の最初の位置は変わらない

$(x+z)_i=(y+z)_i$ と $x_i=y_i$ は同値なので、$x+z$ と $y+z$ が最初に違う位置は $k=d(x,y)$ であり、そこで $x_k+z_k< y_k+z_k$ である。よって $x+z<_{\mathrm{lex}}y+z$ である。$\square$

$\mathbb{N}^n$ の元を単項式 $x_1^{a_1}\cdots x_n^{a_n}$ の指数とみると、prop-lex-additive は「単項式に同じ単項式を掛けても辞書式の大小が変わらない」ことを意味する。対称多項式 の記事は、この性質(同記事の補題「先頭指数の性質」の 1)と、次の thm-lex-well-ordered による $\mathbb{N}^n$ の整列性を使って、対称多項式の基本定理を示している。一方、辞書式順序は「アルキメデス的」でない。$\mathbb{Z}^2$ では、どれほど大きい正の整数 $k$ についても $k\cdot(0,1)=(0,k)<_{\mathrm{lex}}(1,0)$ である。付値環 の記事の例「値群が2段の付値環」は、この順序を値群とする付値を扱っている。

整列性

整列集合の有限直積

$P_1,\dots,P_n$ が整列順序をもつ全順序集合なら、$P_1\times\cdots\times P_n$ の辞書式順序は整列順序である。特に $\mathbb{N}^n$ の辞書式順序は整列順序である。

1 番目の成分から順に最小を選ぶ

prop-lex-total により全順序なので、空でない部分集合 $S$ が最小元をもつことを示せばよい。$a_1,\dots,a_n$ を次のように順に定める。$S_1:=\{x_1\mid x\in S\}$ は $P_1$ の空でない部分集合なので最小元 $a_1$ をもつ。$a_1,\dots,a_{j-1}$ まで定まり、$x_1=a_1,\dots,x_{j-1}=a_{j-1}$ を満たす $x\in S$ が存在するとき、
$$ S_j:=\{x_j\mid x\in S,\ x_1=a_1,\ \dots,\ x_{j-1}=a_{j-1}\} $$
は $P_j$ の空でない部分集合なので最小元 $a_j$ をもち、$x_1=a_1,\dots,x_j=a_j$ を満たす $x\in S$ が存在する。$j=n$ まで進めると $a:=(a_1,\dots,a_n)\in S$ である。
$x\in S$、$x\neq a$ とし、$k=d(x,a)$ とする。$i< k$ では $x_i=a_i$ なので $x_k\in S_k$ であり、$a_k\leq x_k$ である。$x_k\neq a_k$ なので $a_k< x_k$、すなわち $a<_{\mathrm{lex}}x$ である。よって $a$ は $S$ の最小元である。$\square$

$n=2$、$P_1=P_2=\mathbb{N}$ の場合は 整列順序 の記事の例「自然数の組の辞書式順序」と同じ議論である。この整列集合の順序型は $\omega\cdot\omega=\omega^2$ である(順序数 の記事の例「整列集合の順序型の例」)。整列集合では真に減少する無限列が存在しない(整列順序 の記事の命題「無限降下列の非存在」)ので、thm-lex-well-ordered は、辞書式に小さくなり続ける手続きがいつか止まることを保証する。
有限直積という仮定は外せない。

反例:0 と 1 の無限列

$\{0<1\}^{\mathbb{N}}$($0,1$ の無限列全体)の辞書式順序で、$k$ 番目だけが $1$ で他が $0$ の列を $e_k$ とすると、$e_k$ と $e_{k+1}$ は $k$ 番目で初めて違い、そこで $e_k$ が $1$、$e_{k+1}$ が $0$ なので
$$ e_1>_{\mathrm{lex}}e_2>_{\mathrm{lex}}e_3>_{\mathrm{lex}}\cdots $$
である。したがって $\{e_k\}$ は最小元をもたず、各成分 $\{0<1\}$ が整列していても、無限個の直積の辞書式順序は整列順序とは限らない。この例は thm-lex-well-ordered の「有限個」の仮定を外すと結論が破れることを示している。

語の順序の整列性

$\Sigma$ を空でない全順序集合とする。

  1. $\Sigma$ が 2 個以上の元をもつなら、$\Sigma^*$ の辞書式順序は整列順序でない。$\Sigma$ が 1 個の元だけからなるなら、整列順序である。
  2. $\Sigma$ が整列順序なら、$\Sigma^*$ の長さ優先の辞書式順序は整列順序である。さらに $\Sigma$ が有限なら、各語 $w$ より小さい語は有限個しかない。
長さで分けて有限直積に帰着する

1:$\mathrm{a}<\mathrm{b}$ となる $\mathrm{a},\mathrm{b}\in\Sigma$ があれば、ex-lex-descending-words の語 $\mathrm{a}^k\mathrm{b}$ の集合が最小元をもたない。$\Sigma=\{\mathrm{a}\}$ なら語は $\mathrm{a}^m$($m\ge0$)だけで、$\mathrm{a}^m$ が $\mathrm{a}^{m'}$ の接頭辞であることは $m\le m'$ と同値なので、$\mathrm{a}^m\mapsto m$ は $\Sigma^*$ から $\mathbb{N}$ への順序同型であり、整列順序である。
2:prop-lex-words-total により全順序である。空でない $S\subset\Sigma^*$ をとる。長さ全体 $\{|u|\mid u\in S\}$ は $\mathbb{N}$ の空でない部分集合なので最小元 $m$ をもつ。長さ $m$ の語の間では、辞書式順序は $\Sigma^m$ の辞書式順序と一致する(同じ長さなので接頭辞の場合は起こらない)。thm-lex-well-ordered により $\Sigma^m$ は整列しているので、$S$ の長さ $m$ の語全体は最小元 $w_0$ をもつ。$S$ の他の語は長さが $m$ より大きいか、長さ $m$ で $w_0$ より辞書式に大きいので、$w_0$ は $S$ の $\leq_{\mathrm{sl}}$ に関する最小元である。
$\Sigma$ が有限で $|\Sigma|=s$ なら、語 $w$ より小さい語は長さ $|w|$ 以下なので、その個数は長さ $\le|w|$ の語の個数 $1+s+\cdots+s^{|w|}$ 以下である。$\square$

2 の後半により、$\Sigma$ が有限なら長さ優先の辞書式順序で $\Sigma^*$ の語を小さい順に $w_0,w_1,w_2,\dots$ と 1 列に並べ尽くせる。$\Sigma=\{\mathrm{a},\mathrm{b}\}$ なら並びは $\text{(空語)},\mathrm{a},\mathrm{b},\mathrm{aa},\mathrm{ab},\mathrm{ba},\mathrm{bb},\mathrm{aaa},\dots$ である。ふつうの辞書式順序ではこれができない。$\mathrm{a},\mathrm{aa},\mathrm{aaa},\dots$ がすべて $\mathrm{b}$ より前に来るからである。

辞書式順序が現れる場面
  • 組合せ論の列挙:組み合わせや重複組み合わせを書き並べるとき、辞書式順序で並べると漏れや重複がないことを確かめやすい(Ham §3.8、p. 96 は 4 文字からの重複組み合わせを辞書の順に並べている)。
  • 順序数:順序数の積 $\alpha\cdot\beta$ は、直積 $\beta\times\alpha$ に辞書式順序を入れた整列集合の順序型として特徴づけられる(順序数 の記事の定義「順序数の算術」に続く説明)。
  • 位相空間の例:辞書式順序に順序位相を入れると、ふつうの直積位相とは違う空間が得られる。第 1 非可算順序数と区間 $[0,1)$ の直積に辞書式順序を入れた長い直線(同記事の定義「長い半直線」)や、単位正方形 $[0,1]^2$ に辞書式順序を入れた順序正方形(局所連結空間 の記事の命題「局所連結だが局所弧状連結でない空間」)がその例である。
  • 多項式の計算:多項式の項を指数の辞書式順序で並べ、最大の項(先頭項)に注目する議論(対称多項式 の記事の定義「指数の辞書式順序と先頭項」)。まず全次数で比べ、等しければ辞書式に比べる順序(次数付き辞書式順序)も、長さ優先の辞書式順序と同じ考え方で使われる。

関連項目

参考文献

Mathpediaは寄付と、参考文献の書籍リンク(Amazonアソシエイト)の紹介料で運営されています。 支援について / 寄付する