오른쪽 및 왼쪽 연관 제품이 동일한 단어


9

Hopcroft와 Ullman 의 책을 사용하여 비 결정적 오토마타를 연구하기 시작했습니다 . 매우 흥미로운 문제에 갇혀 있습니다.

다음 표에 따라 곱하여 왼쪽에서 오른쪽으로 오른쪽에서 왼쪽으로 평가할 때 동일한 값을 갖는 모든 문자열을 허용하는 비 결정적 유한 자동 오토 마톤을 제공하십시오.

×abcaaacbcabcbca

우리는 문자열 그래서 만약 , 왼쪽에서 오른쪽으로 제품을 것입니다 및 오른쪽에서 왼쪽으로 제품이abc
(a×b)×c=a×c=c
a×(b×c)=a×b=a

따라서 는 오토마타에 적합하지 않아야합니다. 나에게 어떤 문자열 또는 또는 는 수용 가능한 문자열이라는 것이 명백 합니다 (그들의 오른쪽 및 왼쪽 평가는 동일한 부분 문자열에서 작동합니다). 왼쪽에서 오른쪽으로 평가를 설명하는 NFA를 제공하는 것은 쉽지만 문제는 기계가 오른쪽에서 왼쪽으로 평가 를 계산하려고 하면 문자열의 길이를 알아야한다고 생각합니다 (따라서 무한한 메모리가 필요합니다).abcaabbcc

그렇다면 비 결정적 오토마타가 어떻게 왼쪽에서 오른쪽 평가와 비교하기 위해 오른쪽에서 왼쪽으로 평가할 수 있습니까?

답변:


6

여기서 첫 번째 트릭은 곱셈 테이블을 곱셈 테이블 의 문자를 나타내는 각 상태 의 오토 마톤 의 전이 테이블로 생각 하지만 아직 수용에 대해 걱정하지는 않습니다. 따라서 테이블의 왼쪽과 본문에있는 글자는 실제로 상태입니다 로 쓰는 것이 더 정확할 것입니다. 상단의 문자가 입력입니다.Aqa,qb,qc

그런 다음 를 바꿈으로써 역 곱셈 을 위한 오토 마톤 ( 전치의 경우 " ")를 구성하십시오 .ATTA

ATabcaacbbaacccba

따라서 는 상태 로 이동 하고 마찬가지로 는 상태 의 로 이동 합니다.A(abc)cAT(cba)aAT

그러나 는 사용자가 오른쪽에서 왼쪽으로 가고 있다고 가정 하지만 여전히 왼쪽에서 오른쪽으로 가고 싶습니다. 따라서 두 번째 요령은 모든 화살표 를 반대로하여 오토 마톤뒤집는 것입니다 (이는 곱셈이 아니라 우리를 다시 시작하게 만들 것입니다). 이는 아래의 전환 표에 의해 주어진 비 결정적 오토 마톤 집니다. 닭이 긁는 것을 막기 위해 연결된 문자로 표시되는 부분 집합이 있으므로 는 실제로 입니다. (괜찮아요. 작동하는 것 같습니다).ATATRac{a,c}

ATRabcaabbcbcaccabababbcacbccacabcacabcabbcabcabcabcabc

이것을 라인 위에 3 개의 행만있는 비 결정적 오토 마톤 또는 8 개의 행이 모두있는 결정된 버전으로 해석 할 수 있습니다.

마지막으로, 문제를 해결하기 위해 기계는 원래의 제품 간 자동 장치입니다 및 입니다 두 오토마타의 교차 동작을 수행하기 위해 우리는 필요하지 않습니다 ( 어떤 더). 에는 과 같은 쌍인 상태가 있습니다 . 전환 기능은 와 독립적으로 실행합니다. 단일 시작 상태 은 input , input 등으로 이동합니다. AATRA×ATRATA×ATRa,acAATR1,1a,aab,bb

비 결정적 버전에서 허용되는 상태는 등입니다. 결정적 버전에서 승인 가능한 상태는 첫 번째 구성 요소가 과 같은 두 번째 구성 요소 세트의 인 쌍입니다. 또는 .a,aa,ab,bc

