두 개의 카운터 오토마타에 대한 추측


19

다음과 같은 추측을 증명하거나 반증하고 싶습니다.

추측 : 2 카운트 오토마타 (2CA)는 다음 언어를 결정할 수 없습니다.

L={n 의 원과 이진 표현 짝수 또는 홀수 길이의 길이가 모두n}

2CA는 이진 표현의 길이가 짝수인지 홀수인지를 쉽게 확인할 수 있습니다 (2로 나누고 각 나누기 후에 "짝수 길이"플래그를 업데이트하기 만하면됩니다). 같은 방식으로 삼항 표현이 짝수 또는 홀수 길이를 갖는지 확인할 수 있습니다 (단, 3으로 계속 나누고 각 나누기 후에 "짝수 길이"플래그를 업데이트하십시오).

그러나 이들 중 하나를 계산하려면 입력을 파괴 해야하며 다른 하나를 계산하기 위해 입력을 복구 할 수 없습니다. 따라서 을 결정할 방법이없는 것 같습니다 .L

추측을 증명하는 데 사용할 수있는 기술을 알고 있습니까?
아니면 을 결정하는 2CA를 추측하는 추측을 반증 할 수 있습니까? L

나는 2CA가 결정할 수 없다는{n2n1} 것을 증명하기 위해 Ibarra와 같은 접근법을 시도했지만 올바른 방법은 아닌 것 같습니다.

참고 : 단순화를 위해 2CA는 처음에 입력과 다음 명령어 세트를 포함하는 하나의 변수 를 가진 프로그램과 같습니다.c

  • INC : 변수에 하나를 추가하십시오.
  • DEC : (0보다 큰 경우에만).c
  • JZ lab c l a b : 가 0 인 경우 label 그렇지 않으면 계속합니다.clab
  • MULK c K : 에 원가 곱하고 ;cK
  • DIVK[,lab0,lab1,...,labK1] : 를 상수 나누고 몫을 저장합니다 ( ); 나머지 부분에 따라 다른 레이블로 뛸 수 있습니다 ( ).cKcc=c/KcmodK
  • GOTO lab : 무조건 점프;
  • HALT Accept | Reject : 중지 및 수락 또는 중지 및 거부

예를 들어 n 의 이진 표현 n길이가 짝수 인지 확인하는 프로그램 은 다음과 같습니다.

   loop: JZ even   // test if n = 0
         DIV 2
         JZ odd    // test if n = 0
         DIV 2
         GOTO loop
   even: HALT Accept
    odd: HALT Reject

(동등한 2CA를 구축 할 수 있습니다)


2
나는 불가능 교정가는 방법을 알고 있지만하지 않는 { |의 삼항 표현 홀수 길이가} 경우가 있습니다 귀하의 의견은 소인수 알려진 때마다 n을 여기 (당신의 지수를 처리 할 수 있기 때문에, 풀 수 )는 원하는 수의 카운터 (추가 프라임으로 시뮬레이션)가있는 시뮬레이션 된 자동 마운팅에서 카운터로 표시되므로 Turing-complete입니다. 2n2n
Ørjan Johansen 님이

2
"코드"를 이메일로 보냈 으며 다른 사람이보고있는 경우를 대비 하여 내 웹 사이트 에도 올려 놓았습니다 .
Ørjan Johansen

1
@joro 내가 설명 한 방법에는 엄격한 제한이 있습니다. 입력의 소수 요소를 유한하게 다룰 수 있습니다 (나머지가 모두 0인지 아닌지를 테스트하는 경우 제외). 문제는 일반적인 문제에서 모든 소수 의 지수입니다. 요인 수. 당신은 실제로 계산할 수 있습니다 중 하나를 당신의 또는 패리티까지,하지만 내가 아는 한,에 일반적인 입력을 비교하는 방법이 없습니다 또는 그래서, 그 과정에서 그것을 파괴하지 않고 당신은 테스트 할 수 없습니다 다른 후 하나. 제 직감은 2CA로는 일반적인 문제를 해결할 수 없다는 것입니다. km2k3m
Ørjan Johansen

1
@ ØrjanJohansen : vzn에 동의합니다. 원한다면 제한된 간단한 문제에 대한 해결책으로 답변을 게시 할 수 있습니다 (현상금 :-). 원래 문제에 빨리 들어가고 자하는 사람들에게 도움이 될 수 있습니다. 또한 Ibarra의 접근 방식이 일반적인 문제에 실패한 이유와 더 간단한 버전의 솔루션이 일반적인 문제에 대해 실패한 이유를 간단히 확인할 수 있습니다 (주석에 주석을 복사하여 붙여 넣기).
Marzio De Biasi

1
고마워! 이 문제에 대한 모든 관심 / 활동을 보는 것은 매우 드물다. 몇 가지 더 의견 / 질문 이 문제에
vzn

