이제 까지 계속 알고리즘에 이 유니터리가 나왔는데요.
구체적으로 어떻게 구현하는지 알아보려고 합니다.

우리가 어떤 임의의 매트릭스가 있을 때 그거의 원소를 확인하는 법은 무엇일까요?

일단 다음과 같이 오른쪽에 0 벡터를 곱하면 0번째 열이 나옵니다.
1 벡터를 곱하면 1번째 열이 나오고요.
오른쪽에 곱하는 건 그거에 해당하는 열을 뽑아낸다고 생각 할 수 있습니다.

반대로 왼쪽에 곱해주면 행이 나오게 됩니다.

이걸 합치면
우리는 임의의 매트릭스에 i번째 행 j번째 열 값을 특정할 수 있습니다.

이것을 이용해서 Query Unitary의 원소를 알아봅시다.


이런 쿼리 유니터리라고 가정합시다.
입력이 n비트 출력이 1비트인 유니터리요.

여기에 ij는 행을 kl은 열을 담당합니다.
계산을 하면 i랑 k가 다르면 내적이 항상 0 이므로 i랑 k가 다른 곳은 매트릭스에서 항상 0 인것을 알 수 있습니다.

n=2 인 경우를 한번 예시로 봐봅시다.


n이 2인 경우 만약 001행 010 열의 원소를 알아보면 00과 01이 달라서 0이 되는 걸 볼 수 있습니다.


i랑 k가 다를때 0 이란 말은 다르게 말하면 i와 k가 같을 때만 값을 가진다는 말입니다. 그걸 그림에 표시해보면 저 파란박스만 값을 가진다는 걸 알 수 있습니다. 각각 i=k=00 , i=k=01, i=k=10, i=k=11 인 경우이고 대각선 형태로 분포되어있습니다.


네모 박스 안을 살펴보면 f(00)이 1이라면 노란색이 1이 되고 f(00)이 0이라면 초록색이 1 이됩니다.

이렇게 Query Unitary는 손쉽게 f(x)값만 알면 우리가 충분히 매트릭스로 구현할 수 있습니다.





공부한거 정리라 틀린 내용 포함 가능
profile
바다건너대학생

0개의 댓글