定義:Σ*の部分集合を「言語」という。
それはさておき。
Σ={a}のとき、Σ*={a}*と自然数の集合Nは1対1に対応付けられる。
{a}*とは、{ε,a,aa,aaa,…}のことだ。N={0,1,2,3,…}と対応するのは自然。
- h(ε)=ε
- h(xa)=h(x)h(a) (x∈Σ*,a∈Σ)
ここで言ってる写像は何の条件もないので、別に1対1でもontoでもないはずだ。アルファベット「日本語のひらがな」「日本語のカタカナ」を考えよう。ひらがな文字の集合からカタカナ語の集合(「日本語のカタカナ」*)への写像hを50音順の対応としよう。つまり、あ→ア,い→イ,…,ん→ン、という写像だ(カタカナ語の集合には「ア」「アノネ」「アンタバカネ」「イ」などを含むが、「アノネ」「アンタバカネ」などの語に写ってくるひらがな文字はないことにする)。
アルファベットにはεを含まないようだ(暗黙?)が、アルファベット上のすべての語の集合にはεを含むので、Σ*からの写像に定義を拡張するため「h(ε)=ε」という設定が必要だ。
もうひとつの拡張設定をひらがな・カタカナの例で考える。
x∈Σ*,a∈Σに対する「xa」とは、「ひらがな語」と「ひらがな」をつなげたモノ、たとえば「あ・い」、「あのね・え」、「きゅうたろうは・ね」などだ。これに対する写像を、後ろから一文字ずつばらして適用するというわけだ。
例:h(あい)=h(あ)h(い)=「ア」「イ」=「アイ」、h(あのねえ)=h(あのね)h(え)=…=h(あ)h(の)h(ね)h(え)=「アノネエ」
たしかにこれで文字の集合から語の集合への写像を、語の集合から語の集合への写像に拡張している。
ここではhをintoな写像として考えたが、べつにintoなものをontoに拡張したわけではない。あいかわらず、「アノネ」「アンタバカネ」などの語に写ってくるひらがなはないかもしれない。いや、まあこの例だと実際にはある(もちろん「あのね」→「アノネ」、「あんたばかね」→「アンタバカネ」)んだけど。
ローマ字とカナで例を作った方がよかったかな。
One Comment