특수한 경우 DFA 교차에 대한 효율적인 알고리즘에 관심이 있습니다. 즉, DFA가 특정 구조를 따르거나 제한된 알파벳으로 작동하는 경우. 그러한 경우 알고리즘을 찾을 수있는 소스가 있습니까?
질문을 너무 광범위하게 만들지 않기 위해 다음 구조가 특히 중요합니다. 교차 할 모든 DFA는 이진 알파벳 (0 | 1)으로 작동하며, 상관 없음 기호를 사용할 수도 있습니다. 또한, 모든 상태는 최대 2 개의 전이만있는 K 개의 특수 상태를 제외하고 하나의 전이만 있습니다 (이러한 전이는 항상 0 또는 1이지만 상관 없음). K는 실제 목적으로 10보다 작은 정수입니다. 또한 단일 수락 상태가 있습니다. 또한 교차점은 항상 "스트립"형태의 DFA, 즉 다음 이미지와 같이 분기가없는 것으로 알려져 있습니다.
편집 : 아마도 입력 DFA에 대한 제약 조건에 대한 설명이 명확하지 않을 수 있습니다. 이 단락에서 개선하려고 노력할 것입니다. 입력 T DFA가 있습니다. 이러한 각 DFA는 이진 알파벳에서만 작동합니다. 그들 각각은 최대 N 개의 상태를 가지고 있습니다. 각 DFA의 각 상태는 다음 중 하나입니다.
1) 수락 상태 (단지이며 다른 상태로 전환되지 않음)
2) 동일한 대상 상태로 두 번의 전환 (0 및 1)이있는 상태 (대부분의 상태는이 종류 임)
3) 서로 다른 목표 상태로 전환되는 두 가지 상태 (0 및 1)가있는 상태 (최대 K )
허용되는 상태는 하나 뿐이며 각 입력 DFA 에는 최대 3 개의 K 유형이 있습니다 (3). 또한 모든 입력 DFA의 교차 DFA가 N 보다 작은 크기의 "스트립"(위에서 설명 된 바와 같이)임을 보장한다 .
EDIT2 : 의견에서 DW가 요청한 몇 가지 추가 제약 사항 :
- 입력 DFA는 DAG입니다.
- 입력 DFA는 주석의 DW 정의에 따라 "평준화"됩니다. 즉, 당신은 모든 전환은 정수에서 이동하는 방식으로 모든 주에 다른 정수를 지정할 수 있습니다 U 정수로 V 등이 유 + 1 = 절 .
- 각 입력 DFA에 대한 수락 상태 수는 K를 초과하지 않습니다 .
어떤 아이디어? 감사.
a DFA in form of "strip", i.e., no branches
? 귀하의 경우 표준 알고리즘보다 더 잘 할 수 있다고 믿는 특별한 이유가 있습니까?