답변:
논리와 관련된 매우 구체적인 용어입니다.
시작점은 다음과 같습니다.
http://en.wikipedia.org/wiki/Soundness
http://en.wikipedia.org/wiki/Completeness_(logic)
기본적으로 알고리즘의 건전성은 알고리즘이 사실이 아닌 결과를 생성하지 않음을 의미합니다. 예를 들어 정렬 목록을 반환하지 않는 정렬 알고리즘이있는 경우 알고리즘이 적합하지 않습니다.
반면에 완전성은 알고리즘이 가능한 모든 입력을 처리하고 놓치지 않는 것을 의미합니다. 따라서 정렬 알고리즘이 정렬되지 않은 목록을 반환하지 않았지만 숫자 7을 포함하는 목록에 대한 작업을 거부 한 경우에는 완전하지 않습니다.
모든 입력에서 작동하고 (프로그램 세계에서 시맨틱하게 유효 함) 항상 정답을 얻습니다.
Erik Dietrich의 대답이 다소 혼란 스럽다는 것을 알았습니다. 다음이 더 좋습니다 :
답을 반환 할 때마다 해당 답이 참이면 알고리즘이 적합 합니다. 임의의 입력에 대한 정답을 반환하도록 보장하는 경우 알고리즘이 완료 됩니다 (또는 응답이 없으면 실패를 반환하도록 보장 함).
두 가지 중요한 점 :
숫자 목록을 입력으로받는 정렬 알고리즘 A를 예로 들어 보겠습니다. A는 결과가 정렬 된 목록이라는 결과를 반환 할 때마다 소리가납니다. 마찬가지로, 우리는 번호 목록을 줄 때마다 정렬 된 목록을 반환한다고 보장하면 A가 완료되었다고 말합니다.
이 용어는 계산 이론에서 나왔으므로 소프트웨어 공학의 맥락보다 계산 이론의 맥락에서 더 의미가 있습니다.
대부분의 표준 계산 모델에서 컴퓨팅 문제는 언어로 표시 됩니다 . 언어는 문자열 집합입니다. 그러면 알고리즘은 주어진 문자열이 어떤 언어의 멤버인지를 결정하는 시스템 또는 프로 시저 일뿐입니다 (true 또는 false를 리턴하여). 소프트웨어 공학 용어에서 계산 이론은 문자열이 변경 불가능하다고 가정하면 다음과 같은 함수와 관련이 있습니다.
boolean some_function(string argument){...}
언어의 멤버 인 모든 인수에 대해 true를 리턴하면 이 함수를 complete 라고합니다. 언어의 멤버가 아닌 모든 인수에 대해 false를 반환 하면 소리 라고합니다.
다시 말해, true를 반환 할 때 항상 true를 반환하면 완전하고 false를 반환 할 때 항상 false를 반환하면 소리가납니다.
이것이 다른 종류의 기능으로 어떻게 해석됩니까? 결과적으로 임의의 양의 데이터를 문자열로 채우고 함수 내에서 재구성하는 것이 거의 항상 가능합니다. 따라서 논증 유형과 신성에 대한 제한은 이론적 인 단순화에 지나지 않습니다. 그러나 반환 유형에 대한 제한이 더 중요합니다. 부울 결과를 요구하는 문제를 의사 결정 문제 라고 합니다 . 많은 계산 이론은 결정 문제와 관련이 있습니다. 세트 P와 NP는 의사 결정 문제로 제한됩니다 (적어도이 제한 없이는 NP를 합리적으로 정의 할 수 없었습니다). 정지 문제는 심하게 연구 된 결정 문제의 또 다른 예입니다.
이 용어들이 의사 결정 문제의 영역 밖에서 일반화되지 않는다는 것이 제 의견입니다. 따라서 이들 용어의 차이점은 일반적인 기능을 논의 할 때 실제로 의미가 없습니다.
SO 에는 훨씬 더 나은 답변 이 있습니다 . 기본적으로 검색 할 데이터 수집 및 기준을 제공합니다. 사운드 알고리즘 은 기준과 일치하는 물고기 만 포착하지만 일부 데이터 항목이 누락 될 수 있습니다. 전체 알고리즘 은 요청 된 결과의 수퍼 세트를 생성하므로 요청 된 결과 이외에 일부 가비지를받습니다. 사운드 알고리즘이 더 보수적입니다.
통계학 자는 아마도 사운드 알고리즘이 유형 I 오류 (정확한 후보를 수용하지 않음)로 편향되어 있지만 완전한 알고리즘은 유형 II 오류 (가상 후보를 수용하기 위해)로 편향되어 있다고 말할 것이다 .