계산 가능한 숫자가 합리적인지 또는 정수인지 테스트 할 수 있습니까?


18

계산 가능한 숫자가 합리적인지 정수인지 알고리즘 적으로 테스트 할 수 있습니까? 즉, 구현 계산 가능한 숫자는 기능을 제공하는 라이브러리 가능할 것이다 isIntegerisRational?

나는 그것이 불가능하다는 것을 추측하고 있으며, 두 숫자가 같은지 테스트 할 수는 없지만 그것을 증명하는 방법을 알지 못한다는 사실과 관련이 있습니다.

편집합니다 계산 가능한 수는 x 함수에 의해 주어진다 fx(ϵ) 의 합리적인 근사치 반환 할 수 x 정밀과 ϵ : ϵ > 0에|xfx(ϵ)|ϵ 대해 ϵ . 그러한 기능이 주어지면 x Q 또는 x Z 인지 테스트 할 수 있습니까?ϵ>0xQxZ

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
계산 가능한 숫자는 어떻게 제공됩니까?
Tsuyoshi Ito

10
숫자가 제공되는 방법은 물론 관련이 있습니다. 어리석은 예로서, 입력이 숫자가 정수인지 아닌지에 플래그를 포함한다면, 입력이 정수인지 아닌지를 결정하는 것은 사소한 것입니다.
Ito Tsuyoshi


3
(1)“이것이 정수라는 것을 어떻게 알 수 있습니까?”왜 신경 써야합니까? 조작에 대한 요구 사항에 대해서는 아무 것도 말하지 않았습니다. (2)“지금까지 두 답변을 보면 구현에 대해 아무 것도 언급하지 않습니다.”나는 여기서“구현”이 의미하는 바 또는이 문장이 내 의견과 관련이있는 이유를 모른다.
Ito Tsuyoshi

16
내 대답 이이 토론을 묻기를 바랍니다. 쓰요시, 당신은 착각, 그것은 어떤 연산이 계산 가능한지 관련이 있습니다. 우리는 진공 상태에서 실수를 구현하지 않지만 조작 하기 위해 . 당신에 따르면, 우리는 모든 것을 구현하기 위해 단위 유형을 사용할 수 있습니다. 예, 우리는 할 수 있었다, 그러나 일부 작업은 계산할 수 없을 것이고, 즉 정확하게 우리가 표현을 판단하는 기준.
Andrej Bauer

답변:


32

실수를 "표현"하거나 "구현"한다는 것이 무엇을 의미하는지 혼동하기 쉽습니다. 실제로, 우리는 표현이 논쟁적인 의견에 대한 토론을 목격하고 있습니다. 먼저이 문제를 해결하겠습니다.

구현이 올바른지 어떻게 알 수 있습니까?

컴퓨터에서 사물을 표현하는 방법을 설명하는 이론은 실현 가능성 입니다. 기본 아이디어는 세트가 주어지면 데이터 유형 τ를 선택하고 모든 x X 마다 그것을 실현 하는 τ 유형의 값 세트 를 선택 한다는 것입니다. 우리는 쓰기 X XV는 실현이하는 값 x는 . 예를 들어의 합리적인 구현 (I없이 좋은 이유에 대한 하스켈을 사용하여야한다) N은 데이터 유형이 될 수있는 곳 V K NVXτxXτvxXvxNIntegervkNv는 숫자 평가됩니다 (특히 , 자연수를 나타내지 않으며 분기 프로그램도 나타내지 않음). 그러나 일부 조커는 우리가 걸을 수 있고 우리 가 n 42에 대해 T r u e42 NF a l s en N으로 자연수를 표현할 것을 제안 할 수 있습니다 . 왜 이것이 잘못 되었습니까? 우리는 기준이 필요합니다 .k¯-42BoolTrue42NFalsenNn42

"조커 번호"의 경우 쉬운 관찰은 추가를 구현할 수 없다는 것입니다. 표시된 두 개의 숫자가 있다고 가정 합니다. 당신은 그들의 합계를 실현할 수 있습니까? 글쎄, 그것은 합이 42인지에 달려 있지만 말할 수는 없습니다. 덧셈은 "자연수의 본질적인 부분"이기 때문에 용납 할 수 없습니다. 다시 말해 구현은 집합이 아니라 구조 에 관한 것입니다 . 즉, 관련 구조를 구현할 수있는 방식으로 집합을 나타내야합니다. 이것을 강조하겠습니다 :False

베어 세트가 아닌 구조를 구현합니다. 따라서 구현이 정확하려면 전체 구조를 작업 및 모든 공리와 함께 구현할 수 있어야합니다.

