Deutsch-Jozsa 알고리즘이 원래 해결하도록 설계된 쿼리 문제인 Deutsch-Jozsa 문제부터 시작하겠습니다.
이 문제의 입력 함수는 임의의 양의 정수 n에 대해 f:Σn→Σ 형태를 취합니다.
Deutsch의 문제와 마찬가지로, 과제는 f가 상수 함수이면 0을, f가 균형 함수이면 1을 출력하는 것입니다. 여기서 균형이란 함수가 0을 취하는 입력 문자열의 수와 함수가 1을 취하는 입력 문자열의 수가 같다는 의미입니다.
n이 1보다 클 때, f:Σn→Σ 형태의 함수 중 상수도 균형도 아닌 함수가 존재한다는 점에 주목하세요.
예를 들어, 다음과 같이 정의된 함수 f:Σ2→Σ는
f(00)f(01)f(10)f(11)=0=0=0=1
이 두 범주 중 어디에도 속하지 않습니다.
Deutsch-Jozsa 문제에서는 이런 함수는 단순히 고려하지 않습니다 — 이들은 "신경 쓰지 않는" 입력으로 취급됩니다.
즉, 이 문제에서는 f가 상수 함수이거나 균형 함수라는 약속이 주어집니다.
Deutsch-Jozsa 문제
입력: 함수 f:{0,1}n→{0,1}
약속: f는 상수 함수이거나 균형 함수
출력: f가 상수 함수이면 0, f가 균형 함수이면 1
Deutsch-Jozsa 알고리즘은 단 하나의 쿼리로 이 문제를 다음과 같은 방식으로 해결합니다:
n개의 측정 결과가 모두 0이면 함수 f는 상수 함수이고,
그렇지 않아서 측정 결과 중 하나 이상이 1이면 함수 f는 균형 함수입니다.
다른 방법으로 표현하면, 위에서 설명한 Circuit 이후에 측정 결과들의 OR를 계산하여 출력을 생성하는 고전 후처리 단계가 뒤따릅니다.
Deutsch-Jozsa 문제에 대한 Deutsch-Jozsa 알고리즘의 성능을 분석하려면, 먼저 Hadamard Gate 한 층의 작용에 대해 생각해 보는 것이 도움이 됩니다.
Hadamard 연산은 일반적인 방식으로 행렬로 표현할 수 있습니다.
H=(212121−21),
그러나 표준 기저 상태에 대한 작용으로도 이 연산을 표현할 수 있습니다:
H∣0⟩H∣1⟩=21∣0⟩+21∣1⟩=21∣0⟩−21∣1⟩.
이 두 식을 하나의 공식으로 결합하면,
H∣a⟩=21∣0⟩+21(−1)a∣1⟩=21b∈{0,1}∑(−1)ab∣b⟩,
이는 a∈Σ의 두 가지 선택 모두에 대해 성립합니다.
이제 단일 Qubit 대신 n개의 Qubit이 있고, 각 Qubit에 Hadamard 연산이 수행된다고 가정해 보겠습니다.
n개의 Qubit에 대한 결합 연산은 텐서 곱 H⊗⋯⊗H (n번)로 설명되며, 간결하고 명확하게 H⊗n으로 표기합니다.
위의 공식을 사용하여 전개한 후 단순화하면, n개의 Qubit의 표준 기저 상태에 대한 이 결합 연산의 작용을 다음과 같이 표현할 수 있습니다: