주어진 정규 언어에 무한 접두사가없는 부분 집합이 있습니까?


11

유한 알파벳 위의 단어 세트는 하나가 다른 하나의 접두사 인 두 개의 다른 단어가없는 경우 접두사 가 없습니다.

질문은 ~이야:

NFA로 지정된 일반 언어에 무한 접두사가없는 하위 집합이 포함되어 있는지 확인하는 것이 복잡합니까?

답 (아래의 Mikhail Rudoy로 인해) : 다항식으로 할 수 있으며 NL에서도 생각합니다.

Mikhail의 답을 해석하면 (Σ,q0,F,δ) 정상적인 형태의 입력 NFA (엡실론 전이, 트림 없음)로하고 L[p,r] (각각 L[p,R] )을 상태 p 를 초기 상태로하고 {r} 을 최종 상태 로하여 얻은 언어 (예 : 상태 p 를 초기, 세트 R 을 최종으로) 단어를 들어 u 하자 uωu 를 반복하여 얻은 무한한 단어 입니다.

다음은 동일합니다.

  1. 언어 L[q0,F] 는 무한한 프리픽스 프리 서브 세트를 포함합니다.
  2. qQ ,uL[q,q]{ε} vL[q,F] 그래서v 접두사 아닌uω .
  3. qQ L[q,q]{ε} uL[q,q] vL[q,F] 그래서v 접두사 아닌uω .

증명:

3 2 사소한.

2 1 인 경우 wL[q0,q] 대해 w(u|v|)vL[q0,F] 의 무한 접두사없는 하위 집합임을 알 수 있습니다.

마지막으로, 1 3은 Mikhail의 답변에서 "올바른"증거입니다.

답변:


7

다항식 시간으로 문제를 해결할 수 있습니다.

시작하려면 다음 추가 속성을 사용하여 지정된 NFA를 동등한 NFA로 변환하십시오.

  • 엡실론 전환이 없습니다
  • 모든 상태는 시작 상태에서 도달 할 수 있습니다

유용한 서브 루틴

NFA N , 상태 q 및 비어 있지 않은 문자열 s 가 있다고 가정 해 봅시다 . 다음 서브 루틴을 통해 다음 명령문의 실제 값을 평가할 수 있습니다. " 상태 q 에서 수락 상태까지의 N 모든 경로는 일부 n 의 문자열 s n 접두어 인 문자열에 해당 합니다." 또한이 서브 루틴은 다항식 시간으로 실행됩니다.qsnn

S|s|+1snn|s|sssssNNqN언어 은 표준 NFA 교차로 구성을 사용하여 입니다. 이 모든 구성은 입력 크기에서 다항식입니다.L(N)L(S)L(N)

그런 다음 의 언어 가 비어 있는지 테스트합니다 (단순 그래프 검색으로 다항식 시간으로 수행 가능). 경우에만, , 바꾸어 말하면 모든 문자열 아닌 . 즉, 언어 의 경우에만 비어 단지의 접두사 문자열을 받아 일부 . " 상태 에서 수락 상태 까지 모든 경로 는 문자열 접두사 인 문자열에NL(N)=L(S)L(N)=L(N)L(S)NNsnnNqsn n일부 . "n

주요 알고리즘

NFA에서 일부 루프 상태를 고려하십시오. 그러한 각 상태 에 대해 다음을 수행하십시오.q

하자 어떤 간단한 루프를 포함 할 . 하자 루프에 해당하는 문자열이 될 . NFA에는 엡실론 전환이 없으므로 는 비어 있지 않습니다. 그런 다음 서브 루틴을 NFA, 상태 및 문자열 . 서브 루틴 이 NFA 에서 로 시작 하고 승인 상태로 끝나는 모든 경로 가 일부 대해 접두사 에 해당 한다고 알려 주면 다음 상태 로 계속 진행합니다 . 그렇지 않으면, 주어진 NFA의 언어에 무한한 프리 펙스가없는 서브 세트가 포함되어있는 것으로 출력하십시오.P2qsP2sqsqsnnq

루프에있는 모든 상태 를 시도 하고 알고리즘이 출력하지 않으면 주어진 NFA의 언어에 무한한 프리 펙스가없는 서브 세트가 포함되지 않은 결과가 출력됩니다.q

