이 그림을 보았을 때 문맥이없는 언어와 일반 언어는 효율적인 문제의 일부 (적절한) 입니다. 효율적인 문제는 해결할 수는 있지만 시간이 오래 걸릴 수 있기 때문에 모든 결정 가능한 문제의 하위 집합이라는 것을 완벽하게 이해하고 있습니다.
왜 모든 문맥 자유와 일반 언어를 효율적으로 decidable? 그것들을 해결하는 데 오랜 시간이 걸리지 않는다는 것을 의미합니까?
이 그림을 보았을 때 문맥이없는 언어와 일반 언어는 효율적인 문제의 일부 (적절한) 입니다. 효율적인 문제는 해결할 수는 있지만 시간이 오래 걸릴 수 있기 때문에 모든 결정 가능한 문제의 하위 집합이라는 것을 완벽하게 이해하고 있습니다.
왜 모든 문맥 자유와 일반 언어를 효율적으로 decidable? 그것들을 해결하는 데 오랜 시간이 걸리지 않는다는 것을 의미합니까?
답변:
정규 언어 멤버십은 사전 계산 된 언어 (최소)의 DFA를 시뮬레이션하여 시간 내에 결정될 수 있습니다 .
컨텍스트 프리 언어 멤버십은 CYK Algorithm에 의해 에서 결정될 수 있습니다 .
와 같이 없는 결정 가능한 언어가 있습니다 .E X P T I M E ∖ P
DC 에 의한 답변의 개선 / "세밀한 인쇄" : Chomsky Normal Form 형식의 모든 CFL을 CYK 알고리즘 으로 효율적으로 구문 분석 할 수 있으며 모든 CFL을 CNF로 변환 할 수 있습니다. 그러나 임의의 CFL을 CNF 로 변환 하면 일부 알고리즘에 따라 최악의 경우 지수 공간이 필요할 수 있습니다. (여기서 P- 시간 변환을 보장하는 알고리즘을 알지 못합니다. 다른 사람이 있습니까? 비 결정적 CFL 또는 모호한 것과 같은 모든 에지 / 최악의 경우를 고려해야 합니다 .) CNF 섹션의 Wikipedia 상태 변환 순서
더욱이, 문법 크기의 최악의 팽창은 [주 4] 변환 순서에 따라 달라집니다. | G | 사용 원래 문법 G의 크기를 나타 내기 위해, 최악의 경우의 크기 폭발은 사용 된 변환 알고리즘에 따라 ~ 일 수 있습니다. [6] : 72 2 | G |
따라서 효율적으로 구문 분석 할 수없는 CFL이있을 수 있습니다. 대부분의 프로그래밍 언어는 CNF (또는 아마도 CNF 또는 거의 CNF로 정의 됨) 로 효율적으로 변환 가능 하므로 "일반적인"언어에 대한 CFL 구문 분석은 P에서 "실제적으로"수행됩니다. 커서 검색에서 최근 논문을 찾으십시오. 예를 들어 Greibach의이 오래된 (1973) 연구 논문은 최악의 성능이 P에 의해 제한되지 않을 수도 있음을 나타내는 것으로 보입니다.