답변:


11

그래서 사람들은 단순화 된 버전의 문제 만 해결 하더라도이 게시물을 게시하도록 잔소리합니다. 좋아, 그럼 :)

마지막에, 나는 Ibarra와 Trân의 논문에서 배운 것의 일부와 방법이 우리의 일반적인 문제에 대해 왜 분해 되는지 , 그러나 여전히 유용한 정보를 제공 할 것입니다.

먼저, 우리는 세트를 결정하려는 간단한 문제를 살펴 보겠습니다.

L={2n 원계 그리고 이진 표현 짝수 또는 홀수 길이의 길이가 모두2n}

참고이 얼마나 보다는 원래의 문제에있다. 입력 된 숫자 인 경우 특히 하지 2의 거듭 제곱, 우리는 어떤베이스 길이를 계산하는 시도보다는 그것을 거부합니다.2nn

원래 숫자가 경우 를 제외한 모든 대해 확인하면됩니다. 그것들은 모두 입니다.2v23v35v57v7...viv20

이것은 우리가 곱셈 / 나눗셈 오토 마톤의 단일 변수의 주요 인수 분해 지수에서 카운터 오토 마톤 의 상태를 인코딩하는 기존 방법 (Minsky I의 가정) 주위에 래퍼를 사용하여 단순화 된 문제를 해결할 수있게합니다 . 위의 OP에서 언급했듯이 2 카운터 오토 마톤과 거의 같습니다.k

먼저, 랩을하려면 카운터 오토 마톤이 필요합니다 . , 및 라는 3 개의 카운터를 사용합니다 .kv2v3v5

오토 마톤은 초기 카운터 값 IFF 받아들이는 원과의 이진 표현이 짝수 또는 홀수 길이의 길이가 양쪽 모두 및 제로가됩니다. 수락하면 먼저 모든 카운터를 0으로 만듭니다.2v2v3v5

다음은 OP와 유사한 어셈블리 형식의 코드입니다 (명령에 변수를 추가했습니다). 나는 그것을 테스트 할 것이 없기 때문에 실제로 테스트하지는 않았지만 이것을 공식적인 것으로 생각합니다 .3 카운터 오토마타는 Turing-complete로 잘 알려져 있으며 그들의 기능 중 하나의 계산 가능한 기능을 구성 할 수 있습니다. 초기 값.

// Check that v3 and v5 are both zero.
                JZ v3, check5
                GOTO reject
check5:         JZ v5, init3
                GOTO reject
// Decrement v2 until it is zero, constructing 2^n in the process.  If 2^n
// was even, we will then pass to even2 with 2^n in v3; If 2^n was odd, we
// will pass to odd2 with 2^n in v5.
init3:          INC v3          // Set v3 to 1 = 2^0 to start with.
even1:          // We have decremented v2 an even number of times so far.
                // 2^decremented amount is in v3.
                JZ v2, odd2
                DEC v2
dup3to5:        JZ v3, odd1
                DEC v3
                INC v5
                INC v5
                GOTO dup3to5
odd1:           // We have decremented v2 an odd number of times so far.
                // 2^decremented amount is in v5.
                JZ v2, even2
                DEC v2
dup5to3:        JZ v5, even1
                DEC v5
                INC v3
                INC v3
                GOTO dup5to3
// The second part checks the ternary length of 2^n, which starts out in v3
// or v5 according to whether the *binary* length of 2^n (i.e. n+1) was odd
// or even.
odd2:           // v3 needs to have odd ternary length to accept.
                // It is simplest to consider 0 to have even length in both
                // binary and ternary.  This works out as long as we're
                // consistent.
                JZ v3, reject
trisect3to5:    DEC v3
                DEC v3
                JZ v3, even2
                DEC v3
                INC v5
                GOTO trisect3to5
even2:          // v5 needs to have even ternary length to accept
                JZ v5, accept
trisect5to3:    DEC v5
                DEC v5
                JZ v5, odd2
                DEC v5
                INC v3
                GOTO trisect5to3
accept:         HALT Accept
reject:         HALT Reject

다음 단계는 단일 변수 오토 마톤의 지수에서 위의 내용을 다시 인코딩하는 것입니다. 결과가 꽤 길기 때문에 일반적인 방법을 설명 할 것이지만 정식 버전 (약간 "현장에서 최적화")이 내 웹 사이트에 있습니다.

                JZ vp, label
                DEC vp
next:           ...

(기본적으로 p로 나눈 다음 나누기가 균일하지 않은 경우 정리를 취소하여 취소) :

                DIV p, next, ..., newlabel.fp-1
newlabel.f1:    MUL p
                GOTO newlabel.i1
...
newlabel.fp-1:  MUL p
                INC
newlabel.ip-2:  INC
...
newlabel.i1:    INC
                GOTO label
next:           ...

