무작위 알고리즘과 비 결정적 알고리즘의 차이점과 관계는 무엇입니까?


30

무작위 알고리즘과 비 결정적 알고리즘의 차이점과 관계는 무엇입니까?

위키 백과에서

확률 적 알고리즘은 그 로직의 일부로서 난수의 정도를 사용하는 알고리즘이다. 이 알고리즘은 일반적으로 가능한 모든 랜덤 비트 선택에 대해 "평균 경우"에서 우수한 성능을 달성하기 위해 동작을 안내하기 위해 보조 입력으로 균일하게 랜덤 비트를 사용합니다. 공식적으로, 알고리즘의 성능은 임의의 비트에 의해 결정된 임의의 변수 일 것이다; 따라서 실행 시간 또는 출력 (또는 둘 다)은 임의의 변수입니다.

비 결정적 알고리즘은 결정 론적 알고리즘 반대로, 다른 실행에 다른 동작을 전시 할 수있는 알고리즘이다. 알고리즘이 실행마다 다르게 작동하는 방법에는 여러 가지가 있습니다. 동시 알고리즘은 경쟁 조건으로 인해 다르게 서로 다른 실행에 수행 할 수 있습니다. 확률 알고리즘 '행동들 난수 발생기에 따라 달라집니다. 비 결정적 다항식 시간의 문제를 해결하는 알고리즘은 실행 중에 선택한 사항에 따라 다항식 시간 또는 지수 시간으로 실행될 수 있습니다.

무작위 알고리즘과 확률 알고리즘은 동일한 개념입니까?

그렇다면 무작위 알고리즘은 일종의 비 결정적 알고리즘입니까?


혼동의 일부는 "비결정론 적"과 "결정적이지 않은"소리가 같은 것을 의미하는 것처럼 들리지만 "결정 론적"은 "무작위 적이 지 않은"과 "비 결정적이지 않은"을 의미하기 때문에 발생한다고 생각합니다. 따라서 "무작위"와 "비결정론 적"은 알고리즘이 "결정적이지 않은"방법 일 수 있지만 "비결정론 적"은 특정 기술적 정의를 가지고 있으며 단순히 "결정 론적"의 반향이 아닙니다.
Joe

답변:


24

비 결정적 알고리즘은 확률 적 알고리즘과 매우 다릅니다.

확률 알고리즘은 코인 토스를 사용하고 "대부분"작동하는 알고리즘입니다. 예를 들어, 무작위로 정렬 된 quicksort 변형은 예상 시간 (높은 확률) 으로 에서 작동하지만 운이 좋지 않으면 만큼 걸릴 수 있습니다 . 확률 알고리즘은 실용적이며 RSA 키 생성시 (예 : 비밀 키의 두 가지 요소가 주요한지 테스트하기 위해) 컴퓨터에서 사용됩니다. 동전 던지기를 사용하지 않는 확률 알고리즘을 "결정적"이라고도합니다.Θ(nlogn)Θ(n2)

비 결정적 알고리즘은 "힌트가 필요하지만"항상 올바른 알고리즘입니다. 잘못된 힌트를 제공하여 속일 수는 없습니다. 예를 들어, 여기에 비 결정적 알고리즘입니다 요인 정수 :의 인수 분해 추측 , 모든 요소 (즉, 일에 대한 "빠른 -에 - 이론"결정 론적 알고리즘이) 주요 있는지 확인합니다. 이 알고리즘은 매우 빠르며 잘못된 힌트를 거부합니다. 대부분의 사람들은 무작위 알고리즘이 정수를 빠르게 고려할 수 없다고 생각합니다. 분명히이 계산 모델은 현실적이지 않습니다.nnn

비 결정적 알고리즘에 관심을 갖는 이유는 무엇입니까? 효율적인 비 결정적 알고리즘을 갖는 결정 문제 로 구성되는 NP라고하는 문제 클래스가 있습니다 . 대부분의 사람들은이 클래스에서 가장 어려운 문제, 즉 NP- 완전 문제는 효율적인 결정 론적 알고리즘 (또는 무작위 화 된 알고리즘)을 가지고 있지 않다고 생각합니다. 이것을 P 대 NP 질문이라고합니다. 많은 자연 문제가 NP- 완전이기 때문에, 실제로는 최악의 경우에 효과적으로 해결할 수 없는지 (실제로 실제로 발생하는 사례가 실제로 적절한 시간에 해결 될 수 있는지)를 아는 것이 흥미 롭습니다.