정확성 (전반)

먼저, 위의 알고리즘이 주어진 NFA의 언어에 무한한 프리 펙스가없는 서브 세트가 포함되어 있다고 가정합니다. 이 출력이 일부 루프 및 일부 상태 를 고려하면서 선택되었다고 가정하겠습니다 . 이전과 마찬가지로 는 해당하는 문자열 입니다. 그런 다음 서브 루틴에 따르면 NFA 에서 에서 시작 하고 수락 상태로 끝나는 모든 경로 가 일부 대한 접두사 에 해당하는 것은 아닙니다 (이것은 메인으로 연결되는 서브 루틴의 유일한 출력이므로) 그 에서 출력하는 알고리즘 ).P2qsP2qsnnq

하자 발 경로 : 그 존재 서브 루틴에 의해 어서 트 될 경로 해당 문자열 등한다는 허용 상태로 (A)의 프리픽스없는 어떤 위해 .P3qtsnn

하자 구성 사본 충분히 큰. 이후 통해 루프 , 발 경로로 간주 될 수있다 을 . 해당하는 문자열 은P2mP2mm|s|>|t|P2qP2qqP2sm

하자 에 시작 상태에서 경로 여야 (모든 상태가 처음부터 도달 할 수 있기 때문에 존재하는) 및하자 이 경로에 해당하는 문자열.P1qr

그런 다음 , 개의 및 으로 구성된 경로는 허용되는 계산 경로입니다. 이 경로에 해당하는 문자열은 입니다. 따라서 NFA는 형식의 모든 문자열을 허용합니다 . 이것은 NFA에 의해 허용되는 무한한 문자열 세트이며,이 문자열 세트에는 접두어가 없다고 주장합니다. 특히, 가정하자 접두사 인 함께 . 즉, 는 접두사입니다 . 이후 길이 갖는다, 이것은P1xP2P3r(sm)xtr(sm)xtr(sm)xtr(sm)yty>xt(sm)yxt(sm)yxm(yx)|s|m|s|>|t|t( s m ) y - x = s m ( y - x ) t s n n r ( s m ) x t r ( s m ) y t 는 의 접두사입니다 . 그러나 우리는 그 서브 루틴의 출력에 의해 알고 (A)의 접두사가 아닌 어떤을 위해 . 따라서 는 접두사가 될 수 없으며 원하는대로 문자열 세트에 접두사가 없습니다.(sm)yx=sm(yx)tsnnr(sm)xtr(sm)yt

따라서, 주 알고리즘이 주어진 NFA의 언어에 무한 프리 펙스 프리 하위 집합이 포함되어 있음을 출력하는 경우 실제로 해당됩니다.

정확성 (후반)

다음으로, 나머지 절반을 보여 드리겠습니다 : 만약 주어진 NFA의 언어에 프리 펙스 프리 (prefex-free) 서브 세트가 포함되어 있다면, 주 알고리즘은이 사실을 출력 할 것입니다.

주어진 NFA의 언어에 무한 접두사가없는 부분 집합이 있다고 가정하십시오. 를이 문자열에 해당하는 (수락하는) 계산 경로의 집합 이라고합시다 . 공지 것을 그의 대응하는 문자열 결코 서로 접두사 연산 경로를 수용 무한 세트이다.AA

NFA에 해당 상태를 통해 루프가 있으면 NFA에서 상태가 "루핑"이고 그렇지 않으면 "비 루핑"이라고 가정하십시오. 비 루핑 상태 만 통과하는 시작 상태에서 루핑 상태까지의 모든 경로를 고려하십시오 (끝나는 하나의 루핑 상태 제외). 하자 이러한 경로의 설정합니다. 각 경로 는 루프를 가질 수 없으므로 해당 루프의 상태는 루핑 상태이므로 는 루핑 상태를 통과합니다. 따라서 의 경로 길이 는 NFA의 상태 수에 의해 제한되므로 는 유한합니다 (예 : 시작 상태가 루핑 상태이면 해당 경로 만 빈 경로 임).PpPpPP

