오토 마톤은 디지털 컴퓨터의 추상 모델입니다. 디지털 컴퓨터는 완전히 결정적입니다. 그들의 상태는 언제든지 입력과 초기 상태에서 유일하게 예측할 수 있습니다.
실제 시스템을 모델링하려고 할 때 오토마타 이론에 비결정론을 포함시키는 이유는 무엇입니까?
오토 마톤은 디지털 컴퓨터의 추상 모델입니다. 디지털 컴퓨터는 완전히 결정적입니다. 그들의 상태는 언제든지 입력과 초기 상태에서 유일하게 예측할 수 있습니다.
실제 시스템을 모델링하려고 할 때 오토마타 이론에 비결정론을 포함시키는 이유는 무엇입니까?
답변:
예, 올바른 컴퓨터가 결정 론적 자동화입니다. 비결정론 적 모델은 이론적 목적에 더 유용하며, 결정 론적 솔루션이 정의에 대해 명확하지 않거나 (또는 문제 진술이라고 말하기) 해결책을 찾기가 거의 어렵다. 그런 다음 한 가지 접근 방식은 먼저 비교적 쉽게 디자인 할 수있는 비 결정적 모델을 디자인 한 다음 결정적 모델로 변환하는 것입니다. 아래에서는 예를 통해 의미하는 바를 보여 주려고 노력했습니다. 정규 표현식을 고려하십시오.
(01)*01(0 + 1)*
이제 위의 RE에서 생성 된 언어에 대한 DFA를 그리도록 요청 받았다고 가정하십시오.
FA 설계에 대한 나의 지식으로, 나는 (1)*
정규 표현식 의 선물이 FA (2) 에서 해당 루프가 필요하다는 것을 나타낼 때 a.b
다음과 같은 수단을 연결 한다는 것을 알고 있습니다.(q0)─a→(q1)─b→(q2)
그래서 주먹으로 시도하면 다음과 같은 NFA를 그립니다.
이는 생각 하지 결정적 솔루션하지만 쉽게 지정된 정규 표현식을 사용하여 설계 할 수있다 매우 간단한 FA 보인다. 위 정규 표현식과 NFA의 유사성을 보여주기위한 분석의 종류는 다음과 같습니다.
(01)*
01
(후 (01)*
)는 준다(q0)─0→(q1)─1→(q2)
(0 + 1)*
레이블 0, 1에 대해 상태 q 2 에서 자체 루프를 제공합니다.필자의 비유에 따르면 위에서 그린 FA는 주어진 RE에서 그리는 것이 비교적 간단하다고 생각합니다. 운 좋게도 유한 자율 클래스에서 모든 비 결정적 모델은 동등한 결정적 모델로 변환 될 수 있습니다. NFA를 DFA로 변환하는 알고리즘 방법이 있습니다. 따라서 위의 NFA를 DFA로 쉽게 변환 할 수 있습니다.
다른 부분은 불행히도 이것은 비 결정적 모델을 결정 론적 모델로 변환하는 것이 항상 가능하지는 않습니다. 예를 들어 결정 론적 푸시 다운 자동화를위한 클래스는 결정 론적 푸시 다운 자동화 클래스 " 벤치 다이어그램 확인"의 하위 집합이며 항상 변환 할 수는 없습니다 PDA 로의 NPDA.
일반적으로 비 결정적 솔루션을 결정적 솔루션으로 변환 할 수없는 경우 비 결정적 솔루션을 사용하여 전체 도메인 대신 하위 도메인 (또는 부분 도메인)에서 결정적 솔루션을 정의합니다. 또는 우리는 물론 다른 방법으로 솔루션을 정의합니다 (예 : 탐욕스러운 접근 방식). 물론 최적의 솔루션을 제공하지 못할 수도 있습니다 .
때때로 비 결정론은 비 결정적 기계 검색 및 역 추적 알고리즘의 모델이 될 수있는 예를 들어, 정확하고 효율적으로 몇 가지 복잡한 문제 / 솔루션을 설명하기위한 효과적인 메커니즘이다 (읽기 : 비 결정적 모델에서 어떻게 문자열 처리 철수를 사용하여 ). 반대로 결정 론적 모델은 효율적이고 최소화되며 중복성이 적은 솔루션을 더 잘 나타냅니다.
다음은 Wikipedia 의 비 결정적 알고리즘 사용 에서 인용하고 싶습니다 .
알고리즘 설계에서, 비 결정적 알고리즘은 알고리즘에 의해 해결 된 문제가 본질적으로 다수의 결과를 허용 할 때 (또는 결과가 발견 될 수있는 다수의 경로를 갖는 단일 결과가있을 때 각각 바람직하게 사용됨) 종종 사용된다. 결정적으로, 비 결정적 알고리즘이 생성하는 모든 결과는 알고리즘이 실행하는 동안 어떤 선택을하든 유효합니다.
컴퓨팅 이론에서 가장 유명한 미해결 문제인 P vs NP를 포함하여 비 결정적 알고리즘을 통해 많은 수의 문제를 개념화 할 수 있습니다.
으로 @keshlam 그의 언급 코멘트 : "비결정론은"연습에 하는 데 사용되는 일부 공정의 결과에 어떤 예측 불가능 성을 참조하십시오. 예를 들어, 동시 프로그램은 비 결정적 동작을 나타냅니다. 동일한 입력으로 동일한 프로그램을 두 번 실행하면 서로 다른 결과를 얻을 수 있습니다 ( 동시성 제어 메커니즘 이 적용되지 않은 경우 ). "비결정론의 유용성" 에서 이에 대해 자세히 알아보십시오 .
또한 다음 링크를 읽으라고 제안합니다.
1. 비결정론과 무작위성의 차이점은 무엇입니까?
2. 9.2.2 비 결정적 대 확률 론적 모델 : (A). 비결정론 적 : 나는 자연이 무엇을할지 모른다. (비). 확률론 : 저는 자연을 관찰하고 통계를 수집했습니다.
3. 비 결정적 프로그래밍
그것은 다른 방법입니다 : 수학적 모델로서 automata가 먼저 일어났습니다. 그리고 비결정론은 매우 자연 스럽습니다. 모든 경로를 어떤 순서로 끝까지 따라야하고 무한 가지에 의해 혼란을 겪고 있음을 지정하는 지저분한 방법 대신에 ... 비 결정론을 사용하십시오.
비결정론 적 프로그래밍 언어는 주류가 아니지만 Dijkstra의 GCL로 시작하는 유쾌한 역사를 가지고 있습니다 . 기계가 점점 더 많은 코어 (독립 프로세서)를 사용함에 따라 어떤 형태의 비결정론이 모든 프로그래밍에 적용되고 있습니다.
실제로 NFA를 사용할 수 있으므로 stackexchange 에서이 답변 을 확인하십시오 . 그 이유는 파워 셋 구성을 즉석에서 시뮬레이션 할 수 있기 때문입니다. 결정적 컴퓨터에 NFA을 시뮬레이션하기 위해, 우리는 단지 추적 유지 가능 일반적으로,이 숫자가 작을 것이다. NFA가 될 수 있다는 상태를 시뮬레이션 빠른 것 때문에. 실제 파워 셋 구성을 실행하는 것보다 훨씬 더 실용적입니다. 실제로 대부분의 세트에 거의 도달하지 않아도 결과 오토 마톤이 매우 클 수 있습니다.
비결정론은 클래스 NP를 정의하는 데 사용되는 계산 복잡성에도 중요합니다. NP 클래스에는 예를 들어 증인을 사용하는 등가의 다른 정의도 있습니다.
(이것은 다른 답변 중 일부를 다시 말하지만 어쨌든 게시 할 것입니다.)
당신은 씁니다 : 오토 마톤은 디지털 컴퓨터의 추상 모델입니다.
동의하지 않습니다! 오토마타는 컴퓨터가 컴퓨터를 실행하는 방법뿐만 아니라 인간이 어떻게 계산을 지정하는지 모델링합니다. 비결정론은 정확히 차이입니다. 우리의 사양은 종종 비 결정적입니다.
예를 들어, merge sort를 사용하십시오 . 병합 정렬은 정렬 할 항목을 대략 같은 크기의 두 반으로 나누고 병합 정렬을 사용하여 각 반을 정렬 한 다음 정렬 된 결과를 병합하여 정렬합니다. 이것은 완전히 병합 정렬의 아이디어를 지정하지만 결정적이지는 않습니다. 반쪽을 정렬하는 순서를 지정하지 않으며 (우리가 관심을 갖는 모든 경우에 동시에 수행 될 수도 있음) 정확한 방법을 지정하지 않습니다 분할을 결정하십시오. 단일 스레드 컴퓨터 프로그램으로 구현할 수있는 결정적이고 순차적 인 병합 정렬 버전에 도달하려면 이러한 세부 정보를 작성해야하지만 병합 정렬을 수행하는 특정 방법의 일부는 아닙니다. 병합 정렬 자체의 아이디어.
요리 알고리즘과 같은 일반적인 알고리즘에서도 마찬가지입니다. 어떤 사람들 은 알고리즘을 결정 론적이라고 정의하는데 ,이 경우에는 좀 더 일반적이고 제 생각에는 '알고리즘'에 대한보다 자연스러운 개념에는 다른 이름이 필요합니다.
비 결정적 사양으로 작업한다는 아이디어는 Dijkstra의 프로그래밍 방법으로 공식화되었습니다. Dijkstra의 프로그래밍 방법은 프로그램에서 충족시킬 사전 및 사후 조건 만 제공하는 사양으로 시작하며 결정적인 명령형 프로그램을 체계적으로 개발합니다. Dijkstra는 아마 다음과 같이 말했을 것입니다 : 분류 는 문제이며, 우리가 확립하려는 전제 조건과 사후 조건 사이의 관계입니다. 병합 정렬문제 사양과 결정 론적 솔루션의 중간에있는 방법입니다. 특히 결정 론적 병합 정렬 알고리즘은 구체적인 결정 론적 솔루션입니다. 그러나 최종 프로그램이 여전히 결정적이지 않은 동시 프로그램을 개발하는 데 동일한 일반적인 접근 방식을 사용할 수 있습니다. 이러한 프로그램은 예를 들어 분산 컴퓨팅 환경에서 실행될 수 있습니다.
우리는 비 결정적 기계를 만들 수 없습니다. 따라서 목표는 더 나은 기계를 만드는 개념을 사용하지 않는 것입니다. 오히려 비결정론은 계산을 이해하려고 할 때 유용한 개념입니다. 예를 들어, 우리는 이제 계산 성 관점에서 비결정론이 결정론보다 강력하지 않다는 것을 알고 있습니다. 이는 결정 론적 머신을 사용하여 비결정론 적 머신을 시뮬레이션 할 수 있음을 의미합니다. 그러나 복잡성 관점에서 비결정론은 예를 들어 문제에 대한 효율적인 솔루션을 찾는 어려움과 솔루션을 확인하는 어려움 (유명한 P 대 NP 문제) 간의 관계를 추론하고 이해하려고 시도합니다. . 등등. 따라서 비결정론을 연구하는 주된 이유는 이론적입니다.
Turing Machine 의 발명은 1936 년 Turing에 의해 이루어졌습니다. FSM은 같은 모델에 의해 도입 된 맥 컬록과 피츠 스탠포드 CS의에서 1943 년에 신경 생물학적 활동에 대한 모델로, 두 neurophysiologists 기록 페이지 :
유한 오토마타가 컴퓨터 과학의 한 분야가 된 흥미로운 역사는 광범위한 응용 분야를 보여줍니다. 유한 상태 기계의 개념을 처음으로 고려한 사람들은 생물 학자, 심리학자, 수학자, 엔지니어 및 일부 최초의 컴퓨터 과학자들로 구성되었습니다. 그들은 모두 뇌와 컴퓨터에서 인간의 사고 과정을 모델링하는 공통된 관심사를 공유했습니다. 두 신경 생리학자인 워런 맥컬 로크 (Warren McCulloch)와 월터 피츠 (Walter Pitts)는 1943 년에 유한 오토마타에 대한 설명을 처음으로 발표했습니다. 오토마타, 계산 및 사이버네틱스 이론. 나중에 두 명의 컴퓨터 과학자 인 GH Mealy와 EF Moore는 1955-56 년에 출판 된 별도의 논문에서 훨씬 더 강력한 기계에 대한 이론을 일반화했습니다. 유한 상태 기계, Mealy 기계 및 Moore 기계는 그들의 작업을 인정하여 명명되었습니다.
CS 역사가는 아니지만 McCulloch-Pitts 모델은 비결정론을 포함하지 않았고 Mealy - Moore 모델은 공식 / 이론적 개념을 자연스럽게 일반화 / 추천하는 데 포함되었다고 의심합니다 . DFA와 NFA는 동일한 표현력을 가지므로 실제 시스템을 모델링하려는 경우 둘 중 하나를 선택할 수 있습니다. 기본적인 차이점 중 하나는 NFA가 동등한 DFA보다 훨씬 작을 수 있다는 것 입니다 (예를 들어 데이터 / 정보 압축의 자연스러운 요소가 있음). NFA 연구 에는 자연의 측면 / 병렬 유사성도있다 .
우선 질문에 답변 한 모든 사람에게 감사의 말을 전하고 싶습니다. 모든 답변은 중요하고 유용한 정보를 추가합니다.하지만 초보자에게는 까다로운 질문이므로 이해하기에 충분한 시간이 필요합니다. 모든 답변과 일부 책에서 얻은 것을 요약하려고합니다.
실제로 나는 비 결정적 모델의 메커니즘에 관한 혼란을 겪었다. 나는 비 결정적 기계가 현실 세계에는 존재하지 않는 비 기계적 기계이기 때문에 항상 궁금했다. 나는 항상 Automata를 오늘날 완전히 결정론적인 컴퓨터와 비교했지만 실제로는 비결정론 적 모델을 제대로 이해하지 못했습니다. 이제 비결정론 적 모델을 잘 이해하고 있다고 생각합니다. 비결정론 적 머신은 항상 실행 경로를 따라가는 문자열을 받아들이는 머신입니다 (역 추적없이). 그러나 이것이 현실에서 어떻게 가능할 수 있습니까? : 현재의 컴퓨터가 미래를 예측하는 데 지능적이되는 것은 불가능합니다. 왜 비결정론인가?. 이 질문에 대한 답은 매우 까다 롭습니다. 오토마타 이론은 컴퓨터가 존재하지 않을 때 존재했습니다 (첫 번째 이론은 실용적 임). 순전히 이론적 인 주제이며 비결정론의 개념은 직관적으로 나 왔으며 'Automata Theory'라는 주제는 실제 컴퓨터를 다루지 않았습니다. 그러나 실제로 컴퓨터가 Automata Theory를 사용하면 실제 컴퓨터를 정확하게 정의 할 수 있습니다. 오늘날 컴퓨터의 한계는 무엇입니까? 알고리즘 문제는 컴퓨터에 매우 복잡하고 실용적이지 않습니다 (여기서 비피 부주의의 역할은 매우 중요합니다) 두 가지 복잡성 클래스 P와 NP를 구별 할 수 있습니다.)이 비현실적인 문제에 대한 해결책은 비교적 빠릅니다. 이것이 비결정론의 유용성입니다. 순전히 이론적 인 주제이며 비결정론의 개념은 직관적으로 나 왔으며, 'Automata Theory'라는 주제는 실제 컴퓨터를 다루지 않았습니다. 그러나 실제로 컴퓨터가 Automata Theory를 사용할 때 우리는 실제 컴퓨터를 정확하게 정의 할 수 있습니다. 오늘날 컴퓨터의 한계는 무엇입니까? 알고리즘 문제는 컴퓨터에 매우 복잡하고 실용적이지 않습니다. 두 가지 복잡성 클래스 P와 NP를 구별 할 수 있습니다.)이 비현실적인 문제에 대한 해결책은 비교적 빠릅니다. 이것이 비결정론의 유용성입니다. 순전히 이론적 인 주제이며 비결정론의 개념은 직관적으로 나 왔으며, 'Automata Theory'라는 주제는 실제 컴퓨터를 다루지 않았습니다. 그러나 실제로 컴퓨터가 Automata Theory를 사용할 때 우리는 실제 컴퓨터를 정확하게 정의 할 수 있습니다. 오늘날 컴퓨터의 한계는 무엇입니까? 알고리즘 문제는 컴퓨터에 매우 복잡하고 실용적이지 않습니다. 두 가지 복잡성 클래스 P와 NP를 구별 할 수 있습니다.)이 비현실적인 문제에 대한 해결책은 비교적 빠릅니다. 이것이 비결정론의 유용성입니다. 그러나 실제로 컴퓨터가 Automata Theory를 사용할 때 우리는 실제 컴퓨터를 정확하게 정의 할 수 있습니다. 오늘날 컴퓨터의 한계는 무엇입니까? 알고리즘 문제는 컴퓨터에 매우 복잡하고 실용적이지 않습니다. 두 가지 복잡성 클래스 P와 NP를 구별 할 수 있습니다.)이 비현실적인 문제에 대한 해결책은 비교적 빠릅니다. 이것이 비결정론의 유용성입니다. 그러나 실제로 컴퓨터가 Automata Theory를 사용할 때 우리는 실제 컴퓨터를 정확하게 정의 할 수 있습니다. 오늘날 컴퓨터의 한계는 무엇입니까? 알고리즘 문제는 컴퓨터에 매우 복잡하고 실용적이지 않습니다. 두 가지 복잡성 클래스 P와 NP를 구별 할 수 있습니다.)이 비현실적인 문제에 대한 해결책은 비교적 빠릅니다. 이것이 비결정론의 유용성입니다. 비교적 비현실적인 문제에 대한 해결책은 비교적 빠릅니다. 이것이 비결정론의 유용성입니다. 비교적 비현실적인 문제에 대한 해결책은 비교적 빠릅니다. 이것이 비결정론의 유용성입니다.
문제가 있으면 수정 해주세요.
비결정론은 결정론을 이해하는 데 도움이되기 때문에 유용하지만 다른 방법은 아닙니다. 비결정론이 더 큰 아이디어라고 말할 수 있습니다. 결정적 튜링 머신은 비 결정적 튜링 머신의 특수한 경우입니다. -비결정론은 오늘날 플랫폼에서 일부 문제를 찾기 어려운 이유를 이해하는 데 도움이 될 수 있습니다. 결정 론적 컴퓨팅 플랫폼에는 효율적인 솔루션이없는 많은 계산 문제가 있지만 비결정론 적 솔루션에는 효율적인 솔루션이있을 수 있음을 알고 있습니다. ... 상태, 인코딩, 비결정론 모두 링크되어 있습니다 http://people.cs.umass.edu/~rsnbrg/teach-eatcs.pdf
결정적 Turing 머신에서 규칙 세트는 주어진 상황에 대해 수행 할 조치를 최대 하나만 규정 합니다. 대조적으로 비 결정적 튜링 머신 (NTM) 은 주어진 상황에 대해 하나 이상의 조치를 규정하는 규칙 세트를 가질 수 있습니다 . http://en.wikipedia.org/wiki/Non-deterministic_Turing_machine 상태 전이를 잘 관리하여 둘 이상의 작업을 처리 할 수있는 소프트웨어 상자를 구축하면 결정적 시스템 이상의 성능을 얻을 수 있습니다.
비결정론이 왜 유용한 개념입니까?
결정론은 대칭을 깨뜨리는 경향이 강하다. 이러한 경향은 순차 결정론에 대해 훨씬 더 강하지 만 비순환 지향 그래프의 개념과 그러한 그래프의 위상 순서는 결정론과 순차 결정론의 차이를 무시할 수 있습니다. 비결정론은 결정론의 상위 집합으로, 더 많은 대칭을 보존 할 수 있습니다. 문제의 솔루션을 설계 할 때 비 결정적 솔루션으로 시작하면 유용한 대칭을 유지하고 솔루션 설명을 작고 간결하게 유지할 수 있습니다. 그런 다음 비 결정적 솔루션을 결정적 솔루션으로 변환하면서 구현 중 대칭 분석의 나중 단계를 위임 할 수 있습니다.
종종 비결정론은 부분 함수의 개념이 관계의 개념으로 대체됨을 의미합니다. 이 경우 비 결정적 시스템은 정방향 및 역방향으로 실행될 수 있지만 일반적으로 결정적 시스템에는 불가능합니다. 결정론을위한 총 함수와 비결정론을위한 다중 값 총 함수로 작업하는 경우 대칭은 더 이상 좋지 않지만 여전히 작동 할 수 있습니다.