INC vp됩니다 MUL p. 개인 JZDEC결합 된 양식으로 먼저 변경할 수 있습니다. GOTO label그리고 HALT Reject변하지 않습니다.

HALT Accept우리가 숫자에는 주요 요소가 없는지 확인해야한다는 우리의 경우에 우리는 아직도 할 일 최종 점검이를 제외하고 변경되지 않은 것 , 다른 우리, 특히 3 카운터 자동 장치 제로부터 2, 3, 5 카운터 그 이상을 수락 할 때 사용하는 것은 간단합니다. 최종 변수가 1인지 테스트하면 코드로 건너 뛸 수 있습니다.

                DEC     // BTW it cannot be zero before this.
                JZ accept
                HALT Reject
accept:         HALT Accept

내 웹 사이트의 코드 에는 숫자가 0이 아니라는 초기 검사가 있습니다 .v3, v5 0 검사와 중복됩니다.

앞에서 언급했듯이 위의 방법은 단순화 된 문제에 효과적이지만 일반적으로 문제가 발생할 가능성 은 없습니다 . 일반적인 문제에서 모든 소수의 정확한 값이 일반적인 크기를 결정하기 위해 계산하므로 길이는 어느 것입니까? 다양한 기지에 있습니다. 이것은 다음을 의미합니다.

  • 카운터에 사용할 "무료"프라임은 없습니다.
  • 우리가해도 카운터에 대한 무료 소수를 가지고, 우리는 정말 모든 지수 값 무한히 많은 소수에서 필요한 정보를 추출 할 수있는 방법이 없습니다 문제입니다.

따라서 Ibarra와 Trân ( 무료 다운로드 버전 )이 링크 한 논문 에서 일반적인 방법의 요지에 대한 설명으로 2CA 특정 문제 해결할 수 없음 을 증명하는 방법과 우리의 문제 어떻게 성가 신지에 대해 설명하겠습니다. 케이스.

먼저, 2CA는 모든 "CA"를 "정상적인 형태"로 수정합니다. 두 카운터는 "상"으로 바뀌면서 하나만 증가하고 다른 하나는 0에 도달 할 때까지 감소합니다. 국가의 수는 이 정상화 자동 장치는 추정에 중요한 역할을의.s

그런 다음이 오토 마톤을 분석하여 동작이 연결된 특정 숫자의 산술 시퀀스를 구성 할 수 있다고 결론을 내립니다. 정확하게하기 위해 (이 중 일부는 이론으로 언급되어 있지 않지만, 두 가지 주요 예 모두에 대한 증거로 암시되어 있음) :

  1. 다수의 X는 사이즈없이 오토 마톤에 의해 수락되면 위상의 시작에서 제로 카운터 어느 것 다음 존재 정수 이되도록 모든 숫자 , 이 허용됩니다.vixi sD>0x+nDn0
  2. 세트 에 각 에 대해 허용되는 숫자 가 포함되어 있다면, 와 같은 위상 가 있으면 및 정수를 찾을 수 있습니다 와 같은Xs2+1xXivixsp,rXK1,K2

    • 모든 정수 에 대해 및 가 모두 자동 장치에 의해 수락되거나 거부됩니다.n0p+nK1r+nK2

(생각 :

  • 그들은 필요 를 위해 하지만이 실제로 필요하다고 생각합니다. 실제로 그들은 받아 들여진다.x>sxX
  • 거부가 비 종료보다는 명시 적으로 중단되는 한 대부분의 경우 거부 된 숫자를 유지해야합니다 .)

그들 자신의 예를 위해 그들은 또한 에는 주요 인자 가 없다는 사실을 자주 사용합니다 . 불가능을 증명하기 위해, 그들은 그러한 산술적 순서가 존재할 수 없다는 것을 보여줌으로써 모순을 이끌어냅니다.D,K1,K2>s

우리의 문제에서, 이것으로부터 모순을 얻는 것은 두 번째 경우로 분류됩니다. 우리가있는 경우 , 것이 큰 충분히 사이의 수 및 하나로 나누어 없다 또는 다음과 같은 사이의 2의 거듭 제곱 또는 3가 없을 것 과 이므로 둘 다 수락되거나 거부됩니다.K1=K2=6kkpr2k3kp+6knq+6kn

2와 3의 거듭 제곱은 대부분 점점 더 멀어 지므로 점 1은 여전히 ​​불가능한 것으로 보입니다. 그리고 (나는 @MarzioDeBiasi에게 인수를 이메일로 보냈다) 인 경우 불가능한 두 번째 사례를 보여줄 수 있다고 생각 합니다. 아마도 누군가가이 정보를 사용하여 오토 마톤의 형태를 더욱 제한하고 결국 그와 모순을 이끌어 낼 수있을 것입니다.K1K2


1
아주 좋고 명확한 답변!
Marzio De Biasi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.