감사! (1) NP 문제는 다항식 시간에 비 결정적 튜링 머신의 알고리즘으로 해결할 수있는 문제입니다. "비결정론 적 튜링 머신의 알고리즘"과 "결정 론적 튜링 머신의 비 결정적 알고리즘"은 어떤 의미에서 동등한가? (2) 확률 알고리즘과 무작위 알고리즘이 동일한 개념이라고 생각하십니까? (3) 또한 Wikipedia는 동시 알고리즘과 확률 알고리즘이 두 가지 종류의 비 결정적 알고리즘이 잘못되었다고 생각합니까?
Tim

1
나는 비결정론의 인증서 풍미가 무작위 화와의 차이점을 명확히하는 데 도움이되지 않는다고 생각합니다.
Raphael

(1) 그렇습니다. 두 사람은 같습니다. (2) 이들은 동일한 개념에 대한 두 가지 이름입니다. (3) Wikipedia는 다른 유형의 알고리즘에 대한 몇 가지 예를 제시하지만 프레젠테이션이 잘못 될 수 있습니다. 병렬 및 확률 알고리즘은 비 결정적이지 않습니다.
유발 Filmus

4
@ShelbyMooreIII 비결정론은 재귀 이론과 이론 컴퓨터 과학에서 매우 특정한 기술적 의미를 갖는다.
Yuval Filmus

1
Yuval, 건설적이지 않거나 쓸모가 없다고 생각되는 의견을 표시하십시오. 그런 다음 제거하겠습니다.
Raphael

15

알고리즘은 주어진 입력에서 입력과 특정 관계가있는 원하는 출력으로 가져올 방법을 지정합니다. 우리는이 알고리즘이 어느 시점에서 알고리즘의 다음 단계가 그 방법의 일부로 수행되어야하고, 입력이나 지금까지 계산 된 부분 데이터에 의존하여 수행되어야하는 것이 정확하고 명확하게 지정된다면 결정적이라고 말하지만, 항상 고유하게 식별됩니다.

비결정론은 알고리즘의 일부가 미지정 상태로 남아 있거나 심지어 지정되지 않았 음을 의미합니다. 예를 들어, "int i = 0과 n 사이의 짝수"는 지정되지 않았습니다. 이는이 시점에서 지정된 고유 한 동작이 없음을 의미합니다.

이 구별이 유용하기 위해서는 (결정 론적) 알고리즘에 대한 '정상적인'개념의 '정확성'개념이 필요합니다. 비공식적으로 "알고리즘은 항상 내가 계산하고 싶은 것을 계산합니다". 비 결정적 알고리즘에 대해 정확성이 무엇을 의미하는지에 대해 생각하는 것이 흥미로워지며, 지정되지 않은 명령어에서 가능한 선택을 고려해야합니다.

비결정론의 정확성을 정의하는 두 가지 방법이 있습니다. 첫 번째는 다소 간단하고 흥미롭지 않습니다. 정확성은 "알고리즘은 내가 원하는 모든 시퀀스를 선택할 수 있도록 항상 알고리즘으로 계산하고 싶은 것을 계산합니다"를 의미합니다. 일부 의사 코드의 작성자가 너무 게으 르면 숫자를 선택하기가 너무 느리고 "pick 0"이 알고리즘을 결정 론적으로 만들었을 때 "0과 n 사이의 짝수를 고르십시오"라고 말합니다. 본질적으로 모든 비결정론을 어떤 선택의 결과로 대체함으로써 알고리즘을 결정 론적으로 만들 수 있습니다.

이것은 또한 두 번째 단락에서 언급 된 '비결정론'입니다. 이것은 병렬 알고리즘의 비결정론이기도합니다.이 알고리즘에서는 실행이 정확히 어떤 모양인지 확실하지 않지만 정확히 무슨 일이 있든 상관없이 항상 작동한다는 것을 알고 있습니다 (그렇지 않으면 병렬 알고리즘이 잘못됨).

비 결정적 알고리즘의 정확성에 대한 흥미로운 정의는 "알고리즘은 내가 원하는 것을 선택하고, 어떤 선택 순서를 선택할 수 있는지 항상 알고리즘을 계산합니다 "입니다. 이것은 알고리즘이 틀린 답을 만들거나 무한 루프에 빠지게 만든다는 점에서 잘못된 선택이있을 수 있음을 의미합니다. "0과 n 사이의 짝수를 고르십시오"예에서, 아마도 4와 16은 올바른 선택이지만 다른 모든 숫자는 틀리며,이 숫자는 입력, 부분 결과 및 지금까지의 선택에 따라 달라질 수 있습니다.

