비결정론이 왜 유용한 개념입니까?


23

오토 마톤은 디지털 컴퓨터의 추상 모델입니다. 디지털 컴퓨터는 완전히 결정적입니다. 그들의 상태는 언제든지 입력과 초기 상태에서 유일하게 예측할 수 있습니다.

실제 시스템을 모델링하려고 할 때 오토마타 이론에 비결정론을 포함시키는 이유는 무엇입니까?


1
NTM을 처음 설명한 사람과 당시의 목적 / 목표가 무엇인지 묻는 것이 도움이 될 것입니다.
usul

2
기계가 결정적이라는 사실이 항상 코드가 의미하는 것은 아닙니다. 멀티 태스킹 / 멀티 스레딩을 수행 한 사람은 작업 전환이 발생하는 시간이 실제 용어로는 예측할 수 없다는 사실을 증명할 수 있으며, 동작을 결정 론적으로 보이도록 명시적인 인터록을 설계해야합니다. 기본적으로 상태에는 숨겨진 변수가 있습니다. 통신에서도 동일한 문제가 발생합니다. 저는 NDA가 이러한 문제를 해결하는 데 도움이되는지 잘 모르겠습니다. 저는 컴퓨터 과학자가 아닌 소프트웨어 엔지니어입니다. 그러나 실제로는 전제 조건이 지나치게 낙관적입니다.
keshlam

당신은 틀림없이, 멀티 쓰레딩에 대해 말할 때, 당신은 비 결정론을 당신은 기계를 형성하는 금속과 OS를 고려하는 경우 적어도. 재미있는 점은 코드 자체 결정적이라는 것입니다.
Raphael


@ keshlam 나는 내 대답에 당신의 요점을 추가했습니다.
Grijesh Chauhan

답변:


16

예, 올바른 컴퓨터가 결정 론적 자동화입니다. 비결정론 적 모델은 이론적 목적에 더 유용하며, 결정 론적 솔루션이 정의에 대해 명확하지 않거나 (또는 ​​문제 진술이라고 말하기) 해결책을 찾기가 거의 어렵다. 그런 다음 한 가지 접근 방식은 먼저 비교적 쉽게 디자인 할 수있는 비 결정적 모델을 디자인 한 다음 결정적 모델로 변환하는 것입니다. 아래에서는 예를 통해 의미하는 바를 보여 주려고 노력했습니다. 정규 표현식을 고려하십시오.

(01)*01(0 + 1)*  

이제 위의 RE에서 생성 된 언어에 대한 DFA를 그리도록 요청 받았다고 가정하십시오.

FA 설계에 대한 나의 지식으로, 나는 (1)* 정규 표현식 의 선물이 FA (2) 에서 해당 루프가 필요하다는 것을 나타낼 때 a.b다음과 같은 수단을 연결 한다는 것을 알고 있습니다.(q0)─a→(q1)─b→(q2)

그래서 주먹으로 시도하면 다음과 같은 NFA를 그립니다.

무화과

이는 생각 하지 결정적 솔루션하지만 쉽게 지정된 정규 표현식을 사용하여 설계 할 수있다 매우 간단한 FA 보인다. 위 정규 표현식과 NFA의 유사성을 보여주기위한 분석의 종류는 다음과 같습니다.

  1. 상태 질문에 루프 0 을위한되어야(01)*
  2. 01(후 (01)*)는 준다(q0)─0→(q1)─1→(q2)
  3. (0 + 1)*레이블 0, 1에 대해 상태 q 2 에서 자체 루프를 제공합니다.

필자의 비유에 따르면 위에서 그린 FA는 주어진 RE에서 그리는 것이 비교적 간단하다고 생각합니다. 운 좋게도 유한 자율 클래스에서 모든 비 결정적 모델은 동등한 결정적 모델로 변환 될 수 있습니다. NFA를 DFA로 변환하는 알고리즘 방법이 있습니다. 따라서 위의 NFA를 DFA로 쉽게 변환 할 수 있습니다.

무화과 -2

다른 부분은 불행히도 이것은 비 결정적 모델을 결정 론적 모델로 변환하는 것이 항상 가능하지는 않습니다. 예를 들어 결정 론적 푸시 다운 자동화를위한 클래스는 결정 론적 푸시 다운 자동화 클래스 " 벤치 다이어그램 확인"의 하위 집합이며 항상 변환 할 수는 없습니다 PDA 로의 NPDA.

