計算可能な数が有理数か整数かをテストすることはできますか?


18

計算可能な数が有理数か整数かをアルゴリズムでテストすることはできますか?言い換えれば、それは道具計算数字は機能を提供するために、そのライブラリは可能でしょうisIntegerisRational

私はそれが不可能であると推測し、これは何らかの形で2つの数値が等しいかどうかをテストすることができないという事実に関連していると推測していますが、それを証明する方法はわかりません。

編集:計算数はxの関数で与えられるfx(ϵ)の合理的な近似値を返すことができx高精度でϵ|xfx(ϵ)|ϵいずれについても、ϵ>0。このような関数を考えると、それがあれば、テストすることが可能であるxQまたはxZ

computability  computing-over-reals  lambda-calculus  graph-theory  co.combinatorics  cc.complexity-theory  reference-request  graph-theory  proofs  np-complete  cc.complexity-theory  machine-learning  boolean-functions  combinatory-logic  boolean-formulas  reference-request  approximation-algorithms  optimization  cc.complexity-theory  co.combinatorics  permutations  cc.complexity-theory  cc.complexity-theory  ai.artificial-intel  p-vs-np  relativization  co.combinatorics  permutations  ds.algorithms  algebra  automata-theory  dfa  lo.logic  temporal-logic  linear-temporal-logic  circuit-complexity  lower-bounds  permanent  arithmetic-circuits  determinant  dc.parallel-comp  asymptotics  ds.algorithms  graph-theory  planar-graphs  physics  max-flow  max-flow-min-cut  fl.formal-languages  automata-theory  finite-model-theory  dfa  language-design  soft-question  machine-learning  linear-algebra  db.databases  arithmetic-circuits  ds.algorithms  machine-learning  ds.data-structures  tree  soft-question  security  project-topic  approximation-algorithms  linear-programming  primal-dual  reference-request  graph-theory  graph-algorithms  cr.crypto-security  quantum-computing  gr.group-theory  graph-theory  time-complexity  lower-bounds  matrices  sorting  asymptotics  approximation-algorithms  linear-algebra  matrices  max-cut  graph-theory  graph-algorithms  time-complexity  circuit-complexity  regular-language  graph-algorithms  approximation-algorithms  set-cover  clique  graph-theory  graph-algorithms  approximation-algorithms  clustering  partition-problem  time-complexity  turing-machines  term-rewriting-systems  cc.complexity-theory  time-complexity  nondeterminism 

3
計算可能な数はどのように与えられますか?
伊藤剛

10
番号の指定方法はもちろん関連しています。馬鹿げた例として、入力に数値が整数であるかどうかのフラグが含まれている場合、入力が整数であるかどうかを判断するのは簡単です。
伊藤剛


3
(1)「これが整数であることをどのように知っていますか?」操作に関する要件については何も言わなかった。(2)「これまでに2つの答えが表示された場合、実装については何も言及していません。」
伊藤剛

16
私の答えがこの議論を埋めることを願っています。剛、あなたは間違っている、どの演算が計算可能かは関係がある。実数を真空に実装するのではなく、それらを操作するために。あなたによると、私たちはすべてを実装するためにユニットタイプを使用することができます。はい、できますが、一部の操作は計算できません。それが正確に表現を判断する基準です。
アンドレイバウアー

回答:


32

実数を「表現」または「実装」することの意味について混乱するのは簡単です。実際、私たちは、表現が論争的であるコメントの議論を目撃しています。最初にこれを取り上げましょう。

実装が正しいことをどのようにして知ることができますか?

コンピューターで物事を表現する方法を説明する理論は実現可能性です。基本的な考え方は、そのセットを与えられている、我々はデータ型ピックアップτを、すべてにX X型の値のセットτ実現して。私たちは、書きV のx Xをするときvは実現がその値であるxは。例えば(私は正当な理由なくハスケルを使用しなければならない)、の賢明な実装Nはデータ型であるかもしれないV のk NVXτxXτvxXvxNIntegervkNv評価符号(従って、特に自然数を表し、いずれもない発散プログラムありません)。しかし、いくつかのジョーカーはで歩き、私たちが使用することを示唆している可能性と自然数を表すために、T R U E42 NFはL S Eのn Nに対してN 42。なぜこれが間違っているのですか?基準が必要です。k¯-42BoolTrue42NFalsenNn42