컴퓨터 과학에서 사용될 때 비결정론은 일반적으로 비결정론 적으로 0 또는 1을 선택하는 것으로 제한됩니다. 그러나 많은 비트를 비결정론 적으로 선택하면 비결정론 적 긴 숫자 또는 다른 객체를 생성하고 비결정론 적 선택을 할 수 있으므로 거의 결정하기 어렵습니다. (적용 가능한 경우) 적용 가능성을 제한합니다. 적용 가능성이 제한되면 비결정론이 너무 강력했습니다.

비결정론은 인증서 기반 결정 론적 알고리즘, 즉 인스턴스에 지정된 속성을 확인하는 알고리즘과 해당 속성에 대한 인증서와 같은 강력한 도구입니다. 한 방향으로 인증서를 결정적으로 추측 할 수 있으며, 다른 방향으로 프로그램의 비 결정적 추측에 대한 모든 '올바른'답을 포함하는 인증서를 제공 할 수 있습니다.

우리가 혼합 시간에 러닝 타임을 던지면 상황이 훨씬 더 흥미로워집니다. 비 결정적 알고리즘의 실행 시간은 일반적으로 모든 (올바른) 선택에 대한 최소값으로 간주됩니다. 그러나 다른 선택으로 인해 실행 시간이 극적으로 악화되거나 (최소한보다 무질서하게 악화되거나 임의적으로 악화 될 수 있음) 무한 루프가 발생할 수 있습니다. 이것이 우리가 최소한을 취하는 이유입니다. 우리는이 이상한 경우에 신경 쓰지 않습니다.

이제 무작위 알고리즘에 도달했습니다. 무작위 알고리즘은 비 결정적 알고리즘과 유사하지만 특정 지점에서 0과 1 사이의 선택을 '허용'하는 대신, 선택 시점에 무작위 동전 던지기에 의해 결정됩니다 (실행에 따라 다를 수 있음) 또는 알고리즘 실행 중에 나중에 동일한 선택을 다시해야하는 경우). 이는 결과가 같은 확률로 0 또는 1임을 의미합니다. 정확성은 이제 "거의 알고리즘은 항상 내가 원하는 것을 계산합니다"또는 "알고리즘은 항상 내가 원하는 것을 계산합니다"(결정적 버전)가됩니다. 두 번째 경우 알고리즘이 답을 계산하는 데 필요한 시간은 결정적인 '항상 빠름'과 대조적으로 '거의 항상 빠름'입니다.


1
영형(|에스|)에스

14

요컨대, 비결정론은 계산을 계속하는 방법에 대해 동일하고 유효한 여러 선택을하는 것을 의미합니다. 랜덤 화는 계산을 안내하기 위해 (랜덤) 비트의 외부 소스를 사용하는 것을 의미합니다.


비결정론을 이해하기 위해 유한 오토마타 (FA)를 살펴 보는 것이 좋습니다. A에 대한 결정 FA (DFA) 전이 함수는, 잘 함수이다. 현재 상태와 다음 입력 기호가 주어지면 다음 상태가 고유하게 정의됩니다.

(에이)(에이기음)

NFA
[ 출처 ]

에이(에이)(에이기음)에이

여기서 핵심은 수락이 NFA에 대해 "수용 실행 있는 경우 수락"으로 정의된다는 것입니다 . 이 존재 기준은 실제 추측은 없지만 "항상 올바른 추측"으로 해석 될 수 있습니다.

여기에는 확률이 없습니다. 비결정론을 프로그래밍 언어로 번역하는 경우 , 동일한 state가 주어지면 다른 명령문으로 이동할 수있는 명령문이 있습니다 . 당신의 마음을 왜곡시키기 위해 고안된 난해한 프로그래밍 언어를 제외하고는 그러한 것이 존재하지 않습니다.


무작위 화는 상당히 다릅니다. 우리가 고장 나면, 오토 마톤 / 프로그램은 계속 실행을위한 여러 선택을 갖지 않습니다. 임의의 비트가 그려지면 다음 명령문이 고유하게 정의됩니다.

if ( rand() > 5 )
  do_stuff();
else
  do_other_stuff();

유한 오토마타 측면에서 다음을 고려하십시오.

PFA
[ 출처 ]

{에이,,기음}10

Σ×ΠΠ