일반적으로 비 결정적 솔루션을 결정적 솔루션으로 변환 할 수없는 경우 비 결정적 솔루션을 사용하여 전체 도메인 대신 하위 도메인 (또는 부분 도메인)에서 결정적 솔루션을 정의합니다. 또는 우리는 물론 다른 방법으로 솔루션을 정의합니다 (예 : 탐욕스러운 접근 방식). 물론 최적의 솔루션을 제공하지 못할 수도 있습니다 .

때때로 비 결정론은 비 결정적 기계 검색 및 역 추적 알고리즘의 모델이 될 수있는 예를 들어, 정확하고 효율적으로 몇 가지 복잡한 문제 / 솔루션을 설명하기위한 효과적인 메커니즘이다 (읽기 : 비 결정적 모델에서 어떻게 문자열 처리 철수를 사용하여 ). 반대로 결정 론적 모델은 효율적이고 최소화되며 중복성이 적은 솔루션을 더 잘 나타냅니다.

다음은 Wikipedia 의 비 결정적 알고리즘 사용 에서 인용하고 싶습니다 .

알고리즘 설계에서, 비 결정적 알고리즘은 알고리즘에 의해 해결 된 문제가 본질적으로 다수의 결과를 허용 할 때 (또는 결과가 발견 될 수있는 다수의 경로를 갖는 단일 결과가있을 때 각각 바람직하게 사용됨) 종종 사용된다. 결정적으로, 비 결정적 알고리즘이 생성하는 모든 결과는 알고리즘이 실행하는 동안 어떤 선택을하든 유효합니다.

컴퓨팅 이론에서 가장 유명한 미해결 문제인 P vs NP를 포함하여 비 결정적 알고리즘을 통해 많은 수의 문제를 개념화 할 수 있습니다.

으로 @keshlam 그의 언급 코멘트 : "비결정론은"연습에 하는 데 사용되는 일부 공정의 결과에 어떤 예측 불가능 성을 참조하십시오. 예를 들어, 동시 프로그램은 비 결정적 동작을 나타냅니다. 동일한 입력으로 동일한 프로그램을 두 번 실행하면 서로 다른 결과를 얻을 수 있습니다 ( 동시성 제어 메커니즘 이 적용되지 않은 경우 ). "비결정론의 유용성" 에서 이에 대해 자세히 알아보십시오 .

또한 다음 링크를 읽으라고 제안합니다.
1. 비결정론과 무작위성의 차이점은 무엇입니까?
2. 9.2.2 비 결정적 대 확률 론적 모델 : (A). 비결정론 적 : 나는 자연이 무엇을할지 모른다. (비). 확률론 : 저는 자연을 관찰하고 통계를 수집했습니다.
3. 비 결정적 프로그래밍


@Grijest : 엄청난 발전에 대한 많은 감사의 말 한 가지 혼란 : "반대 적으로 결정 론적 모델은 효율적이고 최소화되고 덜 중복되는 솔루션을 더 잘 나타냅니다."-하지만 결정 론적 모델은 비결정론 적 모델보다 덜 효율적이라고 생각합니다. P보다 더 복잡하지 않습니까?)
tanmoy

@tan 실제로 "효율적"이라는 단어를 사용하는 것은 잘못되었습니다. 예, 비 결정적 모델이 결정적 모델보다 더 유능하다는 것이 맞습니다. 결정 론적 모델이 다루는 문제의 종류는 비결정론 적 모델의 부분 집합입니다.
Grijesh Chauhan

어떤 맥락에서 결정 론적 모델이 비결정론 적 모델보다 "효율적"입니까?
tanmoy

@tan 추가 작업을 수행하고 싶을 때 (예 : FA를 RE로 변환하거나, 펌핑 보조 또는 기타를 증명하려는 경우) 결정적 모델이 더 나은 결과를 제공한다고 가정합니다 (효율적이라고 말함).
Grijesh Chauhan

@tan 모호한 문법을 ​​이해하십니까?
Grijesh Chauhan

9

그것은 다른 방법입니다 : 수학적 모델로서 automata가 먼저 일어났습니다. 그리고 비결정론은 매우 자연 스럽습니다. 모든 경로를 어떤 순서로 끝까지 따라야하고 무한 가지에 의해 혼란을 겪고 있음을 지정하는 지저분한 방법 대신에 ... 비 결정론을 사용하십시오.

