수학적 소프트웨어 증인


11

저는 많은 사람들과 마찬가지로 Mathematica 및 Maple과 같은 수학적 소프트웨어를 열성적으로 사용합니다. 그러나 나는 그러한 소프트웨어가 단순히 경고없이 틀린 대답을하는 많은 경우에 점점 좌절하고 있습니다. 이것은 많은 다른 예 중에서 단순한 합계 부터 최적화 까지 모든 종류의 작업을 수행 할 때 발생할 수 있습니다 .

이 심각한 문제에 대해 무엇을 할 수 있는지 궁금했습니다. 필요한 것은 사용자가 제공되는 답변의 정확성을 검증하여 그들이 말하는 것에 대한 확신을 가질 수있는 방법입니다. 만약 당신이 수학 동료로부터 해결책을 얻으려고한다면 그녀는 그냥 앉아서 그들의 작업을 보여줄 것입니다. 그러나 대부분의 경우 컴퓨터에서이를 수행 할 수는 없습니다. 대신 컴퓨터가 답의 정확성을 간단하고 쉽게 확인할 수 있습니까? 검사는 컴퓨터에서 수행해야 할 수도 있지만 검사 알고리즘을 검사하는 것이 알고리즘을 검사하여 처음에 증인을 생성하는 것보다 훨씬 쉬울 것입니다. 이것이 언제 실현 가능하고 어떻게 정확하게 공식화 될 수 있는가

요약하면 내 질문은 다음과 같습니다.

적어도 이론적으로는 수학 소프트웨어가 요청한 답변과 함께 간단한 확인 가능한 증거를 제공 할 수 있습니까?

우리가 이것을 즉시 할 수있는 사소한 경우는 물론 정수 또는 많은 고전적인 NP- 완전 문제 (예 : 해밀턴 회로 등)를 인수 분해하는 것입니다.


생성 된 답변이 틀린 예를들 수 있습니까? 물론 계산의 정확성에 대한 검증 가능한 증거를 생성하는 것이 가능하지만, 소프트웨어는 일반적으로 가장 직관적 인 알고리즘보다 훨씬 비효율적 인 알고리즘을 사용하기 때문에 손으로 쉽게 확인할 수있는 것은 아닙니다.
Mahdi Cheraghchi

이 질문에 두 가지 예를 들었지만 링크 색상이 잘 보이지 않을 수 있습니다. "합계"또는 "최적화"를 클릭하십시오.

1
dl.acm.org/citation.cfm?id=200880 에서 Manuel Blum과 Sampath Kannan이 한 일은 무엇입니까?
Andrej Bauer

인증 알고리즘을 살펴볼 수 있습니다 .
Pratik Deoghare

예, 너무 많은 상징적 소프트웨어 시스템이 "블랙 박스"로 취급되며 이는 영업 비밀을 보호하기위한 회사 전략이기도합니다. (1) 오픈 소스 대안을 시도하십시오. (2) "단위 테스트"의 소프트웨어 엔지니어링 "모범 사례"를 고려하십시오. 간단하게 아이디어는 결과의 "위생성 검사"를 생성하는 것입니다. 예를 들어 잘 구성된 테스트를 위해 알려진 값, 다른 조작, 역 등을 대체하여 공식과 테스트가 모두 실패 할 가능성은 없습니다 "거짓 긍정적".
vzn April

답변:


