왜 인간은 특정한“결정할 수없는”문제를 해결할 수 있습니까?


44

고차 패턴 매칭은 결정 불가능한 문제입니다. 즉,이 식 주어진 것이라는 알고리즘없는 a => b, a그리고 b, 단순히 입력 람다 계산법에 열려있는 용어를 교체를 발견 S하도록 aS => bS하는 경우, =>"동일한 BN 정상 형태를 갖는"의 약자. 그러나 인간은 그 문제를 효율적으로 해결할 수 있습니다. 예를 들어 다음과 같은 문제가 있습니다.

a = (λt . t 
    (F (λ f x . (f (f (f x))))) 
    (F (λ f x . (f (f x)))))
b = (λ t . t
    (λ f x . (f (f (f (f (f (f x)))))))
    (λ f x . (f (f (f (f x))))))

람다 미적분학에 대한 충분한 지식을 가진 사람 F은 교회 수에 대한 "이중"기능이라는 것을 알 수 있습니다.

 F = (λ a b c . (a b (a b c)))

내 질문은 : 그 문제를 결정할 수 없다면, 인간은 어떻게 빠르고 쉽게 문제를 해결할 수 있습니까?


24
"인간은이 문제를 효율적으로 해결할 수 있습니다"-인용이 필요했습니다. 그것에 대한 당신의 증거는 무엇입니까? 효율적으로 해결할 수있는 하나의 예를 보여 주더라도 문제의 모든 인스턴스에 대해 효율적으로 해결할 수있는 것은 아닙니다. X가 true 인 X의 한 예를 표시하여 "모든 X에 대해 X가 참"임을 증명할 수 없습니다.
DW

33
결정할 수없는 문제는 문제의 모든 인스턴스 에 대해 "예"또는 "아니오"로 올바르게 응답하는 알고리즘이 없음을 의미합니다 . 문제의 일부 (또는 많은) 인스턴스를 해결하는 알고리즘을 찾을 수 있다는 것을 의미하지는 않습니다. [히. 내가이 발언을 작성하는 동안 DW가 대답 한대로.]
Rick Decker

23
이 문제를 해결 하시겠습니까? 나는 이 문제를 이해 하지 못한다 .
MikeTheLiar

2
내가 이해 한 방식은 다음과 같습니다. 해당 솔루션은 임시 솔루션입니다. 문제의 각 사례에는 하나의 사례가 있습니다. 대부분의 경우 귀하의 예와 같이 쉽게 동기 부여되지는 않지만 알고리즘은 정확성을 기준으로 만 판단 할 수 있기 때문에 항상 '인스턴스 X를 얻으면 Y를 출력하십시오'라고 말할 수 있습니다. 그러나 이러한 방식으로 이러한 모든 솔루션을 하드 코딩하면 유한 절차 (유일한 합리적인 종류이므로 일반적으로 의미하는 것)가 생성되지 않습니다 . 또는 문제를 결정하기 위해 알고리즘의 전략을 선택하기 전에 어떤 인스턴스가 제공되는지 확인할 수 없습니다.
Vandermonde

또한 위와 같이 모든 솔루션을 열거 할 수 있기 때문에 무한한 인스턴스 수의 문제 만 일반적으로 고려되거나 호출되는 이유입니다.
Vandermonde

답변:


78

인간은 문제의 일부 사례 를 효율적으로 해결할 수 있지만 인간이 모든 사례를 효율적으로 해결할 수 있다고 믿을 이유는 없습니다 . 인간이 효율적으로 해결할 수있는 하나의 사례를 보여주는 것이 인간이 모든 사례를 효율적으로 해결할 수 있음을 의미하지는 않습니다.

결정할 수 없음은 "모든 인스턴스를 해결할 수 있고 항상 종료되는 알고리즘이 없음"을 의미합니다. 결정 불가능한 문제 일지라도 일부 인스턴스를 해결할 수있는 알고리즘이 여전히있을 수 있습니다 .

따라서 모순이 없습니다.