비결정론 적 프로그래밍 언어는 주류가 아니지만 Dijkstra의 GCL로 시작하는 유쾌한 역사를 가지고 있습니다 . 기계가 점점 더 많은 코어 (독립 프로세서)를 사용함에 따라 어떤 형태의 비결정론이 모든 프로그래밍에 적용되고 있습니다.


나는 당신의 대답의 첫 부분이 사실 틀렸다고 생각합니다. 왜 오토마타가 먼저 일어났다 고 생각합니까? DFA와 NFA는 Turing defined TM 이후 10 년 이상 정의되었습니다. cstheory
Artem Kaznatcheev

@ArtemKaznatcheev, 튜링 머신 모델은 오토 마톤이며, 컴퓨터보다 10 년 이상 앞서 있습니다.
vonbrand

예, 그러나 사람들이 automata를 말할 때 TM을 의미하지는 않지만 유한 상태 automata 및 직접 확장 (PDA, NPDA 등)을 의미합니다. 내가 역사를 위해 연결 한 질문을 보면 TM과 폰 노이만 아키텍처가 현재 우리가 오토마타 이론이라고 부르는 것과 독립적으로 개발되었음을 알 수 있습니다.
Artem Kaznatcheev

4
@ArtemKaznatcheev, DFA / NFA, PDA, LBA, TM은 모두 오토마타입니다. 변환기와 마찬가지로 (출력이있는 FA, 출력이있는 PDA).
vonbrand

1
마지막 단락이 잘못되었습니다. 프롤로그는 GCL보다 이전 버전이며 여전히 주류입니다. 물론 프롤로그는 PLANNER와 같은 이전의 비 결정적 프로그래밍 언어를 기반으로 진공 상태로 설계되지 않았습니다. 크레딧은 아마도 1965 년부터 Golomb과 Baumert "Backtrack Programming"에 갔을 것입니다.
Pseudonym

7

실제로 NFA를 사용할 수 있으므로 stackexchange 에서이 답변 을 확인하십시오 . 그 이유는 파워 셋 구성을 즉석에서 시뮬레이션 할 수 있기 때문입니다. 결정적 컴퓨터에 NFA을 시뮬레이션하기 위해, 우리는 단지 추적 유지 가능 일반적으로,이 숫자가 작을 것이다. NFA가 될 수 있다는 상태를 시뮬레이션 빠른 것 때문에. 실제 파워 셋 구성을 실행하는 것보다 훨씬 더 실용적입니다. 실제로 대부분의 세트에 거의 도달하지 않아도 결과 오토 마톤이 매우 클 수 있습니다.

비결정론은 클래스 NP를 정의하는 데 사용되는 계산 복잡성에도 중요합니다. NP 클래스에는 예를 들어 증인을 사용하는 등가의 다른 정의도 있습니다.


답을 이해했지만 제대로 파악할 수없는 경우 비결정론을 사용하여 파워 셋 구성을 쉽게 수행 할 수 있다는 사실을 자세히 설명해 주시겠습니까?
tanmoy

"비결정론은 클래스 NP를 정의하는 데 사용되는 계산 복잡성에도 중요합니다." -NP가 유용한 개념이라고 가정하는 경우에만 비결정론의 중요성을 지원합니다. 이는 비결정론이 유용한 경우에만 해당됩니다.
Raphael

@Raphael NP-completeness는 비결 정성에 대한 입장에 관계없이 중요한 개념입니다.
Yuval Filmus

2
@Tanmoy 결정적이지 않으면 파워 셋 구성이 필요하지 않지만 불행히도 실제 컴퓨터는 결정적입니다. 그럼에도 불구하고 NFA를 먼저 DFA로 변환하는 대신 NFA를 직접 시뮬레이션하는 것이 더 쉬울 수 있습니다. 자세한 내용은 링크 된 답변을 확인하십시오.
Yuval Filmus

4

오토마타가 모델이라는 것을 올바르게 설명하므로 비결정론 적 사용에는 두 가지 부분이 있습니다.

  1. 실제 문제를 모델링 할 때 사용하십시오.

    또한 비 결정적 오토마타는보다 간결한 언어 표현을 제공 할 수 있습니다. 예를 들어, 최소 등가 DFA가 기하 급수적으로 큰 NFA가 있다는 것은 잘 알려져 있습니다.

  2. 이론적으로 사용하십시오.

    비결정론을 사용하면 증명을 단순화 할 수 있습니다. 예를 들어 정규식을 유한 오토마타로 변환하는 것을 참조하십시오.