「ジョーカー番号」の場合、簡単に観察できるのは、加算を実装できないことです。2つの数値があり、どちらも表されているとしましょう。あなたは彼らの合計の実現者を与えることができますか?まあ、それは合計が42かどうかによって異なりますが、わかりません。加算は「自然数の本質的な部分」であるため、これは受け入れられません。言い換えれば、実装はセットに関するものではなく、構造に関するものです。つまり、関連する構造も実装できるようにセットを表現する必要があります。これを強調しましょう:False

ベアセットではなく、構造を実装します。したがって、実装を正しく行うには、操作とすべての公理とともに構造全体を実装できる必要があります。

この原則に従わない場合は、正確さの代替の数学的基準を提案する必要があります。私は知りません。

例:自然数の表現

自然数の場合、関連する構造はペアノ公理によって記述され、実装する必要がある重要な公理は帰納法(ただし、後継者、+0+および)です。実現可能性を使用して、帰納法の実装が行うことを計算できます。それはマップであることが判明します(ここで、自然数を表すまだ未知のデータ型があります)×nat

induction : 'a -> (nat -> 'a -> 'a) -> 'nat -> 'a

満足 induction x f zero = xinduction x f (succ n) = f n (induction x f n)。これらはすべて実現可能性から生まれます。基準があります。自然数の実装は、ペアノ公理の実装を許可するときに正しいものです。我々はファンクタの初期代数として数値の特性を使用した場合、同様の結果が得られるであろうX1+X

実数の正しい実装

実数と手元の質問に注目しましょう。最初に尋ねる質問は、「実数の関連構造は何ですか?」です。答えは次のとおりです。アルキメデスコーシー完全順序フィールド。これは、「実数」の確立された意味です。あなたはそれを変更することはできません、それはあなたのために他の人によって修正されています(私たちのケースでは、代替のDedekind実数は、ここで検討しているコーシー実数と同型であることが判明します)。 「追加の実装を気にしない」または「順序を気にしない」と言うことはできません。その場合、「実数」ではなく「線形順序を忘れた実数」などと呼ぶ必要があります。

すべての詳細については説明しませんが、構造のさまざまな部分がどのように実数に対してさまざまな操作を行うかを説明します。

  • アルキメデスの公理を約計算された合理的な実数の近似を
  • フィールド構造は通常の算術演算を提供します
  • 線形順序はxをテストするための半決定可能な手順を提供しますx<y
  • コーシー完全には私たちに与え機能lim : (nat -> real) -> real(の表現)かかり、迅速なコーシー列を、その制限を返します。(配列あれば迅速で| X N - X M |2 N M のすべてのためのM N)。(xn)n|xnxm|2min(n,m)m,n

取得できないのは、同等性のテスト関数です。決定可能であることを要求する実数の公理には何もありません。(対照的に、ペアノの公理は、自然数が決定可能であることを意味し、楽しい練習としてのみを使用して実装することでそれを証明できます)。=eq : nat -> nat -> Boolinduction

人類が使用する実数の通常の10進数表現は、加算を実装することさえできないため、悪いのは事実です。無限仮数を持つ浮動小数点も失敗します(運動:なぜ?)。ただし、有効なのは符号付き数字表現です。つまり、正の数字だけでなく負の数字も使用できます。または、前述のように、高速コーシー検定を満たす有理数列を使用できます。

剛表現も何かを実装しますが、Rは実装しませんR

次の実数表現を考えてみましょう:実数はペアq b で表されます。ここでq n nxに収束する高速コーシーシーケンスで、bxが整数かどうかを示すブール値です。これを実数の表現とするには、加算を実装する必要がありますが、ブールフラグを計算することはできません。したがって、これは実数の表現ではありません。しかし、それはまだ何か、実数のの、すなわちサブセット表しんZRZをx(q,b)(qn)nxbxZ(RZ)。確かに、実現可能性の解釈に応じて組合が、我々はしている組合のどの部分を示すフラグで実装されている。ちなみに、あるないに等しいRあなたが信じていない限り除外途中で、どの実装できないため、この説明にはまったく関係ありません。私たちはコンピューターに直観的に物事をさせることを強いられていますZ(RZ)R