우리는 분할 할 수 에 에서 어떻게 계산 경로에 따라 집합 시작됩니다. 특히 경우 를 경로 시작하는 의 모든 계산 경로 세트로 설정 하고 를 다른 모든 경로 세트로 설정하십시오 . 분명히, 모든 및 는 분리되어 있고 결합은 전체 집합 입니다. 또한 에는 루핑 상태를 통과하지 않으므로 절대 루핑하지 않는 경로 만 포함됩니다. 따라서 는 유한하다. 그러면A|P|+1ApPApApBAApBABBAp무한대 여야합니다 (그렇지 않으면 는 유한하게 많은 유한 세트의 합집합입니다).A

는 무한 하기 때문에 무한히 많은 계산 경로가 있으며, 문자열이 서로 접두사이고 시작하는 경로를 허용하지 않습니다 . 하자 경로의 끝에 도달 한 상태가 될 . 수용 가능한 경로가 무한히 많다는 결론을 내릴 수 있습니다 . 에서 시작 하여이 접두사가 아닌 문자열에 해당하는 부터 시작 하여이 세트 호출하십시오 .AppqpAq

메인 알고리즘 동안 우리는 상태 와 일부 문자열 에서 서브 루틴을 실행합니다 . 이 서브 루틴은 에서 시작하는 모든 허용 경로 가 일부 대해 접두사 인 문자열에 해당 하는지 여부를 알려줍니다 . 이것이 사실이라면, 에서 무한히 많은 수용 경로는 다양한 대해 접두사가 될 것이며, 이는 모두 서로의 접두사라는 것을 의미합니다. 이것은 사실이 아니므로, 주 알고리즘이 상태 에서 서브 루틴을 실행할 때qsqsnn' N N QAsnnq결과는 다른 가능한 결과입니다. 그러나 이것은 주요 알고리즘이 NFA의 언어에 무한 접두사가없는 하위 집합이 포함되어 있음을 출력하게합니다.

이것으로 정확성이 증명됩니다.


주어진 상태 가 (지수 적으로) 많은 루프의 일부가 될 수 있기 때문에 루프 처리가 어떻게 작동하는지 이해하지 못합니다 . 물론,이 두 루프 중 하나가 비 주기적 시퀀스를 생성하는 데 사용될 수 있다면 우리는 완료됩니다. q
japh

루프 처리 란 무엇을 의미합니까? 주요 알고리즘에서 각 상태에 대한 당신은 통과 한 루프 선택 (잠재적으로 기하 급수적으로 많은 중 어떤 루프를) 및 그 루프 전화 당신은 상태에서 서브 루틴을 실행 afterwords을 ( 및 문자열 어디 문자열입니다 와 연관 됨 ). 서브 루틴은 본질적으로 해당 루프를 사용하여 비 주기적 시퀀스를 생성 할 수 있는지 여부를 점검합니다. 그렇다면 우리는 끝난 것입니다. 그렇지 않은 경우 (그리고 모든 대해 더 이상없는 경우 ), 전체 언어는주기적인 시퀀스의 합집합이므로 완료됩니다. q P 2 q s s P 2 qqqP2qssP2q
Mikhail Rudoy

내 질문을 더 명확하게하기 위해 초기 상태 , 최종 상태 및 세 가지 전환 이 포함 된 간단한 NFA가 있습니다 : , , 입니다. 대한 루프 접두사가없는 문자열을 생성하지 않습니다,하지만에 대한 루프 것이다. T q a q q b q q a T a bqTqaqqbqqaTab
japh

사실에 대한 루프 문자열의 집합 : 접두사 무료 세트 생성하지 모든 사용 루프를. 내 알고리즘에서 에 대해 선택한 루프 루프 인 경우 서브 루틴은 에서 시작하는 모든 허용 경로 가 형식 문자열을 갖는 것은 아니라고 결정 하므로 주 알고리즘은 무한하다고 말합니다. 접두사가없는 서브 세트가 존재합니다. 알고리즘이 에 사용하는 루프 가 대신 루프 인 경우 서브 루틴은 에서 시작하는 모든 허용 경로 가 형식의 문자열을 갖는 것은 아니라고 결정합니다.a * b a a q a q a * q b q b aabaaqaqaqbqb이 경우에도 알고리즘의 출력이 동일합니다.
Mikhail Rudoy