마지막으로 한 가지 비고 : 우리는 비결정론이 순전히 이론적 인 개념이라는 것을 알 수 있습니다. 구현할 수 없습니다! 왜 우리는 그것을 사용합니까?

  1. 종종 더 작은 표현을 허용합니다. 가장 작은 DFA가 기하 급수적으로 큰 ¹ 인 NFA가 있음을 알고있을 것입니다. 더 작은 것을 사용하는 것은 오토 마톤 설계와 기술적 증거를 단순화하기위한 문제입니다.

  2. 대상 모델에서 비결 정성이 허용되는 경우 모델 간 변환이 더 간단한 경우가 많습니다. 예를 들어 정규 표현식을 DFA로 변환하는 것을 고려하십시오. 일반적인 (그리고 간단한) 방법은 NFA로 변환하고이를 결정하는 것입니다. 나는 직접적인 구조를 모른다.

  3. 이것은 학계의 관심사 일 수 있지만 비결정론이 장치의 성능을 향상시킬 수 있다는 것은 흥미 롭습니다. 유한 오토마타 및 튜링 머신의 경우 가장 인기있는 머신 모델 장치는 아니지만, 결정 론적 푸시 다운 오토마타, 부치 오토마타 및 하향식 트리 오토마타는 비 결정적 형제 자매보다 적은 언어를 엄격하게 수용 할 수 있습니다.


  1. 예를 들어 cstheory.SE에서이 질문을 참조하십시오 .
  2. 여기 , 여기여기 (명제 1.6.2)를 참조 하십시오 .

따라서 프로그래밍에서 동일한 조건으로 여러 개의 "다른 경우"를 만들 수 없으므로 확률 / 무게가 조건에 포함되는 이유가 무엇입니까?
Kate

@ 케이트 나는 그게 무슨 뜻인지 모르겠다. 프로그래밍 언어-컴퓨터! 본질적으로 결정적입니다. 우리는 PRNG와 trule random (무엇이든) 입력을 사용하여 randomness의 환영을 만들 수 있습니다.
Raphael

14

여기에는 비결정론에 대한 두 가지 다른 정의가 있습니다.

  1. 위키피디아가 정의한 것처럼, "결정론이 아닌", 즉 같은 입력에서 항상 같은 행동을하는 알고리즘은 아닙니다. 무작위 알고리즘은 방금 제공 한 정의에 적합하기 때문에 "결정적이지 않은"알고리즘의 특수한 경우입니다.

  2. 비결정론 적 계산 모델 (비결정론 적 튜링 머신과 같은)은 이론적 인 계산 모델입니다. 실행 가능한 여러 경로가있을 수 있으며 해당 경로 중 하나라도 받아들이면 "수락"합니다. 당신은 그들이 진짜가 아니라는 점에 유의해야합니다. 무작위 또는 결정 론적 알고리즘으로 시뮬레이션 할 수 있지만 이러한 의미에서 비결정론적인 알고리즘을 실제로 실행할 수있는 방법은 없습니다.

CS에서 비결정론은 일반적으로 (2)를 의미하므로 사용자가 제공 한 Wikipedia의 정의 ((1))는 오해의 소지가 있습니다. 지금까지 제공된 대부분의 답변은 (1)이 아닌 (2)를 설명합니다.


1)에 따르면, 무작위 퀵소트는 결정 론적 알고리즘입니다. 이것이 유용한 용어인지 잘 모르겠습니다. 1) "블랙 박스"보기라고 설명 할 수있는 반면 2) 실제로 알고리즘 / 기계를 검사합니다. 틀림없이, CS는 모두 약 2); 관점 1)을 (모듈 식) 소프트웨어 엔지니어링에 할당합니다.
Raphael

@Raphael, 좋은 지적은, (1)을 수정하여 "같은 입력에서 같은 동작을한다"고 말합니다. (1)보다 (2) 선호하는 것에 대해 동의했습니다.
usul

"Behaviour"는 애매 모호하며 정확하게 블랙 박스와 화이트 박스 방식입니다. :)
Raphael

물론, 나는 공식적인, 정확하게 정의 된 비결정론 적 튜링 머신 (2)과 모호함 / 모호한 "결정론이 아님"(1) 사이에서 중요한 차이를 본다. 그래서 그것이 내가 말하고 싶은 전부입니다 ....
usul

비 결정적 알고리즘을 실행하는 것에 대한 '비현실적'은 없으며, 실행하는 동안 알고리즘에 의해 결과가 결정되지 않는 선택이 이루어져야 함을 의미합니다. 1과 2의 유일한 차이점은 1에서 알고리즘이 "성공"으로 간주 될 때 말하지 않은 반면 2에서는 알고리즘이 항상 "예"또는 "아니오"라고 표시되는 종류 여야합니다. 실행에 결정 문제점이 있으며 가능한 실행 중 하나가 "예"인 경우에만 문제점에 대한 알고리즘의 응답을 "예"로 정의합니다. 따라서 2는 1의 특별한 경우입니다.
reinierpost

1

내가하고있는 관련 연구로 인해 이것을 다시 방문하면 자신과 대답 한 다른 사람들 사이의 불일치가 우리가 모두 옳은 전체 론적 이해로 동화 될 수 있습니다. 그러나 IMO에서 채택한 컴퓨터 과학 용어 인“바운드 비결정론”은 잘못된 옥시 모론 (이전의 요점)입니다.

