Я чувствую, что этот ответ в основном основан на неправильном понимании того, что значит «симулировать» что-то.
Вообще говоря, «моделировать» сложную систему - значит воспроизводить определенные особенности такой системы на платформе, которую легче контролировать (часто, но не всегда, на классическом компьютере).
Поэтому вопрос о том, можно ли «симулировать квантовый компьютер в классическом компьютере», несколько некорректен. Если вы имеете в виду, что хотите воспроизвести каждый возможный аспект «квантового компьютера», то этого никогда не произойдет, точно так же, как вы никогда не сможете смоделировать каждый аспект любой классической системы (если вы не используете один и тот же идентичный система конечно).
С другой стороны, вы, безусловно, можете моделировать многие аспекты сложного устройства, такого как «квантовый компьютер». Например, можно моделировать эволюцию состояния в квантовой цепи. Действительно, это может быть чрезвычайно легко сделать! Например, если у вас есть Python на вашем компьютере, просто запустите следующее
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)
Поздравляем, вы просто «смоделировали» эволюцию сепарабельного состояния с двумя кубитами в состояние Белла!
Однако, если вы попытаетесь сделать то же самое, скажем, с 40 кубитами и нетривиальными воротами, вы не сможете легко справиться с этим. Наивная причина в том, что даже просто сохранить состояниеN-qubit (не разреженное) состояние, которое нужно указать ~2Nкомплексные числа, и это начинает занимать много памяти очень быстро. Я говорю «наивный» здесь, потому что во многих случаях могут быть хитрости, которые позволяют вам избежать этой проблемы( 1 ), Вот почему многие люди пытаются найти хитрые уловки для моделирования квантовых цепей (и других типов квантовых систем) на классических компьютерах, и почему это далеко не тривиально( 2 ),
В других ответах уже затрагивались различные аспекты этой сложности, а в ответах на этот другой вопрос уже упоминалось множество доступных платформ для имитации / эмуляции различных аспектов квантовых алгоритмов, поэтому я не буду идти туда.
(1)
Интересным примером этого является проблема моделирования устройства отбора проб бозона (это не квантовый алгоритм в смысле состояния, развивающегося через серию затворов, но, тем не менее, это пример нетривиального квантового устройства). BosonSampling - это проблема сэмплирования , в которой стоит задача выборки.из конкретного распределения вероятности, и это было показано (при вероятных предположениях), что невозможно сделать эффективно с классическим устройством. Хотя никогда не было показано, что он является фундаментальным аспектом этой твердости, безусловно, нетривиальная проблема, связанная с моделированием устройства для отбора проб бозона, заключалась в том, что ему приходилось вычислять экспоненциально большое число вероятностей, из которых можно производить выборку. Однако недавно было показано, что действительно не нужно вычислять весь набор вероятностей для выборки из них ( 1705.00686 и 1706.01260). В принципе, это недалеко от моделирования эволюции большого количества кубитов в квантовой цепи без необходимости хранить все состояние системы в любой заданной точке. Что касается более непосредственно квантовых цепей, примеры недавнего прорыва в возможностях моделирования - 1704.01127
и 1710.05867 (также суперсовременная, еще не опубликованная, - 1802.06952 ).
(2)
На самом деле, было показано (или, скорее, были представлены убедительные доказательства этого факта), что невозможно эффективно моделировать большинство квантовых цепей, см. 1504.07999 .