4

(이것은 다른 답변 중 일부를 다시 말하지만 어쨌든 게시 할 것입니다.)

당신은 씁니다 : 오토 마톤은 디지털 컴퓨터의 추상 모델입니다.

동의하지 않습니다! 오토마타는 컴퓨터가 컴퓨터를 실행하는 방법뿐만 아니라 인간이 어떻게 계산을 지정하는지 모델링합니다. 비결정론은 정확히 차이입니다. 우리의 사양은 종종 비 결정적입니다.

예를 들어, merge sort를 사용하십시오 . 병합 정렬은 정렬 할 항목을 대략 같은 크기의 두 반으로 나누고 병합 정렬을 사용하여 각 반을 정렬 한 다음 정렬 된 결과를 병합하여 정렬합니다. 이것은 완전히 병합 정렬의 아이디어를 지정하지만 결정적이지는 않습니다. 반쪽을 정렬하는 순서를 지정하지 않으며 (우리가 관심을 갖는 모든 경우에 동시에 수행 될 수도 있음) 정확한 방법을 지정하지 않습니다 분할을 결정하십시오. 단일 스레드 컴퓨터 프로그램으로 구현할 수있는 결정적이고 순차적 인 병합 정렬 버전에 도달하려면 이러한 세부 정보를 작성해야하지만 병합 정렬을 수행하는 특정 방법의 일부는 아닙니다. 병합 정렬 자체의 아이디어.

요리 알고리즘과 같은 일반적인 알고리즘에서도 마찬가지입니다. 어떤 사람들 알고리즘을 결정 론적이라고 정의하는데 ,이 경우에는 좀 더 일반적이고 제 생각에는 '알고리즘'에 대한보다 자연스러운 개념에는 다른 이름이 필요합니다.

비 결정적 사양으로 작업한다는 아이디어는 Dijkstra의 프로그래밍 방법으로 공식화되었습니다. Dijkstra의 프로그래밍 방법은 프로그램에서 충족시킬 사전 및 사후 조건 만 제공하는 사양으로 시작하며 결정적인 명령형 프로그램을 체계적으로 개발합니다. Dijkstra는 아마 다음과 같이 말했을 것입니다 : 분류 는 문제이며, 우리가 확립하려는 전제 조건과 사후 조건 사이의 관계입니다. 병합 정렬문제 사양과 결정 론적 솔루션의 중간에있는 방법입니다. 특히 결정 론적 병합 정렬 알고리즘은 구체적인 결정 론적 솔루션입니다. 그러나 최종 프로그램이 여전히 결정적이지 않은 동시 프로그램을 개발하는 데 동일한 일반적인 접근 방식을 사용할 수 있습니다. 이러한 프로그램은 예를 들어 분산 컴퓨팅 환경에서 실행될 수 있습니다.


2

우리는 비 결정적 기계를 만들 수 없습니다. 따라서 목표는 더 나은 기계를 만드는 개념을 사용하지 않는 것입니다. 오히려 비결정론은 계산을 이해하려고 할 때 유용한 개념입니다. 예를 들어, 우리는 이제 계산 성 관점에서 비결정론이 결정론보다 강력하지 않다는 것을 알고 있습니다. 이는 결정 론적 머신을 사용하여 비결정론 적 머신을 시뮬레이션 할 수 있음을 의미합니다. 그러나 복잡성 관점에서 비결정론은 예를 들어 문제에 대한 효율적인 솔루션을 찾는 어려움과 솔루션을 확인하는 어려움 (유명한 P 대 NP 문제) 간의 관계를 추론하고 이해하려고 시도합니다. . 등등. 따라서 비결정론을 연구하는 주된 이유는 이론적입니다.


문맥없는 것과 결정적인 문맥없는?
alto

@alto 어떻습니까?
babou

@babou 나는 "비결정론이 결정론보다 강력하지 않다"는 지적을하려했다. NPDA는 PDA보다 강력합니다.
alto

1
@alto : 아니오, 당신은 진술을 오해하고 있습니다. 계산 능력의 관점에서 보면 계산 리소스가 얼마나 필요한지 독립적으로 해결할 수있는 문제 클래스 (또는 원하는 경우 언어)가 동일하므로 완전히 동일합니다. 실제로 결정적이지 않은 머신을 비 결정적 머신으로 시뮬레이션 할 수 있습니다. 다시 말하지만, 필요한 시간과 공간은 계산 가능성 맥락에서 중요하지 않습니다.
Massimo Cafaro