핵심 요점은 경계가있는 비결정론과 경계가없는 비결정론을 구별하는 것입니다. [1]

비결정론 적 튜링 머신 (일명 "NTM")은 각 상태 전이에 제한된 수의 가능성, 즉 프로그램 (일명 "구성")이 한정 되어 있다는 점에서 비결정론 적 경계 를 정했습니다 . 테이프는 제한이 없으므로 종료 증명을 결정할 수 없습니다. 그러나 입력이 중단되는 특정 입력의 경우 출력이 결정적이며 시간이 제한됩니다. 즉, 입력의 경우 결과가 결정적이거나 종료되지 않습니다. 또한 NTM은 가능한 모든 구성을 병렬로 실행하므로 결정적인 Turing 머신 (일명 "DTM")에서 NTM을 에뮬레이션하는 것보다 기하 급수적으로 빠르게 실행됩니다. [2]

NTM에서 입력과 결과 사이에 비결정론적인 관계는 실제로 없습니다. 결과는 입력 또는 초기 상태에 대해 항상 동일하기 때문에 임의의 추가없이 DTM에 의해 에뮬레이션 될 수 있기 때문에 분명합니다. [2] 멈출 수없는 것이 결정적인 결과이기 때문에 결정 불가능한 결정 론적 결정은 아닙니다. 결정 론적 시스템은 결과가 중단되지 않더라도 주어진 입력에 대해 항상 동일한 결과를 갖습니다. NTM의 지역화 된 비결 정성은 실행 알고리즘의 각 상태 전이에 있습니다. 어떤 트리의 경로가 출력 상태 제공을 종료 할 수 있는지는 결정 불가능합니다. 그러나 결정 불가능 성은 비결정론이 아닙니다. 따라서 "경계 비결 정성"이라는 용어는 상태 머신 내에서 지역화 된 불확실성을 설명하지만 입력과 결과의 관계는 설명하지 않으며, 따라서“경계”라는 개념. "바운드 비결정론 (bounded nondeterminism)"이라는 용어는 여전히 옥시 모론이며 "병렬화 된 상태 전이 (parallelized state transition)"튜링 머신 (Turing machine)으로 더 정확하게 묘사 될 수 있다고 생각합니다.

한편, 주어진 입력 또는 초기 상태에 대해 무한한 비결정론 (일명“비결정론”)은 무한한 가능한 상태를 갖는다. 제한되지 않은 비결정론은 가능한 많은 프로그램 구성뿐만 아니라 제한되지 않은 지연과 같이 입력 또는 초기 상태의 일부가 아닌 일부 제한되지 않은 외부 상태를 포함합니다. 따라서 동일한 입력 또는 초기 조건에 대해 반복 된 실행에 따라 결과가 달라질 수 있습니다. 그러므로 투입과 결과 사이의 결정론적인 관계가 아니다. [3]

무작위 및 확률 론적 알고리즘은 몇 가지 비결정론, 즉 다수의 구성으로 제한 될 수있는 가능한 구성의 무작위 선택을 채택하지만 NTM처럼 모든 가능한 구성을 실행하지는 않습니다. 따라서 무작위성이 결정 론적 (예 : PRNG)이고 무작위성에 대한 엔트로피의 초기 상태가 입력의 일부로 간주되지 않는 한 결정적이지 않습니다.

[1] https://en.wikipedia.org/w/index.php?title=Unbounded_nondeterminism&oldid=710628370#Nondeterministic_automata

[2] https://en.wikipedia.org/w/index.php?title= 비결정론 _Turing_machine & oldid = 754212081 # Equivalence_with_DTMs

[3] Hewitt, Meijer 및 Szyperski : 배우 모델 (알고 싶은 모든 것 ...) . 17:44 분 표시로 이동하십시오.


1
이것이 어떻게 질문에 대답하는지 모르겠습니다.
adrianN

1
@adrianN 대답은 비결정론이 실제로 무엇인지에 대한 설명을 제시합니다. 그런 다음 무작위 알고리즘이 어떻게 관련되는지 설명합니다. 질문은 두 가지를 관련 시키도록 요구합니다. 빙고. 질문에 답변했습니다.
Shelby Moore III

0

차이점을 설명하는 모든 대답 외에도, 내가 말하고 싶은 것을 얻는 데 도움이되는 예가 있습니다.
동전 던지기를 고려하면 H 또는 T를 얻습니다 . 동전 던지기가 무작위라면 1000 번의 동전 던지기 중에서 500이 H 일 가능성이 높으며 그중 999 개가 H 일 가능성은 거의 없습니다 . 그러나 동전 던지기가 비 결정적 이라면 999 H 를 얻는 것이 거의 불가능하다고 말할 수는 없습니다 .


