Похоже, что работает как задумано. В учебнике к концу ячейки кода написано:
В принципе, если протокол телепортации сработал, мы имеем q [2] = secret_unitary | 0> В результате мы должны быть в состоянии восстановить q [2] = | 0>, применяя обратную переменную secret_unitary, поскольку для унитарного u, u ^ dagger u = I.
У вас был secret_unitary
как 'x', который фактически изменяет первый кубит Алисы на 1. Но в конце цепи применяется кинжал secret_unitary, отменяя первоначальное применение secret_unitary
. Вы должны ожидать увидеть 0 для q [2], так как это означает, что состояние из q [0] (в данном случае 1) было успешно телепортировано в q [2], а затем возвращено в 0 кинжалом secret_unitary
.