1
@MassimoCafaro 이론적으로는 더 이상 동의하지 않았습니다. 실제로 의미론에 대해 퀴즈를 선호합니다.
alto

2

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 연구 에는 자연의 측면 / 병렬 유사성도있다 .


3
이봐, 난 당신이 프로필을보고 의도적으로 당신의 답변을 다운 투표하는 사람처럼 보입니다 ( 두 개의 다운 투표자가있는 모든 곳 ) ...이 답변은 잘못된 것이 아닙니다 . 대답은 유용한 정보를 추가합니다. +1
Grijesh Chauhan

0

우선 질문에 답변 한 모든 사람에게 감사의 말을 전하고 싶습니다. 모든 답변은 중요하고 유용한 정보를 추가합니다.하지만 초보자에게는 까다로운 질문이므로 이해하기에 충분한 시간이 필요합니다. 모든 답변과 일부 책에서 얻은 것을 요약하려고합니다.

실제로 나는 비 결정적 모델의 메커니즘에 관한 혼란을 겪었다. 나는 비 결정적 기계가 현실 세계에는 존재하지 않는 비 기계적 기계이기 때문에 항상 궁금했다. 나는 항상 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를 구별 할 수 있습니다.)이 비현실적인 문제에 대한 해결책은 비교적 빠릅니다. 이것이 비결정론의 유용성입니다. 비교적 비현실적인 문제에 대한 해결책은 비교적 빠릅니다. 이것이 비결정론의 유용성입니다. 비교적 비현실적인 문제에 대한 해결책은 비교적 빠릅니다. 이것이 비결정론의 유용성입니다.

문제가 있으면 수정 해주세요.


비결정론 적 머신은 항상 실행 경로를 따라가는 스트링을 받아들이는 머신 이라고 말하는 것은 잘못 입니다 . 그렇게하지 않습니다! 비 결정적 시스템은 실행 중에 특정 비예 정적 (= 비 결정적) 선택을 수행 할 수있는 작업을 수행하는 시스템입니다. 그러한 기계에 대해 비현실적인 것은 없습니다. 예를 들어 환경에 그러한 선택을하도록 요청할 수 있습니다. 그런 다음 이러한 머신은 특정 선택 항목이 수락 상태를 생성하도록 유지하는 작업에 적용됩니다.
reinierpost

@reinierpost : 비결정론 적 머신은 실생활에 존재한다고합니다.
tanmoy

예. 예를 들면 다음과 같습니다. 자동차를 운전 중이고 따라갈 경로를 결정하지 않았다고 가정합니다. 예를 들어, 목표없이 운전하거나 인간 네비게이터 또는 내비게이션 장치에서 지시를 받고있을 수 있습니다. 자동차와 당신은 장소를 운전하는 비 결정적 시스템입니다. 당신은 트래픽을 통해 이동하고 어느 방향으로 선택을 계속 발생합니다. 당신과 자동차에있어서, 이러한 선택은 비 결정적입니다 : 당신은 어느 방향으로 가야할지 결정하지 않지만, 그 결정이 내려지면, 당신은 그것을 따라갈 것입니다.
reinierpost

@reinierpost : 비 결정적 컴퓨터가 있습니까? 내 대답은 아니요입니다. 그것이 존재한다면 NP 문제는 다항식 시간 복잡성을 가질 것이기 때문이다. 그렇지 않습니까?
tanmoy

컴퓨터가 결정적인지 비 결정적인지 여부는 컴퓨터를 보는 방법에 따라 다릅니다. 컴퓨터가 멈추고 사용자가 무언가를 할 때까지 기다릴 때 다음 동작은 사용자의 행동에 따라 달라 지므로 결정적이지 않은 선택이라고 말할 수 있습니다. 아니요, 이것이 P = NP를 의미하지는 않습니다.
reinierpost

0

비결정론은 결정론을 이해하는 데 도움이되기 때문에 유용하지만 다른 방법은 아닙니다. 비결정론이 더 큰 아이디어라고 말할 수 있습니다. 결정적 튜링 머신은 비 결정적 튜링 머신의 특수한 경우입니다. -비결정론은 오늘날 플랫폼에서 일부 문제를 찾기 어려운 이유를 이해하는 데 도움이 될 수 있습니다. 결정 론적 컴퓨팅 플랫폼에는 효율적인 솔루션이없는 많은 계산 문제가 있지만 비결정론 적 솔루션에는 효율적인 솔루션이있을 수 있음을 알고 있습니다. ... 상태, 인코딩, 비결정론 모두 링크되어 있습니다 http://people.cs.umass.edu/~rsnbrg/teach-eatcs.pdf

