알고리즘, 언어 및 문제의 차이점은 무엇입니까?


40

이 사이트에서 사람들은 종종 "알고리즘"과 "문제"를 혼동하기 위해 다른 사람들을 수정하는 것 같습니다. 이것들의 차이점은 무엇입니까? 알고리즘을 고려하고 문제를 고려해야하는시기를 어떻게 알 수 있습니까? 그리고 이것이 공식 언어 이론의 언어 개념과 어떤 관련이 있습니까?


알고리즘은 문제를 해결하는 방법입니다.
reinierpost

답변:


53

간단하게하기 위해, 나는 예 / 아니오 답변이있는 "결정"문제만을 고려하여 시작하겠습니다. 기능 문제는 예 / 아니오 대신 각 입력 단어와 관련된 특정 출력 단어가 있다는 점을 제외하고는 거의 같은 방식으로 작동합니다.

언어 : 언어는 단순히 문자열 집합입니다. 이 같은 알파벳이 있으면 다음을, 만의 기호가 포함 된 모든 단어의 집합입니다 . 예를 들어, 는 모든 길이의 모든 이진 시퀀스 집합입니다. 그러나 알파벳은 이진일 필요는 없습니다. 단항, 삼항 등일 수 있습니다.Σ Σ { 0 , 1 } ΣΣΣ{0,1}

알파벳 위의 언어 는 하위 집합입니다 .Σ ΣΣ

문제 : 문제는 우리가 대답하고 싶은 입력에 관한 질문입니다. 구체적으로, 결정 문제는 "우리의 주어진 입력이 속성 충족 합니까?X

언어는 문제의 공식적인 실현입니다. 의사 결정 문제에 대해 이론적으로 추론하려고 할 때 종종 해당 언어를 검사합니다. 문제 의 경우 해당 언어는 다음과 같습니다.X

y X y X }L={ww 입력의 인코딩을 문제에 및 입력에 응답 문제에 대한 "예"된다 yXyX}

결정 문제에 대한 입력에 대한 답변이 "예"인지를 결정하는 것은 알파벳을 통한 입력의 인코딩이 대응하는 언어인지를 결정하는 것과 동등하다.

알고리즘 : 알고리즘은 문제를 해결하는 단계별 방법입니다. 알고리즘은 여러 가지 방법으로 다양한 언어로 표현 될 수 있으며 주어진 문제를 해결하는 다양한 알고리즘이 있습니다.

Turing Machine : Turing Machine은 알고리즘의 공식적인 아날로그입니다. 각 단어에 대해 주어진 알파벳 이상의 튜링 머신은 수락 가능한 상태에서 멈추거나 멈추지 않습니다. 따라서 각 Turing Machine 에는 해당 언어가 있습니다.M

w }L(M)={wM 은 입력 에서 수락 상태로 정지 합니다.w}

복잡성 클래스 와 의 차이를 정의하는 모든 입력에서 정지하고 yes 입력에서 정지하는 Turing Machines 간에는 미묘한 차이가 있습니다.R ERRE

언어와 Turing Machines의 관계는 다음과 같습니다.

  1. 모든 튜링 머신은 정확히 하나의 언어를 허용합니다

  2. 특정 언어를 허용하는 둘 이상의 튜링 머신이있을 수 있습니다.

  3. 지정된 언어를 허용하는 튜링 머신이 없을 수 있습니다.

우리는 알고리즘과 문제에 대해 거의 같은 것을 말할 수 있습니다. 모든 알고리즘은 단일 문제를 해결하지만 주어진 문제를 해결하는 0 개 또는 많은 알고리즘이있을 수 있습니다.

시간 복잡성 : 알고리즘과 문제 사이의 가장 일반적인 혼란의 원인 중 하나는 복잡성 클래스와 관련이 있습니다. 올바른 할당은 다음과 같이 요약 될 수 있습니다.

  • 알고리즘 에는 시간이 복잡합니다
  • 문제 복잡성 클래스에 속합니다

알고리즘은 특정 시간 복잡성을 가질 수 있습니다. 알고리즘이 크기 입력에 대해 최대 단계 에서 정지하면 알고리즘에 최악의 상한 복잡도 있다고합니다 .f ( n ) nf(n)f(n)n

문제는 실제로 실행되는 특정 알고리즘과 관련이 없기 때문에 런타임에는 문제가 없습니다. 대신, 우리가 존재하는 경우 문제가, 복잡성 클래스에 속한다는 것을 말하는 어떤 주어진 시간의 복잡성과 그 문제를 해결하는 알고리즘을.

P X X P X X PP,NP,PSPACE,EXPTIME 등은 모두 복잡한 클래스입니다. 이는 알고리즘이 아니라 문제가 포함되어 있음을 의미합니다. 알고리즘은 될 수 없다 하지만, 주어진 문제의 해결 다항식 시간 알고리즘이 있다면 다음 에 . 또한 수용 지수 시간 알고리즘의 무리가 될 수 하지만, 받아들이는 하나의 다항식 시간 알고리즘이 존재하기 때문에 , 그것은에 .PXXPXXP


1
적합하다고 생각되면이 답변을 자유롭게 편집하십시오.
jmite

다른 종류의 계산 문제 (예 : 검색 문제)가 있다고 언급하면 ​​좋을 것 같습니다.
Kaveh

1
누가 그래? 이런 종류의 사고는 사람들이 튜링 머신의 의도 이전에 형식화와 알고리즘에 많은 어려움을 겪었던 이유의 일부입니다. Church-Turing Thesis에 따르면 알고리즘은 튜링 머신이며 그 반대도 마찬가지이며 모든 튜링 머신이 정지되는 것은 아닙니다.
jmite

4
야, 이것은 내가 본 것 중 가장 큰 대답이다. 모든 컴퓨터 과학을 한 페이지에 요약했습니다.
CaptainCodeman

1
@ gnasher729이 검증의 관점에서 정의 될 수있다라는 이론이있다, 그러나 그것의 실제 정의는 따라서 이름, 비 결정적 기계에 대한 시간 복잡도의 관점에서 NP 수 있습니다 : 다항식 결정적
jmite
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.