A×ATR그림과 같이 증강되고 결정된 은 상태이므로 자세히 작성하지 않으면 용서하십시오. 그러나 비 결정적 버전은 상태입니다.25=38+110=33+1


감사합니다. 비결정론과 오토마타의 "역전"에 대한 아이디어를 이해하는 데 도움이되었습니다. 나는 Hopcroft의 책을 사용 하여이 개념을 이해하는 데 어려움을 겪었습니다. Rigth는 Sipser의 책 "계산 이론 소개"를 사용하고 있습니다.
Mr. Ariel

입력 고려하십시오 . 로 이동 입력 후 다음에 입력 아래 , 그래서 허용되지 않고,이되어야 하는가? ba1,1b,bbc,aba
cemulate

8

() 경우 다음 일반 언어 인 의 언어로 이루어진 역방향 의 모든 단어의 , 정규이다. 이것을 운동으로 삼으십시오.LLRL

이것이 문제 해결에 어떻게 도움이됩니까? 하자 로 평가 모든 문자열로 구성되는 언어가 될 왼쪽에서 오른쪽으로 평가할 때. 관심있는 언어는 이것은 를 증명하는 방법을 알고 있다면 문제의 언어에 대한 NFA를 구성 할 수 있음을 보여줍니다 .La,Lb,Lca,b,c

(LaLaR)(LbLbR)(LcLcR).
()

실제로 증명 아이디어 를 사용하면 아마도 오토 마톤을 구성 할 수 있습니다. 이것을 고려해 봅시다. 특히,의를 위해 NFA를 구성 해보자 로 평가하는 모든 문자열의 언어 오른쪽에서 왼쪽으로 평가합니다.()LaRa

아이디어는 이것입니다. 첫 글자가 라고 가정합니다 . 그런 다음 나머지 문자열은 평가되어야합니다 ( 의미 하므로 ). 첫 글자가 때도 비슷한 추론이 적용됩니다 . 그러나 첫 번째 문자가 이면 나머지 문자는 또는 평가 되거나 널이 될 수 있습니다. NFA를 사용하면 추측 할 수 있으며 나중에 추측을 확인할 수 있습니다.bbbx=ax=bcaab

이 힌트는 문제를 생각하고 해결하기에 충분할 것입니다.


공식으로 증명할 수있는 좋은 방법입니다. 대안적인 "비결정론 적 추측 및 검증"아이디어에 관해서는, 일반적으로 증거에 대해서는 문제가 없지만 문제가 요청하는대로 실제로 수행하기는 매우 까다 롭습니다. 백엔드에서 문자열을 추적하는 방법과 같은 누락 된 세부 정보가 많이 있다고 생각합니다.
David Lewis

@David, 세부 사항은 의도적으로 누락되었습니다.
Yuval Filmus

@Yuval-그는 숙제라고 말하지 않았습니다. 여기 사람들을 믿습니다. 맞습니까? 나는 또한이 존재 증명이 상당히 큰 기계를 만들어 낼 것이라고 생각합니다. 아마도 필요한 것보다 훨씬 클 것입니다.
David Lewis

@DavidLewis : Gilles는 NFA가 실제로 너무 크지 않다는 것을 보여주는 더 완전한 대답을하였습니다. 비결정론이 당신을 위해 그렇게합니다. 그러나 해당 DFA는 매우 클 수 있습니다.
Raphael

@MohamedAbbas 아마도 확인하지 않을 것입니다.
유발 Filmus

6

귀엽다.

먼저 왼쪽에서 오른쪽으로 제품을 계산하는 오토 마톤을 만듭니다. 쉬운! 마다 전환 . 세 가지 상태가있다 세 가지 가능한 제품을 나타내는. 모든 대해 와 함께 네 번째 상태 로 시작하십시오 . 왼쪽에서 오른쪽으로 입력 단어의 경우에만 최종 상태는 입니다.xyzxy=z{a,b,c}11xxxxx

이제 오른쪽에서 왼쪽으로 제품을 계산하는 오토 마톤을 만들어 봅시다. 이것은 비 결정적입니다. 우리는 어떻게합니까? 단순함… 다른 방향으로 가려면 화살표와 제품 방향을 모두 뒤집으십시오 .

