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