길이가 긴 단어를 찾는 어려움


10

문제 설명 :

허락하다 미디엄 (잠재적으로 결정적이지 않은) 푸시 다운 오토 마톤이어야하고 입력 알파벳입니다. 단어가 있습니까wA|w|k 그것은 받아 들여진다 미디엄 ?

이 문제가 NP-complete입니까? 연구 되었습니까? 그런 단어를 찾을 수있는 알고리즘이 있습니까?


Djikstra의 알고리즘이 트릭을 수행해서는 안됩니까? (나는 아마 여기에 뭔가 오해하고있을 것이다!)
alpoge

"최대 길이 케이"?
alpoge

천만에요, 카베 예, "최대한"것을 잊었습니다. 다시 편집했습니다.
Lamine

1
대답은 쉽습니다-숙제 질문입니까?
Sariel Har-Peled

자동 판매기 설명에 액세스 할 수 있습니까, 아니면 블랙 박스로만 사용할 수 있습니까?
Raphael

답변:


9

CFG 언어와 일반 언어의 교차점 계산 i=0kA케이 (이것은 상태 수에 케이"데드 엔드"상태 추가). 이제 결과가 비어 있는지 확인하십시오. 문법으로 변환하십시오 (결과는 다항식 크기를 가질 것이라고 생각합니다).

편집 : Kaveh는 다항식이라고 언급했습니다. 케이, 그래서 만약 케이 입력으로 주어지면 알고리즘은 지수 |케이|. 그러나 Kaveh는이 문제를 해결하는 방법을 찾았습니다. 원래 오토 마톤을 CFG로 변환하고 모든 터미널을 고정 터미널로 교체하십시오. 이제 반복 알고리즘을 사용하여 다음과 같이 각 비 터미널에 의해 생성 된 단어의 최소 크기를 찾으십시오.

로 모든 길이를 초기화 그런 다음 명백한 방식으로 모든 길이를 반복적으로 업데이트하십시오. 나는 (순서는 중요하지 않습니다) 에프()=(에프(),+에프(나는)). 주장 : 이것은영형() 반복 비 터미널의 수입니다. 그 이유는 최소 길이 단어를 생성하는 트리에서 비 터미널이 두 번 사용되지 않기 때문입니다. 각 "가장자리"는 처리하는 데 최대 하나의 반복이 필요합니다 (일부 가장자리는 병렬로 "업데이트"될 수 있음).


나는 또한 변환 PDA를 생각 CFG는 다항식입니다. 감사! 그래서 문제는P.
Lamine

가장 낮은 길이를 직접 계산할 수있는 방법이 있기 때문에 |케이|입력이 아닙니다. 그러나 왜 모든 터미널을 고정 터미널로 교체 해야하는지 이해할 수 없습니다. 알고리즘은 원래 터미널에서 올바르게 작동해야합니다.
Lamine

당신 말이 맞아, 실제로는 중요하지 않습니다.
Yuval Filmus

5

모든 알파벳 문자를 하나의 특정 문자로 변경하십시오. 이제 단일 문자에 PDA를 정의했습니다. 그 언어는 문맥이없는 문법입니다. 그러나 단일 문자에 대한 컨텍스트 프리 문법은 규칙적입니다. 따라서 CFG를 일반 언어로 변환 한 다음 길이가 k 인 단어가 포함되어 있는지 확인하십시오.

이제 이러한 모든 변환에는 지수 시간이 필요한 경향이 있지만 문제가 NP 완료 인 것 같지는 않습니다. 특히 다항식 시간을케이.

내가 틀렸을 수도 있고, 초기의 저격 답변에 대해 사과드립니다 ...

BTW, 단일 문자에 대한 CFG가 규칙적이라는 사실은 Parikh의 정리에 따릅니다. 직접적인 증거는 그리 어렵지 않지만. Parikh의 정리에 대한 자세한 내용은 링크를 참조하십시오-그것은 아름다운 결과입니다 ... http://www8.cs.umu.se/kurser/TDBC92/VT06/final/3.pdf


아니요, 저는 학생이 아닙니다. 내가 언급 한 문제는 처음에는 네트워크 문제로 자동화 된 것으로 모델링되었습니다. 다항식 솔루션을 찾는 것이 가치가 있는지 여부 만 알고 싶습니다.
Lamine

5
이 답변이 의견이 아니십니까?
Oleksandr Bondarenko

2
그렇습니다. 사리 엘, 이것을 의견으로 옮기거나 답을 줄 수 있습니까?
Suresh Venkat

@Suresh :이 사실을 알고있을 수도 있지만 이제 중재자는 답변을 댓글로 전환 할 수 있습니다 .
Ito Tsuyoshi

원래 답변을 의견으로 옮겼습니다. 이것은 새로운 답변입니다.
Suresh Venkat

0

아마도 차선책 일 수있는 방법 : Djikstra의 알고리즘을 실행하십시오. 그런 다음 각 최종 상태에 대해 거리를케이. 있다면케이, 동의하기. 받지 않다.

편집 : 위는 NFA에서만 작동합니다! 미안합니다.


(그러나 확실히 폴리 타임!)
alpoge

Dijkstra의 알고리즘이 문제를 해결할 수 있는지 확실하지 않습니다. 초기 상태와 최종 상태 사이의 최단 경로를 찾을 수 있습니다. 물론,이 경로를 통해 받아 들일 수있는 단어가 생성 될 수 있습니다. 그러나이 경로는 기본적이며 비 기본적 경로를 통해 단어를 받아 들일 수 있습니다. 그렇지 않으면 문맥이없는 문법이 어떤 단어를 생성 할 수 있는지를 결정하는 문제는 결정 가능하지만 그렇지 않습니다.
Lamine

CFL의 공허 테스트는 결정 가능합니다.
alpoge

(내가 오해라면 나를 다시 용서해주세요!)
alpoge

글쎄, '마킹'알고리즘을 사용하여이를 수행 할 수 있습니다 (CFG 제공)-터미널을 표시 한 다음 터미널을 파생시키는 것을 표시 한 다음 프로세스가 종료 될 때까지 표시 된 것을 파생시키는 것을 표시 한 다음 확인 시작 변수가 표시된 경우 또한 내 대답을 무시하십시오 .NFA에서해야 할 일입니다 (PDA는 아닙니다!).
alpoge
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.