미카 일 감사합니다! 나는 당신의 대답이 질문을 해결한다고 생각합니다.
Googlo

2

정의

정의 1 : 를 단어의 집합으로 하자 . 우리 는 단어 및 가있는 경우 는 접두사가없는 무한대 (이 대답의 목적으로 이름을 구성 함) 라고 말합니다.SSu 0 , , u n , v 1 , , v n , u0,,un,v1,,vn,

  • 각 에 대해 및 은 비어 있지 않으며 고유 한 문자로 시작합니다.n1unvn

  • S={u0v1,,u0unvn+1,} .

직관은 의 단어 가 정확하게 경로의 레이블이되도록 다음과 같은 모양 의 무한 뿌리 나무 ( 뿌리, 나뭇잎 및 나머지 내부 노드)에 모든 단어를 넣을 수 있다는 것 입니다 뿌리에서 잎까지 :S

   u₀    u₁    u₂
■-----•-----•-----•⋅⋅⋅
      |     |     |
      | v₁  | v₂  | v₃
      |     |     |
      ▲     ▲     ▲

법안 1.1 : 접두사가없는 무한 세트는 접두사가 없습니다.

제안 증명 1.1 : 이 의 엄격한 접두사라고 합니다. 두 가지 경우가 있습니다.u0unvn+1u0umvm+1

  • 경우 다음 의 접두사 . 과 에 뚜렷한 첫 글자가 있기 때문에 불가능 합니다.n<mvn+1un+1umvm+1un+1vn+1

  • 경우 후 의 접두사 . 과 에 뚜렷한 첫 글자가 있기 때문에 불가능 합니다.n>mum+1unvn+1vm+1um+1vm+1

발의안 제 1.2 호 : 접두사없는 무한한 세트는 무한합니다.

제안 증명 1.2 : 증거 1.1에서, 이면 및 은 접두사 순서와 비교할 수 없음을 . 그러므로 그들은 평등하지 않습니다.nmu0unvn+1u0umvm+1


주요 증거

발의안 제 2 호 : 무한 프리픽스 프리 세트에는 무한 프리픽스 프리 세트가 포함되어 있습니다.

발의안 3 : 언어에는 접두사가없는 무한 세트가 포함 된 경우에만 접두사없는 세트가 포함됩니다.

아래 증거.

법안 3의 증명 : 법안 2에 의한 법안 1.1과 1.2에 의한 .