나는 귀하의 게시물이 의견으로 작용한다고 생각합니다. 무작위 화 된 알고리즘과 비결정론 적 알고리즘의 주요 질문을 해결하려고 시도하지 않으며 또한 우리를 다른 종류의 비결정론으로 이끌었습니다.
사악한

-6

무작위 (다항식 시간, 부울 결과) 알고리즘은 RP 계산 복잡도 클래스에 있으며, 이는 비 결정적 (다항식 시간, 부울 결과) 알고리즘이있는 NP의 서브 세트이며 결정적 (다항식 시간, 부울 결과) 인 P의 상위 세트입니다. 알고리즘이 상주합니다.

하위 설정 복잡도 는 한 세트의 문제 를 다른 세트로 줄이는 것 입니다. 따라서 RP ⊆ NP는 정의 적으로 수퍼 세트에 서브 세트가 포함되어 있기 때문에 결정적이지 않은 무작위 알고리즘의 가능성을 배제합니다. 부분 집합은 모든 RP 알고리즘 (또는 모든 RP- 완료 알고리즘)을 일부 NP 알고리즘 (또는 모든 NP- 완료 알고리즘)으로 줄일 수 있음을 의미합니다. P의 모든 문제는 제어되지 않은 엔트로피의 양이 0 인 RP의 문제로 감소 될 수 있기 때문에 P는 RP의 부분 집합입니다.

접선으로, 이것은 P 의 직렬 문제에 대한 감소에서 병렬 계산을 시뮬레이션하여 NC의 모든 문제 (병렬 계산) 가 P의 문제로 감소 될 수있는 방법과 유사 하지만 그 반대가 참이라는 것이 아직 입증되지 않았습니다. P의 모든 문제는 NC의 문제로 환원 될 수없고, 사실이 아닌 것으로 입증된다. 즉 P- 완전한 문제가 NC의 문제로 환원 될 수 없다는 믿어지지 않는 증거. 본질적으로 직렬이고 병렬로 계산할 수없는 문제가있을 수 있지만, P ≠ NC가 불가능하다는 것임을 증명하기 위해 (이 답변에서 논의하기에 너무 접할 수없는 이유로).

보다 일반적으로 (즉, 부울 결과 유형으로 제한되지 않음), 무작위 화 된 알고리즘은 일부 엔트로피가 외부에서 공급 된다는 점에서 결정 론적 알고리즘과 구별됩니다 . 임의의 알고리즘은 엔트로피가 제한되어 있기 때문에 비 결정적 알고리즘과 구별 되므로 임의적 (비 결정적이 아닌) 알고리즘은 항상 종료되는 것으로 입증 될 수 있습니다.

비 결정적 알고리즘의 예측 불가능 성은 입력 엔트로피의 모든 가능한 순열 열거수 없기 때문에 발생합니다 (종료 예측 불가능). 무작위 알고리즘의 예측 불가능은 제어수 없기 때문입니다모든 입력 엔트로피 (예측할 수없는 비율을 예측할 수는 있지만 불확실한 결과를 예측할 수 없음) 이 중 어느 것도 문제에 대한 정답의 예측 불가능성에 대한 진술은 아니지만, 예측 불가능 성은 각각 종료 및 불확실한 결과의 측면 채널에 나타납니다. 많은 독자들이 한 영역에서 예측할 수없는 예측 결과를 예측할 수없는 것으로 보이며, 이는 결코 기록하지 않은 혼란입니다 (편집 기록 검토).

비결정론은 항상 (모든 과학이나 용어의 사용에서) 보편적 (즉, 무한한) 엔트로피를 열거 할 수 없다는 것을 이해하는 것이 중요합니다. 반면, 무작위 화는 제한되지 않거나 제한되지 않을 수있는 다른 엔트로피 소스 (프로그램에서 입력 변수를 제어하지 않는 엔트로피)에 액세스하는 것을 말합니다.

비슷한 질문을하는 다른 스레드에 대해 현재 가장 인기있는 답변 아래에 다음 주석을 추가했습니다 .

모든 과학은 무한 엔트로피의 개념에 통일 된 비결정론의 동일한 정의를 사용합니다. 모든 과학에서 예측할 수없는 결과는 알고리즘 (또는 시스템)의 가능한 모든 출력을 우선적으로 열거 할 수 없기 때문에 제한되지 않은 상태, 즉 NP 복잡성 클래스를 받아들이 기 때문입니다. 다른 과학에서는 동일한 상태 변화를 반복하면서 우주의 나머지 엔트로피를 일정하게 유지하는 것과 다른 과학에서는 정지 여부를 관찰하기 위해 특정 입력을 지정하는 것이 동일합니다. 컴퓨팅은 이러한 엔트로피 격리를 허용하지만 자연 과학은 그렇지 않습니다.