이 원칙을 준수하지 않으면 정확성에 대한 대체 수학적 기준 을 제안해야 합니다. 나도 몰라

예 : 자연수 표현

자연수의 경우 관련 구조는 Peano axioms로 설명되며 구현해야 할 중요한 공리는 유도입니다 (그러나 , 후속, +× ). 실현 가능성을 사용하여 유도 구현이 수행하는 작업을 계산할 수 있습니다. 그것은 맵으로 밝혀졌습니다 ( 자연수를 나타내는 아직 알려지지 않은 데이터 유형이 있습니다)0+×nat

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

만족 induction x f zero = x하고 induction x f (succ n) = f n (induction x f n). 이 모든 것이 실현 가능성에서 나옵니다. 우리는 기준을 가지고있다 : 자연수의 구현은 Peano 공리의 구현을 허용 할 때 정확하다. functor 의 초기 대수로 숫자의 특성을 사용하면 비슷한 결과를 얻을 수 있습니다 .X1+X

실수의 올바른 구현

실수와 당면한 문제에주의를 기울 이겠습니다. 첫번째 질문은 "실수의 관련 구조는 무엇입니까?"입니다. 답은 Archimedean Cauchy complete ordered field 입니다. 이것이 "실수"의 확립 된 의미입니다. 당신은 그것을 바꿀 수 없으며, 그것은 당신을 위해 다른 사람들에 의해 수정되었습니다 (우리의 경우 대안 Dedekind reals는 우리가 여기에서 고려하고있는 Cauchy reals와 동형 인 것으로 판명되었습니다). "추가 구현에 관심이 없습니다"또는 "주문에 관심이 없습니다"라고 말할 수 없습니다. 그렇게하면 "실제 숫자"라고 부르지 말고 "선형 순서를 잊어 버린 실수"와 같은 것이어야합니다.

모든 세부 사항에 대해서는 다루지 않겠습니다. 그러나 구조의 다양한 부분이 실제 작업에서 어떻게 다양한 작업을 수행하는지 설명하겠습니다.

  • 아르키메데스 공리에 대한 계산됩니다 합리적 실수의 근사치를
  • 필드 구조는 일반적인 산술 연산을 제공합니다
  • 선형 순서는 x < y 테스트를위한 반 결정 가능한 절차를 제공합니다.x<y
  • lim : (nat -> real) -> real(xn)n m , n|xnxm|2min(n,m)m,n

우리가 얻지 못하는 것은 평등을위한 테스트 함수입니다. 그 요청 실수에 대한 공리 아무것도 없다 decidable 수는. (반면, Peano 공리는 자연수를 결정할 수 있음을 의미 하며 재미있는 운동으로 만 사용하여 구현함으로써 증명할 수 있습니다 ).=eq : nat -> nat -> Boolinduction

인류가 사용하는 실수의 일반적인 십진수 표현은 우리가 덧셈을 구현할 수 없기 때문에 나쁘다는 사실입니다. 무한 가수가있는 부동 소수점도 실패합니다 (운동 : 왜?). 그러나 작동하는 것은 부호있는 숫자 표현, 즉 우리가 양수뿐만 아니라 음수를 허용하는 것입니다. 또는 위에서 언급 한 것처럼 빠른 Cauchy 테스트를 만족하는 일련의 합리적인 시퀀스를 사용할 수 있습니다.

쓰요시 표현은 무언가를 구현하지만 은 구현하지 않습니다R

다음과 같은 실수 표현을 고려해 봅시다. 실수 는 쌍 로 표현됩니다. 여기서 은 수렴하는 빠른 Cauchy 시퀀스 이고 는 가 정수 인지 여부를 나타내는 부울 입니다. 이것이 실수를 나타내려면 덧셈을 구현해야하지만 부울 플래그를 계산할 수는 없습니다. 따라서 이것은 실재를 나타내는 것이 아닙니다 . 그러나 여전히 무언가, 즉 실제 의 하위 세트를 나타냅니다.( q , b ) ( q n ) n x b x Z( RZ ) Z( RZ ) Rx(q,b)(qn)nxbxZ(RZ). 실제로, 실현 가능성의 해석에 따라 노동 조합은 우리가에있는 노동 조합의 일부를 나타내는 플래그로 구현되어있다. 그런데, 있다 하지 동일 당신이 중간에서 제외 믿지 않는 구현하기 때문에이 토론에 매우 관련이 될 수없는,. 우리는 컴퓨터 가 직관적으로 일 을 하도록 강요받습니다 .Z(RZ)R