우리가 전에했다 어디 , 우리가 지금 가지고 : 단어를 왼쪽에서 오른쪽으로 소비하면 제품에서 오른쪽 요인으로 이동합니다. 즉, 입니다.xyxyxyxyxyyx

빈 단어를 위해 연결이 끊어진 노드 을 추가하십시오 . 모든 노드가 초기입니다.1

이제 두 경로를 함께 계산해야하므로 iff 및 . 네 가지 상태 를 초기 상태로하고 네 가지 상태 를 최종 상태로 . 이 결정적이지 않은 오토 마톤은 해당 제품이 왼쪽에서 오른쪽으로, 오른쪽에서 왼쪽으로의 제품이 인 경우 단어를 인식합니다 .(x1,x2)y(z1,z2)x1yz1x2yz2(1,x)(x,x)x


이 문제를 해결하는 데 약간의 문제가 있습니다. 당신은 확인하지 않아도 유한 상태 세트에 리드? IAC, "왼쪽에서 오른쪽으로 소비해야하기 때문에 오른쪽에서 왼쪽으로 곱해야하기 때문에"모든 것을 뒤집는 것 "만큼 간단하지는 않습니다. xyyx
David Lewis

@DavidLewis 상태 세트는 유한하기 때문에 . 곱셈 순서를 반대로 바꿨습니다 (더 많은 오타 제외). {overleftarrowa,b,b,1}
질 'SO- 악마 그만'

5

귀하의 주요 문제는 비결정론을 사용하는 것 같습니다. 그에 대해 자세히 설명하겠습니다.

다른 사람들이 사용하는 기본 아이디어는 비 결정적 기계가 최종 결과를 추측 할 수 있다는 것입니다.

작은 예제 와 Gilles의 구성 아이디어를 고려해 봅시다 . 오른쪽에서 왼쪽으로 제품을 "계산"하는 오토 마톤 은 결과를 처음에 추측 하여 확인 합니다. 따라서 세 가지 가능성이 있습니다.abc

  • 추측 : 제 symol이므로 , RL의 생성물 틀림 또는 . aabcab
    • 추측 : 두 번째 기호이므로 , 마지막 심볼이되어 있어야합니다 . abb
      • (추측 : 그것은이다 , 그래서 허용하지 않습니다.bc
    • 추측 : 두 번째 기호가 이므로 마지막 기호는 여야합니다 . bbc
      • (추정 :) 그것은 실제로 이므로 받아들입니다.cc
  • 추측 : 첫 번째 symol은 이므로 불가능합니다.ba
  • 추측 : 첫 번째 symol이기 때문에 의 RL-제품 되어 있어야합니다cabcc
    • (추측 :) 번째 심볼이므로 마지막 심볼 틀림cba
      • (추측 : 그것은이다 , 그래서 허용하지 않습니다.ac

당신이 볼 수 있듯이, NFA는 추측 가능한 모든 계산 확인 할 수있는 상향식 (bottom-up)을 . 허용되는 언어는 하나 이상의 실행에서 허용 되는 문자열 세트로 정의되므로 입력에서 허용 되지 않는 모든 실행은 무시됩니다. NFA는 "항상 맞습니다"

이제이 NFA는 끝까지 첫 번째 선택을 기억하기 쉽습니다. 수락하면 기억 된 기호를 병렬로 얻은 lr- 제품 (결정적)과 비교할 수 있습니다 (언어 교차점이 NFA와 관련되는 방식이 Ullman / Hopcroft 및 기타 기본 교과서에서 확실히 다루어지는 방법).


문자열을 추측하는 아이디어는 나에게 이상하지만 Sipser의 책을 읽었으며 이것이 계산 이론에서 나와 같은 초보자에게 더 나은 방법이라고 생각합니다.
Mr. Ariel

추측 입력으로 추측하는 것을 생각하십시오. 그러나 필요가 전략을 추측에 조심해야합니다 - 그렇지 않으면 당신이하지 않아도 추측에 필요한 저장 모든 갈래의 스레드 균일하게 경계되도록 유한 더 이상 - 상태 자동 장치를. 또한 활성화 된 분기 스레드 수에 균일 한 경계가 필요합니다. 여기 Raphael의 설명이 효과가 있다고 생각하지만 적어도 언급해야합니다.
David Lewis
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.