무작위와 비결정론의 유일한 두드러진 구별에 대한 나의 요점을 명확히하기 위해 가장 좋은 의견을 추가합니다.

당신이 두드러진 엔트로피 관점이 아닌 작동 관점에서 설명하려고 시도하여 혼동을 멈 추면 구별이 정말 우아하고 쉽습니다.

@reinierpost 모든 사람들이 무작위와 비결정론의 차이점을 혼란스럽게 만들고 있습니다. 이로 인해 댓글이 흐려집니다. 이 알고리즘은 입력 (가변) 엔트로피와 소스 코드 (불변) 내부 엔트로피의 상호 작용에 응답합니다. 비결정론은 무한한 엔트로피입니다. 불변의 엔트로피는 π의 자릿수 확장 과 같이 내부적으로 제한되지 않을 수 있습니다 . 랜덤 화는 엔트로피의 일부가 정의 된 바와 같이 입력에 연결되지 않는다 (즉, 시스템 호출로부터 /dev/random또는 시뮬레이션 된 랜덤 성 (예 : NFA 또는 PRNG) 으로부터 오는 것일 수 있음 ).

.

비 결정적 유한 오토 마 (NFA)의 @Raphael 공식적인 정의는 유한 입력 엔트로피 (데이터 : 5 튜플)입니다. 따라서 모든 NFA는 결정 론적 Turing 머신에서 실행될 수 있습니다. 즉 비결정론 적 Turing-complete 머신이 필요하지 않습니다. 따라서 NFA는 비 결정적 문제에 속하지 않습니다. NFA에서 "비결정론"의 개념은 결정론 (모든 NFA가 DFA로 변환 될 수 있기 때문에 명확하게 존재하지만)이 명확하게 확장되지 않는다는 것입니다-계산의 비결정론과 동일하지 않음

.

@Raphael 은 NFA에서 주장 된 " 비결정론 "은 실제로 무작위성은 무작위성과 비결정론 사이의 구별에 대한 나의 정의의 의미이다. 나의 정의는 무작위성이 프로그램이나 기능에 대한 입력의 통제, 지식 (또는 NFA의 경우 원하는 비명 시적 확장)에 있지 않은 엔트로피의 일부입니다. 반면, 진정한 비결정론은 엔트로피가 무한하기 때문에 어떤 경우에도 엔트로피를 알 수 없다는 것입니다. 이것이 바로 비결정론과 무작위로 구별되는 것입니다. 따라서 NFA는 귀하가 주장한 후자가 아니라 전자의 예입니다.

.

@Raphael내가 이미 설명했듯이 은 NFA에서 의 개념은 과 유한 엔트로피를 결합시킨다. 따라서 비결정론은 압축 또는 편의의 형태로 결정론을 확장하지 않는다는 로컬 개념이므로 NFA가 결정적이지 않다고 말하는 것은 아니며 결정 론적 확장을 계산하지 않으려는 오라클에 대한 임의의 모양을 가지고 있습니다. 그러나 그것은 엔트로피가 무한한, 즉 유한 한 것이 아니라 결정 론적으로 확장되어야하기 때문에 모든 신기루입니다.

사전은 도구입니다. 그것들을 사용하는 법을 배우십시오.

임의 형용사

통계. 세트의 각 아이템이 선택 될 확률이 동일한 선택 프로세스를 특징 짓거나 특징 짓는 단계.

각각의 요소가 동일한 발생 확률을 갖는 세트 또는 세트의 요소와 관련되는 것

따라서 무작위 화는 입력 엔트로피의 일부가 동등 할 것을 요구하기 때문에, 입력 엔트로피의 일부가 함수의 호출자에 의해 제어되지 않는다는 나의 정의와 일치한다. 무작위 화는 입력 엔트로피가 종료 될 수없는 결정적인 것을 요구하지 않는다는 것을 주목하라.

컴퓨터 과학에서 결정 론적 알고리즘은 특정 입력이 주어지면 항상 동일한 출력을 생성하고 기본 시스템이 항상 동일한 상태 시퀀스를 통과하는 알고리즘입니다.

공식적으로 결정 론적 알고리즘은 수학 함수를 계산합니다. 함수는 도메인의 모든 입력에 대해 고유 한 값을 가지며 알고리즘은이 특정 값을 출력으로 생성하는 프로세스입니다.

