Поддерживает ли Q# состояние кубита после выполнения измерения?
Это проблема в упражнениях Quantum Katas от Microsoft.
// Input: Two qubits (stored in an array) which are guaranteed to be
// either in superposition of states |00⟩ and |11⟩
// or in superposition of states |01⟩ and |10⟩.
// Output: 0 if qubits were in the first superposition,
// 1 if they were in the second superposition.
// The state of the qubits at the end of the operation should be the same as the starting state
Решение, данное в ссылочной реализации, является следующим:
operation ParityMeasurement_Reference (qs : Qubit[]) : Int {
return Measure([PauliZ, PauliZ], qs) == Zero ? 0 | 1;
}
Как можно сохранить состояние кубитов, если выполняется операция измерения? Или функция Measure() работает по-другому?
1 ответ
Давайте начнем с более простого сценария: измерение одного кубита в вычислительном отношении. Как правило, его состояние будет изменяться от α|0⟩ + β|1⟩ до | 0⟩ или |1⟩, в зависимости от результатов измерения. Но если кубит уже находился в состоянии | 0⟩ (или |1⟩ - оба являются собственными состояниями измеряемой наблюдаемой величины), измерение не изменит свое состояние.
В общем случае проективные измерения проецируют состояние системы на собственное пространство наблюдаемой с собственным значением, которое соответствует результату измерения. Если кубит уже находился в собственном состоянии, результат измерения определен с уверенностью, и проекция не изменит состояние.
Теперь вернемся к исходному заданию. Вам даны два кубита либо в состоянии α|00⟩ + β|11⟩, либо в состоянии α|01 β + β|10⟩.
Если вы ограничите свои измерения измерениями в одном кубите в вычислительной основе (реализовано как операция M в Q#), вы все равно можете различать состояния, но они будут изменяться, сворачиваясь в |00⟩/|11⟩ или в |01⟩/|10⟩ состояний, в зависимости от результатов измерений, - вы можете проверить это в предыдущем задании ката измерений. Чтобы иметь возможность различать состояния, не меняя их, вам нужно вычислить наблюдаемую величину, которая имеет эти два состояния как собственные состояния с различными собственными значениями.
Рассмотрим оператор Z ⊗ Z (который применяет Z-вентиль к обоим кубитам): α|00⟩ + β|11⟩ является собственным состоянием с собственным значением 1, а α|01⟩ + β|10⟩ является собственным состоянием с собственным значением -1. Если вы измерите этот оператор, вы сможете различать состояния, не меняя их. Этот тип измерения называется совместным измерением или измерением четности (измерение нескольких кубитов на основе Z аналогично измерению четности состояния, состояния с четным числом 1 имеют собственное значение 1, а состояния с нечетным числом 1 имеют Собственное значение -1). И это именно тот тип измерения, который выполняет операция Measure.
Вы можете прочитать больше о многобитовых измерениях Паули в документации Q #.