実数が整数かどうかはテストできません

最後に、尋ねられた質問に答えさせてください。現在、実数の許容可能な表現は、有理数の高速コーシーシーケンスによるものであることがわかっています。(重要な定理は、受け入れ可能な実数の2つの表現は実際に計算上同型であると述べています。)

定理:実数が整数かどうかをテストすることは決定できません。

証明。実数が整数かどうかをテストできると仮定します(もちろん、実数は高速のコーシーシーケンスによって実現されます)。必要に応じてより一般的な定理を証明できるアイデアは、整数に収束する非整数の高速コーシーシーケンスを構築することです。これは簡単で、ちょうど取るX N = 2 - n個。次に、次のように停止問題を解決します。チューリングマシンTが与えられた場合、新しいシーケンスy n ny n = { x n if  T(xn)nxn=2nT(yn)n つまり、新しいシーケンスシーケンスのように見えているXのn個のn限りTの動作しますが、それはで「スタック」を取得するのxメートルの場合Tはステップmで停止します。非常に重要なことは、新しいシーケンスも高速コーシーシーケンスである(Tが停止するかどうかを知らなくてもこれを証明できる)。したがって、その制限z=limnynを計算できます

yn={xnif T has not stopped within n stepsxmif T stopped in step m and mn
(xn)nTxmTmTz=limnynなぜなら、実数の表現は正しいからです。が整数かどうかをテストします。もしそうなら、それは0でなければならず、これはTが永久に実行される場合にのみ起こります。それ以外の場合、zは整数ではないため、Tは停止している必要があります。QED。z0TzT

演習:有理数をテストできないことを示すために、上記の証明を適合させます。次に、それを調整して、重要なことをテストできないことを示します(これは少し難しいです)。

時には、このすべてのテスト事業について人々が混乱することがあります。彼らは、実数が整数かどうかをテストできないことを証明したと考えています。しかし、確かに42は実数であり、整数であるかどうかはわかります。実際には、任意の特定の我々が思い付く本当の、88 LN 89電子π sin1188ln89など、これらが整数であるかどうかを完全に知ることができます。正確には、私たちはので、伝えることができ、我々は、余分な情報を持っています。これらの実数はシーケンスとしてではなく、我々は剛ビットを計算することができ、そこから記号式として私たちに与えられていません。本当のおよそ我々が持っている唯一の情報は、それに収束する合理的な近似値のシーケンスである(と私はないとすぐにではないシーケンスを記述する記号表現が、出力のブラックボックスを意味するn個の入力上の番目の項のnを、私たちは、その後)機械と同じように無力になります。eπ163nn

物語の教訓

セットに対して実行する操作の種類がわからない限り、セットの実装について話すことは意味がありません。


16
私の答えが妻である場合、私は一度だけ答えることができました。または、少なくとも次の回答を書く前に、前の回答を削除する必要があります。
アンドレイバウアー

5
@Max:この種の最初の定理は、Kreisel、Lacombe、Shoenfieldによって与えられました(KLS定理を調べてください)。独立して、TsteitinはKLSを一般化した定理を与え、明示的に「すべての計算可能なマップは計算可能に連続」という形式でした。
アンドレイバウアー

6
教科書を書く必要があります —(Google google google)。わかりました、あなたは在職期間があります。頑張れ!
ジェフ

10
@Tsuyoshi:この質問では、資格のない確立されたフレーズ「実数」を使用しました。実数の構造は標準です。他の構造を自由に検討できますが、標準の用語を誤って解釈することはできません。
アンドレイバウアー

21
技術的に言えば、あなたは正しいです、「本当の」という言葉は使われていません。しかし、実数の定義について間違っています。または、私はこのように言います。実数が最初に来る特定の集合であり、その後に何らかの構造が続くと考えるのは悪い数学です。グループ、リング、トポロジー空間などをその構造に関して定義するのと同じように、普遍的な特性(自然数は初期半環、整数は初期環、有理数初期フィールド、実数)に関して特別なオブジェクト定義する必要があります.....)。
アンドレイバウアー

10

これは決定できないと思う傾向があります。

ましょう計算無理数であること。TM Mを考えます。ϵMを実行し、精度を上げながらxを並列計算する関数を作成できます。場合はMの停止、それは計算を停止し、Xをそれ以外の場合は、引き続き、。xMMϵxMx

この関数が有理数を計算するかどうかを決定することは、停止問題と同等です。


あなたの答えがわかりませんが、詳しく説明していただけますか?私はそれを停止問題とどのように関連付けるのかわかりません。さらに重要なことは、が停止する理由はないと思います(xが整数であっても)。Mx
dbarbosa

剛が指摘したように、答えは計算の表現とモデルに依存します。あなたの答えは、入力をTMが計算することによって与えられた計算可能な実数である場合、平等は決定できないと正しく述べています。これは正しいですが、実際に使用されているモデルに近いものではありません。
カベ

2
実際、私の答えは、質問に投稿された表現に言及しています。実用的であろうとなかろうと。@dbarbosa-私は説明します:TM 与えられたら、答えの構造に従ってください。次に、矛盾として、出力されたマシンが合理的かどうかを判断できると仮定します。それが合理的である場合、ある時点でMが停止し、数値の計算を停止することを意味します。一方、それが非合理的な場合、Mは停止しません。したがって、Mが停止するかどうかがわかり、決定できないことがわかっている停止の問題を解決します。MMMM
シャール

10

実数は、ゼロになる傾向のある既知の計算可能な関数によって制限された誤差を持つ一連の有理近似として与えられます(そのような近似はすべて等価であり、実数上の通常のトポロジに対応します)。

計算可能な関数は連続的です。IsRationalとIsIntegerは連続的ではないため、計算できません。

IsIntegerは計算可能です。入力が整数でない場合は最終的に「false」を出力しますが、入力が整数の場合は永久に実行されるプロシージャがあります。この手順では、各近似値を調べて、エラーの範囲内に整数があるかどうかを確認します。{true、false}でSierpińskiトポロジを使用すると、この関数は連続します(つまり、{false}はオープンセットですが、{true}はそうではありません)。


答えてくれてありがとう。連続的ではない=>計算可能ではないことを理解していません。あなたが私が知らない、または覚えていない(おそらく広く知られている)定理を使用したと推測しています。このステップについて詳しく教えてください。
dbarbosa

1
「計算可能=>連続」は民俗定理のようです。元の引用は見つかりません。無限オブジェクトの計算理論とトポロジへの接続は、Brattkaによるこれらのコーススライド(math.uni.wroc.pl/~pkowa/slides/brattka.pdf)で非常によく説明されています(IMO )。スライドの命題2は、自然のシーケンスに対する計算可能な関数はすべて連続的であると述べています。定理12と組み合わせると、他のタイプの関数の結果が得られます。
マックス

6

与えられた計算可能な数がゼロに等しいかどうかは決定できません。

(つまり、合理的な近似オラクルは、試したすべてのεに対して0を返しますか?十分に小さいεを与えていないだけかもしれません。)

したがって、-½と+½の間の計算可能な数値が整数であるかどうかは決定できません。


2

計算可能な関数は、連続的な関数よりも強力です。つまり、情報トポロジでは、計算可能な関数はすべて連続である必要があります。

F:R{Yes,No}

F(r)={YESrQNOo.w.

計算可能です。

書いたものと同様に、実数はブラックボックスで与えられ、実数ブラックボックス仮定しましょうrk2nr[k2n,k+12n]n

その場合、関数は連続的ではないため、計算できません。

M0n[12n,12n]MMmM[12m,12m], i.e. M doesn't have enough information to correctly solve the problem. If M answers NO then the answer is incorrect. If it answers YES then we can consider running M on any irrational number in the interval [12m,12m] and M will incorrectly answer YES since it will get exactly the same information from the black-box. Therefore M cannot solve the problem correctly.

The proof that any computable function needs to be continuous is similar.

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.