결정 론적 알고리즘은 상태 머신의 관점에서 정의 될 수 있습니다. 상태는 머신이 특정 순간에 무엇을하고 있는지를 나타냅니다. 상태 머신은 한 상태에서 다른 상태로 개별적으로 전달됩니다. 입력에 들어간 직후 기계는 초기 상태 또는 시작 상태입니다. 기계가 결정 론적이라면,이 시점부터 현재 상태가 다음 상태를 결정합니다. 일련의 상태를 통한 과정은 미리 결정됩니다. 기계는 결정론적일 수 있으며 여전히 멈추거나 끝나지 않으므로 결과를 얻지 못합니다.

따라서 결정 론적 알고리즘은 함수의 입력 상태에 의해 완전히 결정되어야 함을 의미합니다. 즉, 함수가 종료 (또는 종료되지 않음)하고 결정할 수 없음을 증명할 수 있어야합니다. Wikipedia의 비결정론 적 기술에 대한 혼란스러운 시도에도 불구하고, Wikipedia에 의해 위에서 정의 된 결정 론적 유일의 유일한 이론은 입력 상태 (엔트로피)가 잘못 정의 된 알고리즘입니다. 그리고 입력 상태를 잘못 정의 할 수있는 유일한 방법은 바인딩되지 않은 경우입니다 (따라서 결정적으로 사전 분석 할 수 없음). 이것은 비결정론 적 Turing 머신 (및 C, Java, Javascript, ML 등의 공통 Turing 완전한 언어로 작성된 많은 실제 프로그램)과 결정 론적 TM 및 HTML, 스프레드 시트 공식과 같은 프로그래밍 언어를 구별하는 것입니다. 코크,

계산 복잡도 이론에서 비 결정적 알고리즘은 가능한 모든 단계에서 여러 연속을 허용 할 수있는 알고리즘입니다 (숲에서 길을 걷는 사람을 상상하고 그가 더 나아갈 때마다 원하는 도로에서 원하는 포크를 선택해야 함) 가지다). 이러한 알고리즘은 가능한 모든 계산 경로에 대한 솔루션에 도달하지 않습니다. 그러나, 그들은 어떤 길에 대한 올바른 해결책에 도달 할 것이 보장된다. 선택은 검색 과정에서 추측으로 해석 될 수 있습니다.

Wikipedia와 다른 사람들은 무작위 배정을 비결정론과 혼동하려고 시도하지만, 두 개념을 웅변 적으로 구별하지 않으려는 경우의 요점은 무엇입니까?

분명히 결정론은 결정하는 능력에 관한 것입니다. 분명히 무작위 화는 엔트로피의 일부를 평등하게 만드는 것입니다.

알고리즘 상태에 임의의 엔트로피를 포함한다고해서이를 결정할 수있는 것은 아닙니다. 예를 들어 PRNG는 필요한 등가 통계 분포를 가질 수 있지만 완전히 결정적입니다.

직교 개념을 엇갈리게하는 것은 IQ가 낮은 사람들입니다. 나는이 공동체보다 나아질 것으로 기대합니다!


4
그것은 컴퓨터 과학에서 비결정론이 의미하는 것이 아닙니다. 비 결정적 알고리즘은 "예측할 수 없습니다".
David Richerby

4
나는 automata resp에서 비 결정론이 어떻게 정의되는지와 아무런 관련이 없습니다. 계산 이론. 쉘비, 타오르는 걸 그만두고 교과서를 받으십시오. 다른 답변을 이해하지 못하면 의견에 도움을 줄 수 있다고 생각하지 않습니다.
Raphael

3
@ShelbyMooreIII 컴퓨터 과학에서 비결정론이 무엇을 의미하는지 완전히 이해하지 못했습니다. 엔트로피와는 아무런 관련이 없습니다. 그것은 당신이 생각하는 것을 의미하는 것이 아닙니다. 그것이 다른 모든 대답이 잘못되었다고 생각하는 이유입니다. 아마도 이름이 잘못 선택되었을 수도 있지만 요점은 아닙니다. 그것은 컴퓨터 과학에서 특별한 의미를 가지며 다른 과학에서와 의미가 다릅니다. 잘못된 정의를 사용하려고하므로 모든 것이 완전히 잘못된 것 같습니다.
David Richerby

4
"계산 복잡성 이론 [...]에 대해 말할 때 비결정론이라는 용어를 사용하는 것은 분명히 엔트로피에 관한 것입니다."-아니, 그렇지 않습니다.
Raphael

3
우리는 그 점에 동의 할 수 있습니다. 우리에게 "가르치려고"하지 마십시오. 그것은 아무도 도와주지 않습니다.
Raphael
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.