실수가 정수인지 테스트 할 수 없습니다

마지막으로 질문에 대한 답변을 드리겠습니다. 우리는 이제 현실의 수용 가능한 표현이 빠른 코시의 합리적 시퀀스에 의한 것이라는 것을 알고 있습니다. (중요한 정리에 따르면 수용 할 수있는 실수의 두 가지 표현은 실제로 계산 가능한 동형이라고합니다.)

정리 : 실수가 정수인지 테스트하는 것은 결정할 수 없습니다.

증명. 실수가 정수인지 테스트 할 수 있다고 가정합니다 (물론, 실제는 빠른 Cauchy 시퀀스에 의해 실현됩니다). 원하는 경우 훨씬 더 일반적인 정리를 증명할 수있는 아이디어는 정수로 수렴하는 비정 수 의 빠른 Cauchy 시퀀스 을 구성하는 것입니다. 만 사용하면 쉽습니다 . 다음으로 Halting 문제를 다음과 같이 해결하십시오. Turing machine 주어지면, 새 시퀀스 을 정의 즉, 시퀀스 등 새로운 시퀀스 모양 만큼X N = 2 - N T ( Y N ) N Y N = { X N 경우  T는  내 정지되지 않은  N  단계 X m 경우  T는  스텝 중지  m  과  m N ( X의 N ) N T의 X m T m T z = lim n y n z 0(xn)nxn=2nT(yn)n

yn={xnif T has not stopped within n stepsxmif T stopped in step m and mn
(xn)nT실행,하지만 그것은에 "붙어"도착 경우 가 정지 단계에서 . 매우 중요한 새로운 순서는 또한 빠른 코시 순서입니다 (우리는인지 모르고 증명할 수 가 정지). 따라서 실수의 표현이 정확하기 때문에 한계 계산할 수 있습니다 . 가 정수 인지 테스트합니다 . 그렇다면 이어야하며 이는 가 영원히 실행될 경우에만 발생합니다 . 그렇지 않으면 는 정수가 아니므로 가 중지되어야합니다. QED.xmTmTz=limnynz0z TTzT

연습 : 위의 증거를 수정하여 유리수를 테스트 할 수 없음을 보여줍니다. 그런 다음 우리가 사소한 것을 테스트 할 수 없다는 것을 보여 주도록 조정하십시오 (조금 더 어렵습니다).

때때로 사람들은이 모든 테스트 사업에 대해 혼란스러워합니다. 그들은 실수가 정수인지 테스트 할 수 없다는 것을 증명했다고 생각 합니다. 그러나 42는 실수이고 정수인지를 알 수 있습니다. 사실, 어떤 특정 우리가 올 실제, , , 등, 우리가 완벽하게 그들이 정수 여부를 알 수 있습니다. 정확하게, 우리가 있기 때문에 말할 수있는 우리는 추가 정보가 이러한 실수는 시퀀스로 우리에게 주어진 것이 아니라 우리가 츠요시 비트를 계산할 수있는 상징적 인 표현으로하지 않습니다. 우리가 현실에 대해 가지고있는 유일한 정보는 그것에 수렴하는 일련의 합리적인 근사치입니다.88 ln 89 e π sin1188ln89 nneπ163되지 순서를 나타내는 상징적 인 표현되지만 출력하는 블랙 박스 의미 입력 번째 기간에 ) 우리는 단지 기계 무력한로됩니다.nn

이 이야기의 교훈

어떤 종류의 작업을 수행할지 알지 못한다면 집합 구현에 대해 이야기하는 것은 의미가 없습니다.


16
대답이 아내라면 한 번만 대답 할 수있었습니다. 또는 적어도 다음 답변을 작성하기 전에 이전 답변을 삭제해야합니다.
Andrej Bauer

5
@Max : 이런 종류의 첫 번째 정리는 Kreisel, Lacombe 및 Shoenfield에 의해 주어졌습니다 (KLS 정리 참조). 독립적으로 Tsteitin은 KLS를 일반화하고 "모든 계산 가능한 맵은 계산적으로 연속적"이라는 형식의 정리를 제공했습니다.
Andrej Bauer

6
교과서를 작성해야합니다 (Google google google). 좋아, 재직 했어 해봐!
Jeffε

10
@ 쓰요시 : 질문은 "실수"라는 구절을 자격없이 사용했습니다. 실수의 구조는 표준입니다. 다른 구조는 자유롭게 고려할 수 있지만 표준 용어를 잘못 해석 할 수는 없습니다.
Andrej Bauer

21
엄밀히 말하면 "실제"라는 단어는 사용되지 않았습니다. 그러나 당신은 실수의 정의에 대해 착각합니다. 또는 나는 이런 식으로 넣을 것입니다 : 실수는 어떤 구조가 뒤따를 수밖에없는 특정 세트라고 생각하는 것은 나쁜 수학 입니다. 그룹, 고리, 토폴로지 공간 등을 구조와 관련하여 정의하는 것처럼, 보편적 인 속성 (자연수는 초기 반고리, 정수는 초기 고리, 합리적 초기 필드, 실수)으로 특수 객체를 정의 해야 합니다. .....).
Andrej Bauer