발의안 제 4 호 : 정규 언어의 접두사가없는 부분 집합 세트 (무한 단어 됨 이다 - 정규 (그것을 인식 부치 자동 장치의 크기가 일반 언어를 인식 NFA의 크기 다항식).u0¯v1^u1¯v2^u2¯ω

아래 증거.

정리 5 : NFA에 의해 기술 된 정규 언어가 무한 프리픽스 프리 서브 세트를 포함 하는지를 결정하는 것은 NFA의 크기에서 시간 다항식으로 수행 될 수있다.

정리 증명 5 : 제안 3은 접두사가없는 무한 부분 집합이 포함되어 있는지 테스트하는 것으로 충분합니다. 언어 (Büchi 오토 마톤의 크기에 따라 선형으로 수행 될 수 있음).


제안 증명 2

Lemma 2.1 : 가 접두사없는 세트이면 (모든 단어 ) 도 마찬가지입니다 .Sw1Sw

증거 2.1 : 정의에 따라.

Lemma 2.2 : 는 무한한 단어 집합이되게하십시오. 하자 의 모든 단어에 대한 가장 긴 접두사 공통 . 와 는 동일한 추기경을 갖습니다.Sw:=lcp(Sn)SSw1S

증명 2.2 : 로 정의 합니다. 그것은 의 정의에 의해 잘 정의되고 정의에 의해 주입되고 정의에 의해 추측됩니다 .f:w1SSf(x)=wxw1Sfw

제안 증명 2 : 우리는 에 유도하여 및 을 구축 합니다. 유도 가설 은 다음 부분으로 구성됩니다.unvnnHn

  • (P1) 모든 , ;k{1,,n}u0uk1vkS

  • (P2) 모든 에 대해 및 는 비어 있지 않으며 고유 한 문자로 시작합니다.k{1,,n}ukvk

  • (P3) Sn:=(u0un)1S 는 무한합니다.

  • (P4) 모든 단어에 공통 인 비어 있지 않은 접두사가 없습니다 . 즉 : 아무 편지도 없다 그러한 .SnaSnaΣ

비고 2.3 : 없이 을 확인하는 시퀀스가있는 경우 을 수정 하여 도 만족시킬 수 있습니다 . 실제로 을 됩니다 . 은 영향을받지 않습니다. 는 사소합니다. 는 시공입니다. 은 lemma 3입니다.Hn(P4)un(P4)ununlcp(Sn)(P1)(P2)(P4)(P3)

이제 에 유도하여 시퀀스를 만듭니다 .n

  • 초기화 : 은 를 취하여 (즉, 을 취하고 3.1을 적용하여) 적용됩니다.H0u0:=lcp(S)u0:=ε

  • 유도 단계 : 우리가 단어를 가지고 있다고 가정하자 및 같은 그 일부 . 우리는 만들 것이다 및 등이 .u1,,unv1,,vnHnnun+1vn+1Hn+1

이후 무한하고 접두어 불요 (표제어 1)는 포함하지 않는 되도록 . 이후 무한대 편지가 되도록 무한에게. 함으로써 편지가 구별 되도록 비어된다. 픽업 . 촬영 될 충족시킬 , 및SnεSn=aΣ(SnaΣ)SnaSnaΣ(P4)baSnbΣvn+1SnbΣun+1a(P1)(P2)(P3)그래서 우리는 : 을 얻기 위해 3.1을 적용 합니다.(P4)un+1:=alcp(a1Sn)

(P1) u1unvn+1u1un(SnbΣ)S 입니다.

(P2) 의 정의에 와 .un+1vn+1

(P3) a1Sn 의 정의에 의해 무한 및 표제어 (3) 따라서 무한대.aSn+1

(P4) 의 정의에 .un+1


제안 증명 4

발의안 제 4 호 : 를 NFA로하십시오.A=(Q,,Δ,q0,F)

아이디어는 다음과 같다 : 우리는 읽을 우리가 읽기 위치를 기억, , 우리가 읽은 후 어디까지 철수 읽기 우리가 ... 우리는 또한 각 읽은 첫 글자를 기억 위치를 기억 이 다른 문자로 시작 되도록합니다 .u0v1u0u1vnun

멀티 헤드 오토마타를 사용하면 이것이 더 쉬울 수 있다고 들었지만 실제로는 형식주의에 익숙하지 않으므로 Büchi 오토 마톤을 사용하여 설명합니다.

우리는 . 여기서 기호 는 및 대한 모자가있는 기호 를 설명하는 데 사용됩니다 .Σ:=Σ¯Σ^ukvk

우리는 설정 , 여기서Q:=Q×({}(Q×Σ))

  • (q,) 은 당신이 는 것을 의미합니다 ;un

  • (q,(p,a)) 는 상태 에서 을 읽고 , 이제 시작하는 을 읽고 , 완료되면 다시 돌아가는 것을 의미합니다. 로 시작하지 않는 을 읽으려면 를 입력 .unpvn+1apun+1a

우리는 세트 때문에 우리는 읽고 시작 .q0:=(q0,)u0

우리는 정의 같이 .FF×Q×Σ

전환 세트 는 다음과 같이 정의됩니다.

  • " "각 전환 에 ;unqaq(q,)a¯(q,)

  • " to "각 전환 에 ;unvn+1qaq(q,)a^(q,(q,a))

  • " "각 전환 에 ;vnqaq(q,(p,a))a^(q,(p,a))

  • " 하기 각 트랜지션은" 최종 문자 로 구별 , 추가 ;vnunpappba(q,(p,b))a¯(p,)

보조 정리 4.1 : 으로 허용되는 각각 IFF에 , 및 비어 있고 별개의 문자로 시작하고, 각각 , .u0¯v1^u1¯v2^un¯vn+1^An1unvnn0u0unvn+1L(A)

명예 증명 4.1 : 독자에게 맡겼습니다.

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