5
  1. "증인"또는 "확인 가능한 증거"의 개념은 완전히 새로운 것은 아닙니다. 의견에서 언급 한 것처럼 "인증서"의 개념을 찾으십시오. 세 가지 예가 떠 올랐습니다.

    • Kurt Mehlhorn은 1999 년 계산 기하학 알고리즘 (예 : 좌표의 작은 오류가 일부 알고리즘의 결과에서 큰 오류를 생성 할 수 있음)과 유사한 문제를 설명했습니다. 각 알고리즘이 "인증서"를 생성하도록하여 Leda 라이브러리와 유사한 방식으로 해결되었습니다. 답변 자체와 더불어

    • Demaine, Lopez-Ortiz 및 Munro 는 2000 년에 인증서의 개념 (그들은 "증거"라고 함)을 사용하여 정렬 된 집합의 합집합과 교집합 (및 차이점은 사소하지만)에 대한 적응적인 하한을 보여줍니다. 계산 오류로부터 보호하기 위해 질산염을 사용하지 않았기 때문에 작업을 배제하지 마십시오. 인증서는 최악의 경우 인스턴스 크기가 선형 일 수 있지만 종종 더 짧아서 "확인"될 수 있음을 보여주었습니다. 하위 선형 시간 (정렬 된 배열 또는 B- 트리로 입력에 무작위로 액세스), 특히 이러한 인증서를 계산하는 데 필요한 시간보다 짧은 시간 내에 "

    • Ian Munro가 Alenex 2001 에서 구현을 발표 한 이후 특히 여러 가지 문제에 대한 인증서 개념을 사용해 왔으며 , 특히 인증서가 가장 짧은 순열 (shameless plug에 대한 사과, 또 다른 것이오고 있음) 최악 또는 평균 경우보다 순열에 대한 압축 된 데이터 구조를 생성합니다. 여기서 다시 인증서를 확인하는 것 (즉, 순서)은 계산하는 것 (즉 정렬하는 것)보다 최대 선형 시간이 걸립니다.

  2. 이 개념은 오류 검사에 항상 유용한 것은 아닙니다. 인증서를 검사하는 데 시간이 많이 걸리거나 단순히 결과를 생성하는 데 시간이 걸리는 문제가 있습니다. 두 가지 예는 마음에 와서 사소한 하나 복잡 하나, 블룸과 Kannan은 (코멘트에서 언급)는 다른 사람을 제공합니다.

    • 2 차원과 3 차원의 볼록 껍질에 대한 인증서는 점이 임의 순서로 제공되는 경우 [FOCS 2009] (기타 뻔뻔한 플러그) 를 계산하기 위해 비교할 때만 큼 많은 비트를 인코딩 합니다.

도서관 Leda 는 실제로 결정 론적 인 인증서 생성 알고리즘을 만드는 데 가장 일반적인 노력입니다. Blum과 Kannan 의 논문은 이론적으로 그것을 표준으로 만들기 위해 보았던 최선의 노력이지만이 접근법의 한계를 보여줍니다.

그것이 도움이되기를 바랍니다 ...


매우 흥미 롭습니다. 요점 2와 관련하여 나는 조금 다른 것에 대해 이야기하고 있다고 생각합니다. 문제는 코드의 버그가 아니라 우리가 알고있는 알고리즘이 잘못된 답을 줄 수 있다는 것입니다. 또한 평범한 수준에서 많은 수학 함수에 유용한 인증서가 무엇인지 알지 못합니다. 예를 들어 무한 합 또는 함수의 최소화와 같은 경우입니다.

약간 더 명확합니다. 많은 수학 문제에 대해 올바른 알고리즘을 고안하는 것은 매우 어려운 것 같습니다. 그러나 우리는 실제적인 이유로 경고하지 않고 실수를 할 수있는 알고리즘을 사용합니다. 동일한 문제 세트에 대해 정확성 검사기를 입증 할 수있는 방법을 고안하는 것이 어렵지 않기를 바랍니다.

나는 전문 지식에서 멀어지고 있지만 계산 오류는 일반적으로 오류가 아닌 기본 작업 (곱셈, 나눗셈 등)에 대한 중간 결과 (Lady를 동기 부여하는 예에서는 분명히 그렇습니다)로 반올림 오류로 인해 발생한다고 생각했습니다. 알고리즘에서. 메이플이나 MATLAB과 같은 대수 시스템은 이러한 것을 피한다고 생각했을 것입니다. (
Jeremy

흥미로운 질문이자 여기 누군가가 확실히 알고있을 것입니다. 그러나 제가 말하고있는 많은 오답은 수치 계산이 아니기 때문에 적어도 문제가 당신이 묘사하는 것 이상이라고 생각합니다. 나는 계산 한계 / 무한 합계 등의 복잡성을 모르지만 일반적으로 최악의 경우 다루기가 어려워 때로는 잘못 대답하는 휴리스틱이 필요 / 유용하다고 가정합니다. mathematica.stackexchange.com/questions/tagged/bugs 는 잘못된 일에 대한 느낌을 얻는 데 도움이되지 않습니다.

이론적 CS는 자기 테스트 개념을 가지고 있으며 이는 선형 대수학의 많은 문제에 적용됩니다. 기본 아이디어 중 하나는 많은 문제에 대해 계산할 수있는 것보다 솔루션을 더 쉽게 확인할 수 있다는 것입니다. 예를 들어 https://doi.org/10.1016/0022-0000(93)90044-W를 참조 하십시오 .
닐 영
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.