문제 설명 :
허락하다
(잠재적으로 결정적이지 않은) 푸시 다운 오토 마톤이어야하고
입력 알파벳입니다. 단어가 있습니까
성
그것은 받아 들여진다
?
이 문제가 NP-complete입니까? 연구 되었습니까? 그런 단어를 찾을 수있는 알고리즘이 있습니까?
답변
CFG 언어와 일반 언어의 교차점 계산
(이것은 상태 수에
“데드 엔드”상태 추가). 이제 결과가 비어 있는지 확인하십시오. 문법으로 변환하십시오 (결과는 다항식 크기를 가질 것이라고 생각합니다).
편집 : Kaveh는 다항식이라고 언급했습니다.
, 그래서 만약
입력으로 주어지면 알고리즘은 지수
. 그러나 Kaveh는이 문제를 해결하는 방법을 찾았습니다. 원래 오토 마톤을 CFG로 변환하고 모든 터미널을 고정 터미널로 교체하십시오. 이제 반복 알고리즘을 사용하여 다음과 같이 각 비 터미널에 의해 생성 된 단어의 최소 크기를 찾으십시오.
로 모든 길이를 초기화
그런 다음 명백한 방식으로 모든 길이를 반복적으로 업데이트하십시오.
(순서는 중요하지 않습니다)
. 주장 : 이것은
반복
비 터미널의 수입니다. 그 이유는 최소 길이 단어를 생성하는 트리에서 비 터미널이 두 번 사용되지 않기 때문입니다. 각 “가장자리”는 처리하는 데 최대 하나의 반복이 필요합니다 (일부 가장자리는 병렬로 “업데이트”될 수 있음).
답변
모든 알파벳 문자를 하나의 특정 문자로 변경하십시오. 이제 단일 문자에 PDA를 정의했습니다. 그 언어는 문맥이없는 문법입니다. 그러나 단일 문자에 대한 컨텍스트 프리 문법은 규칙적입니다. 따라서 CFG를 일반 언어로 변환 한 다음 길이가 k 인 단어가 포함되어 있는지 확인하십시오.
이제 이러한 모든 변환에는 지수 시간이 필요한 경향이 있지만 문제가 NP 완료 인 것 같지는 않습니다. 특히 다항식 시간을
.
내가 틀렸을 수도 있고, 초기의 저격 답변에 대해 사과드립니다 …
BTW, 단일 문자에 대한 CFG가 규칙적이라는 사실은 Parikh의 정리에 따릅니다. 직접적인 증거는 그리 어렵지 않지만. Parikh의 정리에 대한 자세한 내용은 링크를 참조하십시오-그것은 아름다운 결과입니다 … http://www8.cs.umu.se/kurser/TDBC92/VT06/final/3.pdf
답변
아마도 차선책 일 수있는 방법 : Djikstra의 알고리즘을 실행하십시오. 그런 다음 각 최종 상태에 대해 거리를
. 있다면
, 동의하기. 받지 않다.
편집 : 위는 NFA에서만 작동합니다! 미안합니다.