결정적 Turing 머신에서 규칙 세트는 주어진 상황에 대해 수행 할 조치를 최대 하나만 규정 합니다. 대조적으로 비 결정적 튜링 머신 (NTM) 은 주어진 상황에 대해 하나 이상의 조치를 규정하는 규칙 세트를 가질 수 있습니다 . http://en.wikipedia.org/wiki/Non-deterministic_Turing_machine 상태 전이를 잘 관리하여 둘 이상의 작업을 처리 할 수있는 소프트웨어 상자를 구축하면 결정적 시스템 이상의 성능을 얻을 수 있습니다.


나는 현실에 대한 혐의 링크가 전혀 도움이되지 않을 것이라고 확신합니다. 비결정론 적 기계를 (최소한 오늘날) 만들 수 없기 때문에 완전히 이론적 인 구조라는 것이 분명합니다.
Raphael

비결정론 적 결정이 머신 외부의 무언가에 의해 결정되도록하여 비결정론 적 머신을 구축 할 수 있습니다.
reinierpost

@ reinierpost, 더 중요한 것은 비 결정적 기계를 기하 급수적 오버 헤드없이 결정 론적 기계로 만들 수 있다는 것입니다. 사 비치 정리를 보라. en.wikipedia.org/wiki/Savitch's_theorem
Tom

@ 라파엘, 실제 세계에 대한 언급이 중요합니다. 캐싱이 작동하는 이유는 무엇입니까? 궁극적으로 모든 데이터의 소스 인 실제 세계의 이벤트는 정규 분포를 따릅니다. Temporal locality : permanentscope.blogspot.co.at/2009/11/…
Tom Tom

@ reinierpost 그리고 외부는 Turing이 oracle machine이라고 불렀습니다. 캐시에서 나오는 데이터 나 멀티 테이프 머신과 같은 데이터이거나 랜덤 액세스 메모리를 활용하는 경우라고 생각할 수 있습니다.
Tom

0

비결정론이 왜 유용한 개념입니까?

결정론은 대칭을 깨뜨리는 경향이 강하다. 이러한 경향은 순차 결정론에 대해 훨씬 더 강하지 만 비순환 지향 그래프의 개념과 그러한 그래프의 위상 순서는 결정론과 순차 결정론의 차이를 무시할 수 있습니다. 비결정론은 결정론의 상위 집합으로, 더 많은 대칭을 보존 할 수 있습니다. 문제의 솔루션을 설계 할 때 비 결정적 솔루션으로 시작하면 유용한 대칭을 유지하고 솔루션 설명을 작고 간결하게 유지할 수 있습니다. 그런 다음 비 결정적 솔루션을 결정적 솔루션으로 변환하면서 구현 중 대칭 분석의 나중 단계를 위임 할 수 있습니다.

종종 비결정론은 부분 함수의 개념이 관계의 개념으로 대체됨을 의미합니다. 이 경우 비 결정적 시스템은 정방향 및 역방향으로 실행될 수 있지만 일반적으로 결정적 시스템에는 불가능합니다. 결정론을위한 총 함수와 비결정론을위한 다중 값 총 함수로 작업하는 경우 대칭은 더 이상 좋지 않지만 여전히 작동 할 수 있습니다.


구체적인 예를 들어 줄 수 있습니까? 여기서 "대칭"의 의미를 이해하기가 어렵습니다.
Raphael

@Raphael (01) * 01 (0 + 1) *에서 (0 + 1) * 10 (10) *로 반전하여 입력 된 문자열을 인식하고이 반전을 역 결정을 통해 비결정 기계에 적용하는 방법 화살표와 스와핑 시작 및 종료 상태? 유한 상태 머신에 대해 훨씬 더 흥미로운 예제가 있는지 확실하지 않지만 대신 PDA에 대한 흥미로운 예제를 생각해 볼 수 있습니다.
Thomas Klimpel

나는 이진 관계의 가역성, 하위 확률 적 행렬 및 부분 함수 에 대한 블로그 게시물에서 비슷한 질문에 대한 내 대답에 대해 썼습니다 .
Thomas Klimpel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.