알고리즘이 소리와 완전 함을 의미한다는 것은 무엇을 의미합니까?


33

나는 소리에 대한 다른 해석 과 완전 함을 들었다 . 나는 완전성 이 해결책이 있다면 해결책을 찾는 것을 의미한다는 것을 이해합니다 . 이 알고리즘이 말하는 것은 무엇을 의미 하는가 소리 .

알고리즘이 소리와 완전 함을 의미한다는 것은 무엇을 의미합니까?


답변이 틀렸다면 어떤 답변을 다시 평가 하시길 바랍니다.
BlackJack

그냥 그랬어 :)
mutelogan

답변:


49

논리와 관련된 매우 구체적인 용어입니다.

시작점은 다음과 같습니다.

http://en.wikipedia.org/wiki/Soundness

http://en.wikipedia.org/wiki/Completeness_(logic)

기본적으로 알고리즘의 건전성은 알고리즘이 사실이 아닌 결과를 생성하지 않음을 의미합니다. 예를 들어 정렬 목록을 반환하지 않는 정렬 알고리즘이있는 경우 알고리즘이 적합하지 않습니다.

반면에 완전성은 알고리즘이 가능한 모든 입력을 처리하고 놓치지 않는 것을 의미합니다. 따라서 정렬 알고리즘이 정렬되지 않은 목록을 반환하지 않았지만 숫자 7을 포함하는 목록에 대한 작업을 거부 한 경우에는 완전하지 않습니다.

모든 입력에서 작동하고 (프로그램 세계에서 시맨틱하게 유효 함) 항상 정답을 얻습니다.


감사. 나는 건전성이 무엇을 의미 하는지 정말 혼란 스러웠다 . 여러 답변을 받고있었습니다.
mutelogan

도움이된다면 행복합니다 ... :)
Erik Dietrich

13
이진 검색이 그 예입니다. 소리지만 완벽하지는 않습니다. 정렬되지 않은 목록에서는 작동하지 않습니다.
Malfist

3
@Malfist 그러나 '프로그램의 세계'정렬 목록이 아닙니까?
Andres

1
"알고리즘이 유효하지 않은 입력에서 오작동"은 건전성 또는 완전성에 영향을 미치지 않으므로 이진 검색이나 비교 정렬과 관련이 없습니다. 알고리즘은 모두 유효하고 유효한 입력에 대해 완벽합니다.
Blaisorblade

15

Erik Dietrich의 대답이 다소 혼란 스럽다는 것을 알았습니다. 다음이 더 좋습니다 :

답을 반환 할 때마다 해당 답이 참이면 알고리즘이 적합 합니다. 임의의 입력에 대한 정답을 반환하도록 보장하는 경우 알고리즘이 완료 됩니다 (또는 응답이 없으면 실패를 반환하도록 보장 함).

두 가지 중요한 점 :

  1. 건전성은 약한 보증입니다. A가 종료 될 것이라고 약속하지는 않습니다.
  2. 건전성과 완전성은 관련 개념입니다. 사실 그들은 서로의 논리적 대화입니다. 즉, Soundness는 답변이 반환되면 해당 답변이 사실이라고 말합니다. 완전성은 답변이 반환되면 사실이라고 말합니다.

숫자 목록을 입력으로받는 정렬 알고리즘 A를 예로 들어 보겠습니다. A는 결과가 정렬 된 목록이라는 결과를 반환 할 때마다 소리가납니다. 마찬가지로, 우리는 번호 목록을 줄 때마다 정렬 된 목록을 반환한다고 보장하면 A가 완료되었다고 말합니다.


왜 혼란스러워? "답변을 반환 할 때마다 그 답이 참이면 알고리즘은 적절하다." 동일한 수단 "기본적으로, 알고리즘은 사실이다 어떤 결과를 얻을 수 없다는 것을 의미 (알고리즘의) 건전성." 이것도 같은 의미입니다. 완전성에 대한 (매우 짧은) 정의에 관해서는 위키피디아 링크에서 아무것도 일치하지 않으며 자신의 언급을 인용하지 않습니다. 에릭의 정의가 더 실용적이라고 말할 수 있습니다. 자신의 말이 정확하면 더 나은 증거와 더 많은 고기를 제공해야합니다.
itsbruce

1
명확하게 말하면, "완전히 답이 반환되면 완전하다고 답합니다"라고 말할 때 답이 "정확한"것입니까?
Dois

1
"답이 반환되면 정답"은 "답이 반환되면 정답"과 문자 그대로 같습니다. 또한, 답변은 "참"일 수 없으며, 정답 일뿐입니다. softwareengineering.stackexchange.com/a/311649/21277 이 더 정확합니다.
Blaisorblade

2

이 용어는 계산 이론에서 나왔으므로 소프트웨어 공학의 맥락보다 계산 이론의 맥락에서 더 의미가 있습니다.

대부분의 표준 계산 모델에서 컴퓨팅 문제는 언어로 표시 됩니다 . 언어는 문자열 집합입니다. 그러면 알고리즘은 주어진 문자열이 어떤 언어의 멤버인지를 결정하는 시스템 또는 프로 시저 일뿐입니다 (true 또는 false를 리턴하여). 소프트웨어 공학 용어에서 계산 이론은 문자열이 변경 불가능하다고 가정하면 다음과 같은 함수와 관련이 있습니다.

boolean some_function(string argument){...}

언어의 멤버 인 모든 인수에 대해 true를 리턴하면 이 함수를 complete 라고합니다. 언어의 멤버가 아닌 모든 인수에 대해 false를 반환 하면 소리 라고합니다.

다시 말해, true를 반환 할 때 항상 true를 반환하면 완전하고 false를 반환 할 때 항상 false를 반환하면 소리가납니다.

이것이 다른 종류의 기능으로 어떻게 해석됩니까? 결과적으로 임의의 양의 데이터를 문자열로 채우고 함수 내에서 재구성하는 것이 거의 항상 가능합니다. 따라서 논증 유형과 신성에 대한 제한은 이론적 인 단순화에 지나지 않습니다. 그러나 반환 유형에 대한 제한이 더 중요합니다. 부울 결과를 요구하는 문제를 의사 결정 문제 라고 합니다 . 많은 계산 이론은 결정 문제와 관련이 있습니다. 세트 P와 NP는 의사 결정 문제로 제한됩니다 (적어도이 제한 없이는 NP를 합리적으로 정의 할 수 없었습니다). 정지 문제는 심하게 연구 된 결정 문제의 또 다른 예입니다.

이 용어들이 의사 결정 문제의 영역 밖에서 일반화되지 않는다는 것이 제 의견입니다. 따라서 이들 용어의 차이점은 일반적인 기능을 논의 할 때 실제로 의미가 없습니다.


-2

SO 에는 훨씬 더 나은 답변 이 있습니다 . 기본적으로 검색 할 데이터 수집 및 기준을 제공합니다. 사운드 알고리즘 은 기준과 일치하는 물고기 만 포착하지만 일부 데이터 항목이 누락 될 수 있습니다. 전체 알고리즘 은 요청 된 결과의 수퍼 세트를 생성하므로 요청 된 결과 이외에 일부 가비지를받습니다. 사운드 알고리즘이 더 보수적입니다.

통계학 자는 아마도 사운드 알고리즘이 유형 I 오류 (정확한 후보를 수용하지 않음)로 편향되어 있지만 완전한 알고리즘은 유형 II 오류 (가상 후보를 수용하기 위해)로 편향되어 있다고 말할 것이다 .

여기에 이미지 설명을 입력하십시오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.