第 1 章 計算とプログラミング言語
1.5 練習問題
問 1.1
をアルファベットとする言語の要素(文)は,の要素 の有限の並びである. この言語(文の集合)をと書くことにする.
-
1.
は可算無限集合,すなわち,自然数の集合と1対1対応がある集合であることを の要素に通し番号をつけることによって示せ.
-
2.
このことから,自然数から自然数への関数に限っても,コンピュータ・ プログラムで表現できないものが存在することを確認せよ.
-
3.
有理数係数の代数方程式の解として表される実数を代数的数と呼ぶ. 有理数係数の代数方程式は,を適当に取れば,の要素 で表現できることを確認せよ. このことから,非代数的数(代数的数ではない数) は無限に存在することを示せ.
解答例 本問の主旨は,集合や数の性質の分析ではなく,第1章の主旨である記 号による情報の表現の原理と限界を理解することである. そこで,以下数学的な性質などを極力避け,による情報の表現の観点 から具体的な分析を行う.
-
1.
以下の方針での要素にから始まる通し番号をつけることができる.
-
(a)
であり, ならであるから, は,に分割できる.
-
(b)
の要素数をとし,とする. の要素数はである. この個の各要素を,からを 個の数字とする 桁の進数表現と見做すことにより, からの数を一意に割り当てることができる. ただし,にはを割り当てる. この要素に割り当てられた数をと書く.
-
(c)
の要素数は である. の要素に対して, がに属するなら, その通し番号をとする.
例えばの場合の通し番号のいくつかを以下に示す.
通し番号 実際,の通し番号は,であるからである. この通し番号は連続しており,重なりがないから, は自然数の集合と1対1に対応することがわかる.
-
(a)
-
2.
自然数から自然数への関数全体の集合は数え上げることができない(非可算である). (もし数え上げ系列が存在するとすると, この系列の何処にも出てこない関数 が定義できてしまい,矛盾してしまう.(対角線論法)) 一方,プログラムはの要素であるから,項目1の通し番号の若い順に 通し番号をつけることができる. したがって,自然数から自然数への関数全体の集合には,プログラムでは表現できない 関数が存在する. 非可算集合から可算集合を取り除いた要素が有限であれば,非可算集合は数え上げることが できてしまうので,プログラムでは表現できない関数は無限に存在する.
-
3.
有理数係数の代数方程式は,有限の記号(数字,変数名,プラス・マイ ナス記号,等号等)で書かれたものであるから,これらの方程式を書き下すために必要な 記号をと取れば,個々の方程式はの要素である. 項目1から,すべての有理数係数の代数方程式の集合は可算無限である. 一つの方程式の解は高々有限個であるため,有理数係数の代数方程式の解の集合 は,有限の要素をもつ可算無限個の集合の和集合である. この和集合の要素は,それが属する集合の順に数え上げることができる ため,可算無限である. 従って,有理数係数の代数方程式で表しうる実数の集合は,この可算無 限集合の部分集合であり,可算である. 一方,実数の集合は非可算である(項目2と同様に,対角線論法で示すことができる). 以上から,実数の集合には,有理数係数の代数方程式で表し得ない数が無限に存在する.
(注釈)教科書の初版では,「代数方程式」を「連立方程式」としているが,正誤表の通り, 代数的数の定義は「有理数係数の(一変数の)代数方程式の解と表される数」である. ただし,本問の主旨は,代数的数の集合が可算であることは,代数的数の性質等によらず,
「記号で表現できる式はの要素であり,従ってそのような式全体の集 合は可算である」
という性質のみをつかって導かれる性質であることを理解する ことである. 従ってこの議論は,記号で表記できる有限個の解をもつ「方程式」で表現可能な数と 一般化しても,問題なく成立する.