Nand2Tetris 코스 에서 사람들이 처음부터 고전적인 컴퓨터를 만드는 방법과 같이 시뮬레이션 내부에서 처음부터 양자 컴퓨터 구축을 시작하려는 경우 가능합니까?
그렇다면 가능한 방법은 무엇입니까?
또한 특정 양의 고전적인 컴퓨팅 성능을 고려할 때 이러한 시뮬레이션 된 머신의 한계는 무엇입니까? 예를 들어 평균 데스크탑 / 노트북을 선택한다면 한계는 무엇입니까? Titan과 같은 슈퍼 컴퓨터를 사용한다면 한계는 무엇입니까?
Nand2Tetris 코스 에서 사람들이 처음부터 고전적인 컴퓨터를 만드는 방법과 같이 시뮬레이션 내부에서 처음부터 양자 컴퓨터 구축을 시작하려는 경우 가능합니까?
그렇다면 가능한 방법은 무엇입니까?
또한 특정 양의 고전적인 컴퓨팅 성능을 고려할 때 이러한 시뮬레이션 된 머신의 한계는 무엇입니까? 예를 들어 평균 데스크탑 / 노트북을 선택한다면 한계는 무엇입니까? Titan과 같은 슈퍼 컴퓨터를 사용한다면 한계는 무엇입니까?
답변:
질문의 첫 부분은 기존 QC SE 게시물의 복제본처럼 보입니다. 퀀텀 컴퓨터를위한 에뮬레이터가 있습니까? .
나는 완전히 당신이 무슨 뜻인지 모르겠어요 구축 양자 컴퓨터 스크래치에서 내부 시뮬레이션을 . 그러나 일반적인 랩톱 / 데스크톱을 사용하여 양자 컴퓨터의 소프트웨어 시뮬레이션을 수행 할 수 있습니다. 정확한 "제한"은 컴퓨터 사양에 따라 다릅니다.
양자 컴퓨터는 Church-Turing 논문을 위반하지 않기 때문에 이론적으로 이상적인 Turing 기계를 사용하여 양자 컴퓨터를 시뮬레이션 할 수 있습니다 . 이러한 시스템을 시뮬레이트하기위한 확실한 접근 방법은 고전적인 컴퓨터에서 지수 시간을 필요로하며 공간 복잡도는 시뮬레이션 된 양자 비트 수의 지수 함수입니다. 비트 양자 컴퓨터 를 시뮬레이션한다고 가정하면 약 2 을 저장해야합니다 모든 순간에 당신의 고전 컴퓨터의 정보 비트를. 또한, 양자 게이트의 구현은 시간 및 공간 복잡성 측면에서 다시 많은 양의 자원을 필요로한다. n-qubits에서작동하는 양자 게이트의 구현은 (모든 양자 게이트 연산을 크기 2 n × 2 n 의 행렬로 나타낼 수 있기 때문에) 비트의 정보.
클래식 컴퓨터의 사양에 따라 "제한"을 추정 할 수 있습니다. 예를 들어 당신의 고전적인 컴퓨터 (접근) 메모리 크기는 약의 경우 TB 난 당신이 시뮬레이션 할 수 있습니다 기대할 로그에게 4 ( 8 × 10 12 ) ≈ 21 (안전을 위해의가 있다고 가정 해 봅시다 비트 양자 컴퓨터 (20) ). 그러나 클래식 컴퓨터는 실제 양자 컴퓨터 (양자 컴퓨터의 하드웨어에 따라 다름)에 비해 모든 개별 정보 비트에 액세스 하는 데 훨씬 더 많은 시간이 소요됩니다 . 그래서 느려질 것입니다실제 양자 컴퓨터보다! 다른 제한 사항은 -qubit 게이트 의 각 동작 후에 어떤 출력 큐 비트가 얽혀 있는지 추적해야한다는 점입니다. 이는 NP-hard 문제입니다. 또한 고전 컴퓨터에는 실제로 난수 생성기 가 없으므로 측정을 정확하게 컴퓨터에서 시뮬레이션 할 수 없습니다 .
글쎄, 나는 현재 양자 컴퓨터의 시뮬레이터에서 일하고 있습니다. 물론, 양자 컴퓨팅의 기본 개념은 벡터로 표현되는 큐 비트에 적용되는 행렬로 표현 된 게이트입니다. 파이썬의 numpy 패키지를 사용하면 가장 기본적인 의미에서 프로그래밍하기가 어렵지 않습니다.
거기에서 인터페이스를 확장 할 수 있습니다. 또한 비정질 양자 컴퓨터의 시뮬레이터, 즉 디코 히 런스 시간과 오류 수정을 고려하여 시뮬레이터로 만드는 것을 고려할 수도 있습니다.
그런 다음, 미지의 영역으로 들어갑니다. 양자 컴퓨터에 대한 명령어 세트를 어떻게 구성합니까? 누가 알아. 알아 내야합니다. 또한 어셈블리 버전과 고급 프로그래밍 언어 버전도 파악해야합니다.
그렇다면 고전적인 컴퓨터의 한계는 무엇입니까? 글쎄, 이것은 정말 복잡한 질문이며 (imho는 별도로 물어볼 가치가 있지만) 다음은 요약입니다.
나는이 답변이 무엇인가를 "시뮬레이션"한다는 것이 무엇을 의미하는지에 대한 근본적인 오해에 주로 달려 있다고 생각한다.
일반적으로 복잡한 시스템을 "시뮬레이션"한다는 것은 제어하기 쉬운 플랫폼 (종종 클래식 컴퓨터는 아님)으로 그러한 시스템의 특정 기능을 재현하는 것을 의미합니다.
따라서 "일부 컴퓨터에서 양자 컴퓨터를 시뮬레이션 할 수 있는지"에 대한 의문은 다소 잘못된 것입니다. "양자 컴퓨터"의 모든 가능한 측면을 복제하려는 경우, 동일한 동일한 시스템을 사용하지 않는 한 기존 시스템의 모든 측면을 시뮬레이션 할 수없는 것처럼 절대 일어나지 않을 것입니다 물론 시스템).
반면에 "양자 컴퓨터"와 같은 복잡한 장치의 여러 측면을 시뮬레이션 할 수 있습니다 . 예를 들어, 양자 회로 내에서 상태의 진화를 시뮬레이션 할 수있다. 실제로, 이것은 매우 쉽게 할 수 있습니다! 예를 들어, 컴퓨터에 파이썬이 있다면 다음을 실행하십시오.
import numpy as np
identity_2d = np.diag([1, 1])
pauliX_gate = np.array([[0, 1], [1, 0]])
hadamard_gate = np.array([[1, 1], [1, -1]]) / np.sqrt(2)
cnot_gate = np.kron(identity_2d, pauliX_gate)
H1_gate = np.kron(hadamard_gate, identity_2d)
awesome_entangling_gate = np.dot(cnot_gate, H1_gate)
initial_state = np.array([1, 0, 0, 0])
final_state = np.dot(awesome_entangling_gate, initial_state)
print(final_state)
축하합니다. 분리 가능한 2 큐 비트 상태가 벨 상태로 진화 한 것을 "시뮬레이션"했습니다!
그러나 40 큐 비트와 사소한 게이트로 동일한 작업을 시도하면 쉽게 제거 할 수 없습니다. 순진한 이유는 심지어 상태를 저장하는 것입니다.-qubit (비스 파스) 상태를 지정해야합니다 ~복잡한 숫자, 그리고 이것은 많은 메모리를 매우 빠르게 가져 오기 시작합니다. 많은 경우이 문제를 피할 수있는 트릭이있을 수 있으므로 "순진"이라고합니다.. 그렇기 때문에 많은 사람들이 고전적인 컴퓨터로 양자 회로 (및 다른 유형의 양자 시스템)를 시뮬레이션하는 영리한 트릭을 찾으려고 노력하는 이유는 무엇입니까?.
다른 대답은 이미이 경도의 다양한 측면에 대해 언급 했으며이 다른 질문에 대한 답변은 이미 양자 알고리즘의 다양한 측면을 시뮬레이션 / 에뮬레이션 할 수있는 많은 플랫폼을 언급 했으므로 거기에 가지 않겠습니다.
(1) 이것의 흥미로운 예는 보손 샘플링 장치 를 시뮬레이션하는 문제입니다 (이것은 일련의 게이트를 통해 진화하는 상태의 관점에서 양자 알고리즘이 아니지만 그럼에도 불구하고 사소한 양자 장치의 예입니다). BosonSampling은 샘플링 문제 이며 다음과 같은 문제가 있습니다. 샘플링특정 확률 분포에서 비롯된 것으로, 이것은 (가정 한 가정 하에서) 기존 장치로는 효율적으로 수행 할 수없는 것으로 나타났습니다. 비록 이것이이 경도의 근본적인 측면 인 것처럼 보이지는 않았지만, 보손 샘플링 장치를 시뮬레이션하는 것과 관련된 분명한 사소한 문제는 샘플링 할 기하 급수적으로 많은 확률을 계산해야하는 문제였습니다. 그러나 최근에 표본에서 추출하기 위해 전체 확률 세트를 계산할 필요가 없음이 최근에 나타났습니다 ( 1705.00686 및 1706.01260).). 이것은 원칙적으로 주어진 지점에서 시스템의 전체 상태를 저장하지 않고도 양자 회로에서 많은 큐 비트의 진화를 시뮬레이션하는 것과 멀지 않습니다. 보다 직접적인 양자 회로와 관련하여, 시뮬레이션 기능의 최근 돌파구의 예는 1704.01127 및 1710.05867입니다 (아직 공개되지 않은 초창기 회로 는 1802.06952 임 ).
(2) 실제로, 대부분의 양자 회로를 효율적으로 시뮬레이션 할 수없는 것으로 나타났습니다 (또는 1504.07999 참조) .