계산의 쿼리 모델
수학적인 용어로 계산을 모델링할 때, 우리는 일반적으로 다음 그림과 같은 프로세스를 염두에 둡니다. 정보가 입력으로 제공되고, 계산이 이루어지며, 출력이 생성됩니다.
오늘날 우리가 사용하는 컴퓨터는 지속적으로 입력을 받고 출력을 생성하며, 본질적으로 우리와 다른 컴퓨터 모두와 상호작용하는데, 이는 그림에 반영된 방식과는 다릅니다. 하지만 이 그림의 의도는 컴퓨터의 지속적인 작동을 표현하는 것이 아닙니다. 오히려, 이는 개별적인 계산 작업에 초점을 맞춘 계산의 간단한 추상화를 만들기 위한 것입니다. 예를 들어, 입력은 숫자, 벡터, 행렬, 그래프, 분자에 대한 설명, 또는 더 복잡한 것을 인코딩할 수 있으며, 출력은 우리가 염두에 둔 계산 작업의 해결책을 인코딩합니다.
핵심은 입력이 계산에 제공되며, 일반적으로 이진 문자열의 형태이고, 그 어떤 부분도 숨겨져 있지 않다는 점입니다.
모델에 대한 설명
계산의 쿼리 모델(query model) 에서는, 위에서 제시한 보다 표준적인 모델과 달리 전체 입력이 계산에 제공되지 않습니다. 대신, 입력은 함수(function) 의 형태로 제공되며, 계산은 쿼리(query) 를 수행함으로써 그것에 접근합니다. 또는, 쿼리 모델에서의 계산을 입력의 비트(또는 비트의 구간)에 대한 임의 접근 을 갖는 것으로 볼 수도 있습니다.
쿼리 모델의 맥락에서는 입력을 오라클(oracle) 또는 블랙박스(black box) 가 제공한다고 자주 표현합니다. 두 용어 모두 입력의 완전한 설명이 계산으로부터 숨겨져 있고, 접근할 수 있는 유일한 방법은 질문을 던지는 것이라는 점을 암시합니다. 마치 델포이의 오라클에게 입력에 대해 자문을 구하는 것과 같습니다. 그녀는 자신이 아는 모든 것을 말해주지 않으며, 구체적인 질문에만 답할 뿐입니다. 블랙박스 라는 용어는 특히 입력이 함수로 표현된다고 생각할 때 이해가 됩니다. 우리는 함수 내부를 들여다보고 그것이 어떻게 작동하는지 이해할 수 없으며, 단지 우리가 선택한 인수에 대해 평가할 수 있을 뿐입니다.
이번 수업에서는 다른 기호를 포함하는 문자열이 아니라 이진 문자열만을 다룰 것이므로, 편의상 앞으로 이진 알파벳을 나타내기 위해 라고 표기하겠습니다. 우리는 다양한 계산 문제들을 다룰 것이며, 몇 가지 간단한 예시는 곧 설명하겠지만, 그 모든 문제에서 입력은 다음과 같은 형태의 함수로 표현될 것입니다.
여기서 과 은 양의 정수입니다. 물론 대신 다른 이름을 선택할 수도 있지만, 이번 수업 전반에 걸쳐 를 그대로 사용하겠습니다.
계산이 쿼리 를 수행한다는 것은 어떤 문자열 이 선택되고, 그러면 문자열 이 오라클에 의해 계산에 제공된다는 것을 의미합니다. 이것이 양자 알고리즘에서 정확히 어떻게 작동하는지는 곧 논의할 것입니다. 이것은 쿼리가 중첩 상태에서 수행될 수 있도록 하는 유니타리 양자 연산으로 수행이 가능해야 하는데, 우선은 직관적으로 높은 수준에서 생각해 볼 수 있습니다.
마지막으로, 쿼리 알고리즘의 효율성을 측정하는 방식은 간단합니다. 우리는 알고리즘이 필요로 하는 쿼리의 수(number of queries) 를 셉니다. 이는 계산을 수행하는 데 필요한 시간과 관련이 있지만 정확히 같지는 않습니다. 왜냐하면 쿼리 이외의 연산에 드는 시간은 무시하고, 또한 각 쿼리가 단위 비용을 갖는 것처럼 취급하기 때문입니다. 원한다면 쿼리 이외의 연산들을 고려할 수도 있지만(그리고 때로는 그렇게 하지만), 쿼리의 수에만 주목하는 것이 간단함을 유지하는 데 도움이 됩니다.
쿼리 문제의 예시
다음은 몇 가지 간단한 쿼리 문제의 예시입니다.
-
OR. 입력 함수는 의 형태를 갖습니다(따라서 이 문제에서는 입니다). 과제는 을 만족하는 문자열 이 존재하면 을 출력하고, 그런 문자열이 없으면 을 출력하는 것입니다. 함수 를 임의 접근이 가능한 개의 비트 시퀀스를 나타내는 것으로 생각하면, 이 문제는 이 비트들의 OR을 계산하는 문제입니다.
-
패리티(Parity). 입력 함수는 다시 의 형태를 갖습니다. 과제는 을 만족하는 문자열 의 수가 짝수(even) 인지 홀수(odd) 인지를 결정하는 것입니다. 정확히 말하면, 집합 의 원소 수가 짝수이면 을, 홀수이면 을 출력해야 합니다. 함수 를 임의 접근이 가능한 개의 비트 시퀀스를 나타내는 것으로 생각하면, 이 문제는 이 비트들의 패리티(즉, 배타적 OR)를 계산하는 문제입니다.
-
최솟값(Minimum). 입력 함수는 임의의 양의 정수 과 에 대해 의 형태를 갖습니다. 요구되는 출력은 의 사전식(즉, 사전 순서) 순서에서 가장 먼저 오는 문자열