주어진 두 개의 문자열을 수락하는 DFA는 몇 명입니까?


28

정수 과 알파벳 . 을 시작 상태 1의 개 상태에서 모든 유한 상태 오토마타의 수집으로 정의합니다 . 우리는 모든 DFA (단순 또는 비 변성 상태가 아닌)를 고려하고 있습니다. 따라서 입니다.n Σ = { 0 , 1 }nΣ={0,1}DFA(n)DFA(n)nn|DFA(n)|=n2n2n|DFA(n)|=n2n2n

이제 두 개의 문자열 x,yΣx,yΣ 하고 K(x,y)K(x,y)xy 모두 를 허용하는 DFA (n) 의 요소 수로 정의 하십시오 .DFA(n)DFA(n) xxyy

질문 : K (x, y) 계산의 복잡성은 무엇입니까 K(x,y)K(x,y)?

이 질문은 머신 러닝에 영향을 미칩니다 .

편집 : 이제이 질문에 현상금이 있으므로 공식화의 순서가 약간 더 정확하다고 가정합니다. 들면 n1n1 은 말할 DFA(n)DFA(n) 의 집합 일 n2n2nn2n2n 상기 정의한 바와 같은, 자동 장치. 의 경우 x,y{0,1}x,y{0,1} 정의 Kn(x,y)Kn(x,y) 있는 오토마타의 개수로 DFA(n)DFA(n) 받아 xxyy . 질문 : Kn(x,y)Kn(x,y) 는 시간 poly (n, | x |, | y |) 로 계산할 수 poly(n,|x|,|y|)poly(n,|x|,|y|)있습니까?


2
최종 상태를 수정하지 않고 DFA를 수정하면 x와 y를 같은 상태로 매핑합니다.이 경우 유일한 상태는 상태가 최종적이어야한다는 것입니다. 유일한 제약은 둘 다 최종적이어야한다는 것입니다. 따라서 나는 x와 y를 다른 주에 얼마나 많은 DFA가 매핑 하는가?
a3nm

3
Aryeh, n ^ {2n} 2 ^ n 수를 설명 할 수 n 2 n 2 nn2n2n있습니까? 2 N2n 인수를 얻을 수 없습니다 . 추가됨 : 최종 상태를 지정하는 것을 잊었습니다. 어쨌든, 다른 사람들을 위해, 카운트가 어떻게 진행되는지 여기에 있습니다. 각 상태에 대해 입력 001 로 이동할 위치를 지정하십시오 11. 그것은 N 2 Nn2n 합니다. 최종 상태 세트를 지정하십시오. 그건 2 N2n .
Srivatsan Narayanan

2
실제로, 나는 엑스xy 이외의 문자열에 어떤 일이 일어나는지 상관하지 않습니다 와이y. 현상금을 시작하려면 특정 포인트가 필요하다고 생각합니까?
Aryeh

4
와 를 받아들이는 가장 작은 오토 마톤 은 하나의 상태를 가지고 있기 때문에 그것이 매우 유익하다고 생각하지 않습니다 ...x yxy
Aryeh

