카테고리 보관물: cs

cs

유한 오토마타의 세 가지 표현 형식을 모두 연구해야하는 이유는 무엇입니까? 방식을 모두 연구해야합니까? DFA가 할

DFA, NFA 및 엡실론 NFA를 사용하면 특정 정규 언어를 대표 할 수 있습니다. 이러한 표현 중 하나를 사용하여 동일한 정규 표현식에 도달 할 수 있는데, 왜 유한 오토마타의 세 가지 표현 방식을 모두 연구해야합니까? DFA가 할 수없는 NFA가 무엇을 할 수 있는지에 대한 설명이있을 수 있습니다. 즉 NFA는 불확실성 설계에 도움이 될 수 있습니다. 예를 들어 게임 (체스)을 디자인 할 때 NFA를 사용하여 쉽게 표현할 수있는 특정 위치에서 특정 조각을 이동하는 많은 옵션이 있습니다. 그러나 NFA 또는 DFA를 사용하여 동일한 작업을 수행 할 수있는 경우 엡실론 NFA는 어떻게 사용됩니까?



답변

네 번째 정규 문법을 추가하십시오. 다른 사람들이 있습니다 …

DFA + NFA에 대한 관심의 일부는 간단한 계산 모델이며 NFA (및 -NFA) 비결정론의 예 (보다 정교한 모델의 중요한 아이디어)입니다. DFA와 NFA가 동일한 언어 집합을 수용 함을 증명하기 위해 단순하고 이해하기 쉬운 설정에서 매우 중요한 현상을 탐색하고 있습니다.

ϵ

정규 표현식 (및 정규 문법)은 완전히 다른 형식이며 동일한 언어 집합을 설명합니다. 다시 말하지만,이 사실의 증거는 중요한 상호 관계를 탐구하며 형식주의가 매우 다른 것처럼 보일 수 있고 근본적으로 다른 개념을 기반으로하지만 동일한 언어를 설명하는 예입니다. 다시 말하지만 다소 간단한 설정입니다.

“실제”사용의 경우 정규식으로 시작하여 고성능 검색을위한 최소 DFA를 얻을 수 있습니다. 디지털 회로는 본질적으로 DFA이므로 컴퓨터 공학의 핵심 요소임을 이해해야합니다. 마지막으로, 시스템이 실제 DFA와 매우 거리가 멀어도 시스템을 이해하는 데 도움이 될 수 있더라도 시스템은 종종 외부 자극에서 “상태에있는”상태로 “다른 시스템으로 이동”하는 것으로 모델링 될 수 있습니다.

나중에 추가됨 : Raphael에서 언급했듯이 DFA를 만드는 데 많은 비용이 들고 NFA가 훨씬 작기 때문에 검색을 위해 NFA를 직접 해석하는 것이 더 효율적일 수 있습니다.


답변

DFA와 NFA의 다양한 형식 / 대응을 연구해야하는 이유는 매우 다양합니다. 다음은 고급 복잡성 이론에서 일부 선택된 주요 내용입니다.

  • NFA는 “병렬 계산”에 대한 흥미로운 모델입니다. NFA를 통한 상태의 발전은 병렬 버전의 DFA 계산으로 간주 할 수 있습니다. 따라서 DFA와 NFA 계산은 순차적 계산과 병렬 계산의 차이점을 반영합니다. 두 컨텍스트를 비교함으로써 문제의 고유 한 알고리즘 복잡성을 연구하는 데 도움이됩니다.

  • NFA는 종종 정규 표현식 일치 시스템 (유닉스 시대에 생성 된 최신 언어의 유비쿼터스)에서 주로 사용되며, 일반적으로 NFA로 변환 된 정규 표현식에 대한 설명을 허용 한 다음 DFA로 변환하여보다 효율적인 검색을 지원합니다.

  • 이 영역에 남아있는 몇 가지 공개 된 문제가 있으며 종종 DFA / NFA 서신을 바탕으로 연구됩니다. 예를 들어 DFA (cstheory stackexchange) 에 열려있는 문제가 있습니까?를 참조하십시오 . 놀랍게도, 그들 중 일부는 P 대 NP 문제, 즉 DFA의 교차 비 지속성을 포함하여 CS의 매우 깊은 영역에 묶여 있습니다. 또 다른 열린 영역은 예를 들어 DFA에 대한 최소 NFA를 계산하는 것 입니다.

  • 또한 일부 관련 통찰력에이 semifamous / highvoted 질문을 참조 cstheory.se : 깨달음은 내가 유한 오토마타를 공부 한 후 달성하는데있어 무엇을?

  • DFA와 NFA의 적용 범위는 매우 다양하며, 둘 사이의 대응 관계가 종종 활용됩니다. 문자열 패턴 일치는 위에서 언급되었지만 DFA / NFA 구성은 (자동화 된) 음성 인식에 자주 사용됩니다. 예를 들어이 인용 된 논문 : 음성 인식의 가중 유한 유한 상태 변환기 / Mohri, Pereira, Riley


답변

DFA는 다음 상태가 함수에 의해 결정되므로 NFA보다 구현이 더 쉽고 NFA는 NFA가 여러 경로 중에서 선택할 수 있기 때문에 사용자가 원하는 것을 출력으로 쉽게 표현할 수 있도록 도와줍니다. epsilon-NFA는 입력 심볼을 사용하지 않고 전환을 수행 할 수있는 NFA의 확장입니다.


답변

DFA의 주 수에는 불쾌한 것이 있습니다. 때때로 폭발 합니다 .

간단히 말해서, 주 수가 너무 많으면 (아직 유한하지만 우리는 실제 세계에 살고 있습니다), 약간의 속도 저하로 인한 복잡성에 대처하기 위해 추상화 수준을 높여야합니다. NFA 및 AFA와 같은 다른 모델은 일반 언어를 표현하는보다 간결한 방법을 제공해야합니다.


답변