23
@srvm, yup, 그것은 의미합니다. 예를 들어, 다음은 컴퓨터 알고리즘의 어리석은 예입니다. "입력이 질문에 주어진 예이면 출력 F = (λ a b c . (a b (a b c)))및 정지" 그것은 어떤 경우 (특히 정확히 1 경우)의 문제를 해결하는 컴퓨터 알고리즘입니다. 그렇습니다. 새로운 질문을하는 것이 옳은 일인 것 같습니다. 평소와 같이 질문에 대해 어떤 조사를 수행했는지 알려주십시오 (문의하기 전에 몇 가지를 수행해야 함).
DW

10
어디 정말 어려운 문제된다의 도 NP 완전 문제에 대부분의 경우 쉽게 해결 될 수있다 주장. 이것은 내 경험과 일치합니다. 일반적으로 문제의 특징이 솔루션을 명백하게 만듭니다 (적어도 일부). 하드 사람은 조심스럽게 성공과 실패 사이의 균형을하지만, 그 중 많은이 없습니다.
로스 Millikan

3
@srvm 당신이 그것에 대해 생각한다면, 특별한 경우에 이와 같은 어려운 문제를 해결하는 것이 최적화 프로그램이해야 할 일입니다.
Cort Ammon

2
@srvm : 컴퓨터를 거의 매일 해결하게 만드는 결정 불가능한 문제의 훌륭한 예는 중지 문제입니다. 우리는 정지 문제를 결정할 수 없지만 원치 않는 무한 루프를 감지하는 린터, 정적 분석기 및 컴파일러를 계속 작성하고 있습니다. 우리가하는 방법은 "엄지 규칙"입니다. 즉, 알고리즘이 아닌 인간의 경험을 통해 특정 종류의 코드가 무한 루프에 들어간다는 것을 알고 있습니다. 그래서 우리는 컴퓨터가 우리가 알고있는 사례를 찾도록 요청합니다. 우리는 그러한 프로그램이 모든 버그를 잡을 수는 없다는 것을 알고 있습니다. 그러나 아무것도 아닌 것보다 낫습니다.
slebetman


3

의견 중 하나 로서, 실제로 Google 검색에서 알 수 있듯이 실제로 고차 패턴 일치를 해결하기위한 꽤 좋은 알고리즘이 있음을 알고 있어야합니다 .

나는이 특정한 문제를 해결하는 것을 모른다. 그러나이 "더블링"문제는 프로그램 합성 분야에 더 가깝게 느껴진다 . 이런 종류의 문제를 해결할 수있는 프로그램 합성 시스템이 있다고 생각합니다.

그러한 시스템을 질식시키는 예제를 쉽게 만들 수 있으며, 인간이 이러한 종류의 문제에 특히 능숙한 것 같습니다. 이러한 종류의 문제를 해결하는 능력에서 인간에게 더 가까운 알고리즘을 만드는 것은 자동 정리 증명인공 지능 (보다 야심적이고 비현실적인 시도를위한)의 범위입니다.


1

인간은 항상 자신의 지식으로 문제를 해결하려고 시도하기 때문에 인간은 문제의 일부 인스턴스로 문제를 해결하기 위해 알고리즘을 개발합니다. 따라서 인간은 알고리즘을 개발하지만 특정 알고리즘이 모든 단일 문제를 해결할 수 있다고 확신 할 수는 없습니다. 따라서 모든 문제를 해결할 수있는 알고리즘은 없지만 문제를 해결하는 방법을 알고 있지만 알고리즘이 없다고 말할 수있는 완벽한 알고리즘이없는 경우에도 인간이 해결할 수있는 문제가 여전히 있습니다 .


8
이것이 기존 답변의 역설이 아닙니까? 나는 당신의 대부분의 답변을 비판했다는 것을 알고 있습니다. 당신이 사이트에 기여하고 싶어 정말 좋습니다. 우리가 원하는 모든 것을 말하는 답변이있는 질문보다는 2500 개의 답변되지 않은 질문 에 대한 답변을 제공 할 수 있다면 정말 좋을 것입니다. 감사!
David Richerby
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.