3
아이디어는 다음과 같습니다 . 및 에서 동일한 상태로 끝나는 상태 DFA 수만 알면 됩니다. 이 숫자를 하고 총 DFA 수로하십시오 (예 : . 대답은 입니다. 계산할 다른 아이디어는 우리의 공유 초기 세그먼트 잊을 수 있다는 및 와 같은 것을 가정 wlog 및 . 에서 상태와 높이를 가진 이진 DAG의 수만 계산합니다.n x y m M M = n 2 n 2 n 1nxymMM=n2n2n2 m+14 (Mm)mxyx=0ab=1bl최대{a,b}0a1bm12m+14(Mm)mxyx=0ab=1blmax{a,b}그 및 동일한 위치에서 종료하고로부터 계산할 용이 . 0a1bm
Kaveh

답변:


1

따라서 질문은 매우 간단하지만 매우 흥미 롭습니다. 입력이 단항에서는 이고 이진수에서는 및 라고 가정합니다 (또는 Kai의 대답에서 지적한 것처럼 문제가 있음).n x ynxy

우선, 대략 알고 싶다면 무작위 DFA를 몇 개만 생성하면 좋은 근사치를 얻을 수 있습니다. (이 복잡성 클래스 이름이 있는지 궁금합니다.)K(x,y)K(x,y)

그렇다면 아는 것은 어려운 문제처럼 보입니다. a3_nm과 Kaveh의 의견에서 지적했듯이, 질문은 와 가 동일한 상태로가는 오토마타 수를 결정하는 것과 같습니다 . 나는 그들이 같은 상태로 갈 확률을 입니다.K(x,y)K(x,y)xxyypp

업데이트 : 여기에 쓴 것들 중 일부가 사실이 아니므로 이제 수정했습니다.

쉽게 알 수 있습니다 . 만약 가 모두 0이고 가 마지막 비트 인 1을 제외하고 는 모두 0 이면 동등하다. 다른 경우가 있는가? 모르겠어요 예를 들어 가 빈 문자열이고 이면 입니다.p1/np1/nxxyyxxy=00y=00p=n+1(n1)np=n+1(n1)n

문제를 단순화하기 위해 와 가 단항 인 경우 어떻게되는지 생각하기 시작했습니다 . 둘 다 이상 이고 그들의 차이가 으로 나눌 수 있다면그런 다음 입니다. 단항 버전에 대한 간단한 공식이 있습니까?xxyynnn!n!p=1p=1


나는 문제를 분명히했다 -p o l y ( n , | x | , | y | ) 알고리즘이 필요하다 (또는 알려진 어려운 문제의 축소). 샘플링 근사값은이 커널이 소개 된 논문에서 사용됩니다 : portal.acm.org/citation.cfm?id=1577108poly(n,|x|,|y|)
Aryeh

2
단항 버전의 경우 : 다 항적으로 많은 n 상태 단항 오토마타가 있으므로이 경우 K n ( x , y ) 을 계산하기위한 폴리 타임 알고리즘이 있다고 확신합니다 . nKn(x,y)
Aryeh

실제로, 당신은 단항 버전이 계산 가능하다는 것이 절대적으로 옳습니다. 주어진 x와 y에 대한 공식이 얼마나 간단한 지 궁금합니다.
domotorp

사용한 축소는 버그가 있습니다. x와 y는 동일한 오토마타에 의해 받아 들여지고 완전히 다른 상태로 끝날 수 있습니다. 실제로는 모든 문자열에 해당하는 경로에서 시작 상태 만 공유 할 수 있습니다.
amnn

@ amnn :이 글을 쓴 지 3 년이 지났지 만 내 대답의 세 번째 단락이 왜 같은 상태에서 끝나는 것을 다루는 지 설명하지 않습니까?
domotorp

0

요점을 놓칠 수는 있지만 n 은 고정되어 있다고 말 했으므로 해당 크기의 모든 DFA는 사전 계산 된 것으로 간주되어 쉽게 시뮬레이션 할 수있는 형식으로 저장 될 수 있습니다. 다음과 같이 K 를 계산하십시오 .nK

입력 x , y 에서 x , y Σ xyx,yΣ

  1. xy를 저장하십시오xy
  2. 카운터 c0으로 초기화c0
  3. n 2 n 2 n DFA 각각에 대해n2n2n
  4. 에이. 두 단어로 시뮬레이션합니다 (이 단계는 O ( | x y | )입니다 ).O(|xy|)

    비. 두 시뮬레이션 실행이 모두 허용되는 경우 c를 증가시킵니다.c

  5. 출력 cc

전체적으로 계산에는 선형 복잡성이 있습니다. 대답은 K ( n , x , y ) 와는 상당히 다릅니다 .K(n,x,y)


3
모든 머신을 분명히 시도하면 효과가 있습니다. Aryeh는 다항식 시간 알고리즘 또는 다른 경도 결과가 있는지 알고 싶어합니다.
레프 레이 진

엄밀히 말하면 이것은 입력에서 다항식 시간이며, n이 입력의 일부가 아닌 경우 Kai가 말한 것입니다. 그러나 질문은 분명히 다릅니다.
domotorp

4
아 알 겠어요 나는 그것이 "fix n "이라는 의미가 아니라고 생각합니다 . 문제에 대한 자연스런 해석은 사소한 것이 아니라고 생각합니다.
레프 레이 진

1
허점을 지적 해 주셔서 감사합니다, 카이 수정되었습니다 :)
Aryeh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.