하자 NFA 쌍이에 의해 주어진 두 개의 정규 언어가 될 입력으로.M 1 , M 2
인지 확인하고 싶다고 가정하자 . 이것은 의 제품 오토 마톤을 계산하는 2 차 알고리즘으로 명확하게 수행 할 수 있지만 더 효율적인 것이 있는지 궁금합니다.M 1 , M 2
여부를 결정 하는 알고리즘이 있습니까? 가장 빠른 알려진 알고리즘은 무엇입니까?L 1 ∩ L 2 ≠ ∅
하자 NFA 쌍이에 의해 주어진 두 개의 정규 언어가 될 입력으로.M 1 , M 2
인지 확인하고 싶다고 가정하자 . 이것은 의 제품 오토 마톤을 계산하는 2 차 알고리즘으로 명확하게 수행 할 수 있지만 더 효율적인 것이 있는지 궁금합니다.M 1 , M 2
여부를 결정 하는 알고리즘이 있습니까? 가장 빠른 알려진 알고리즘은 무엇입니까?L 1 ∩ L 2 ≠ ∅
답변:
간단한 대답 : 대해 시간에 실행되는보다 효율적인 알고리즘이 존재 하면 강력한 지수 시간 가설이 반박됩니다.δ < 2
우리는 더 강력한 정리를 증명할 것이고 간단한 대답이 따를 것입니다.
정리 : 시간 에 두 개의 DFA에 대한 교차 비 공백 문제를 해결할 수있는 경우 n 비트의 메모리 만 사용하여 결정 불가능하게 해결할 수있는 모든 문제는 결정 가능하게 해결됩니다 시간.p o l y ( n ) ⋅ 2 ( δ n / 2 )
정당성 : 시간 에 두 개의 DFA에 대한 교차 비 공백을 해결할 수 있다고 가정합니다 . 읽기 전용 입력 테이프와 읽기 / 쓰기 바이너리 작업 테이프가있는 비 결정적 Turing 머신 M을 제공하십시오. 길이 n의 입력 문자열 x를 지정하십시오. M이 이진 작업 테이프에서 n 비트 이상의 메모리에 액세스하지 않는다고 가정하십시오.
입력 x에 대한 M의 계산은 유한 한 구성 목록으로 나타낼 수 있습니다. 각 구성은 상태, 입력 테이프의 위치, 작업 테이프의 위치 및 작업 테이프를 나타내는 최대 n 비트의 메모리로 구성됩니다.
이제 작업 테이프가 반으로 나뉘어져 있다고 가정하십시오. 즉, 우리의 왼쪽 부분이 세포의 오른쪽 섹션 세포를. 각 구성은 왼쪽 조각과 오른쪽 조각으로 나눌 수 있습니다. 왼쪽 부분은 상태, 입력 테이프의 위치, 작업 테이프의 위치 및 왼쪽 섹션 의 비트로 구성됩니다. 오른쪽 부분은 상태, 입력 테이프의 위치, 작업 테이프의 위치 및 오른쪽 섹션 의 비트로 구성됩니다.NNN
이제 상태가 왼쪽 조각 인 DFA 과 상태가 올바른 조각 인 DFA 를 만듭니다. 알파벳 문자는 이동 상태, 테이프 헤드 이동 방법 및 작업 테이프의 활성 셀 조작 방법을 나타내는 지시 사항입니다.D 2
아이디어는 과 가 입력 x에 대한 M의 계산에 해당하는 명령 목록을 읽고 함께 유효하고 수용 가능한지 확인하는 것입니다. 두 와 정보가 입력 문자에 포함되기 때문에 테이프 헤드가 어디에 항상 동의 할 것이다. 따라서 에게 작업 테이프 위치가 왼쪽 조각에있을 때 명령이 적절한 지 확인 하고 가 오른쪽 조각에있을 때 확인하도록 할 수 있습니다.D 2 D 1 D 2 D 1 D 2
전체적으로 각 DFA에 대해 최대 상태와 최대 개의 고유 알파벳 문자가 있습니다. p o l y ( n )
초기 가정에 따르면 시간에 두 DFA에 대한 교차 비 공통성을 해결할 수 있다고 가정합니다 .
도움이 될 것입니다 : https://rjlipton.wordpress.com/2009/08/17/on-the-intersection-of-finite-automata/
CNF-SAT는 메모리의 비트를 사용하여 해결할 수 있습니다. 여기서 k는 변수 수입니다. 위의 구성을 사용하여 시간 에 두 DFA에 대한 교차 비 공통성을 해결할 수 있으면 시간. 따라서 간단한 대답이 있습니다.
의견, 수정, 제안 및 질문을 환영합니다. :)