Поддерживает ли 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 #.

Другие вопросы по тегам