10

나는 이것이 결정 불가능하다고 생각하는 경향이 있습니다.

를 계산 가능한 비합리 수라고 하자 . TM 고려하십시오 . 당신은 실행하는 기능을 구성 할 수 있습니다 에 , 병렬로 계산에 성장 정밀. 경우 정지하고, 그 연산을 중지 , 그렇지 않으면 계속된다.M M ϵ x M xxMMϵxMx

이 함수가 유리수를 계산하는지 결정하는 것은 정지 문제와 같습니다.


Mx

쓰요시가 지적했듯이 대답은 표현과 계산 모델에 달려 있습니다. 당신의 대답은 입력을 TM 계산에 의해 주어진 계산 가능한 실수로 가져 가면 평등을 결정할 수 없다는 것입니다. 이것은 정확하지만 실제로 사용되는 모델에 가깝지는 않습니다.
Kaveh

2
MMMM

10

실수가 0 인 경향이있는 알려진 계산 함수에 의해 제한되는 오차를 갖는 합리적인 근사치의 시퀀스로 주어진다고 가정합니다 (이러한 근사는 동일하며 실제의 일반적인 토폴로지에 해당함).

계산 가능한 기능은 연속적입니다. IsRational과 IsInteger는 연속적이지 않으므로 계산할 수 없습니다.

IsInteger는 계산 가능합니다. 입력이 정수가 아닌 경우 결국 "false"를 출력하지만 입력이 정수이면 영원히 실행되는 프로 시저가 있습니다. 이 절차는 단순히 각 근사를보고 오류 범위 내에 정수가 있는지 확인합니다. 이 기능은 {true, false}에서 Sierpiński 토폴로지를 사용할 때 연속적입니다 (예 : {false}는 공개 세트이지만 {true}는 아닙니다).


답변 해주셔서 감사합니다. 나는 연속적이지 않다 => 계산 불가능하다는 것을 이해하지 못한다. 나는 당신이 내가 알지 못하거나 기억하지 못하는 (아마도 널리 알려진) 정리를 사용했다고 추측하고있다. 이 단계에 대한 자세한 내용을 알려주시겠습니까?
dbarbosa

1
"계산 가능 => 연속"은 민속 정리 인 것 같습니다. 원래 인용을 찾을 수 없습니다. 무한 객체에 대한 계산 이론과 토폴로지 연결은 Brattka ( math.uni.wroc.pl/~pkowa/slides/brattka.pdf ) 의이 과정 슬라이드에서 상당히 잘 설명되어 있습니다 (IMO ). 슬라이드의 발의안 제 2 호는 일련의 자연계에 대한 모든 계산 가능한 기능이 연속적이라고 기술하고 있습니다. 정리 12와 결합하여 다른 유형의 함수에 대한 결과를 얻습니다.
Max

6

주어진 계산 가능한 숫자가 0 인지 여부를 결정할 수 없습니다 .

(따라서 합리적 근사 oracle은 시도한 모든 ε에 대해 0을 반환합니까?

따라서 -½과 + ½ 사이의 주어진 계산 가능한 숫자가 정수인지 여부를 결정할 수 없습니다.


2

계산 가능한 기능은 연속적인 기능보다 강력합니다. 즉, 계산 가능한 기능은 정보 토폴로지에서 연속적이어야합니다.

F:R{Yes,No}

F(r)={YESrQNOo.w.

계산 가능합니다.

작성한 것과 유사하게 실수는 블랙 박스로 표시되고 실수 블랙 박스 있다고 가정합시다.rk2nr[k2n,k+12n]n

그러면 함수가 연속적이지 않으므로 계산할 수 없습니다.

M0n[12n,12n]MMmM[12m,12m]MMNOYESM[12m,12m]MYESM

계산 가능한 기능이 연속적이어야한다는 증거는 비슷합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.