Хочу оформить новой темой, т.к. тут не болтовня а конкретика — а именно программный код на OPENQASM. Т.к. кубитовых операций не много, то можно выполнить на классическом компьютере.
Так же вам будет лень это читать — срабатывает психологическая защита. Но если вы потратите 15 минут — ваш мир расколется на пополам, до и после. Вы уже не сможете жить и верить что чудес не бывает — эта квантовая запутанность — истинное чудо.
По этому ваш разум вас будет защищать до последнего, убеждать что не стоит тратить время, что это все обман, уловка, сектанство. Не наука. Но попробуйте — чем больше будет просветленных людей — тем лучше.
Итак, правила игры:
| | Скрытый текст |
| | Алиса и Боб заполняют всё игровое поле 3*3 значениями 0 и 1.
Условия:
1. Алиса должна заполнить строки так, чтобы сумма всех значений для каждой строки была четной. Т.е. допустимо: 0,0,0; 0,1,1; 1,0,1; 1,1,0 — в каждой строке.
2. Боб должен заполнить столбцы так, чтобы сумма всех ячеек для каждого столбца была нечетной. Допустимо: 0,0,1; 0,1,0; 1,0,0, 1,1,1 — в каждом столбике.
Далее, Ведущий называет номер строки Алисе — она отдает 3 числа — по однорму для каждой ячейки.
А Бобу ведущий называет номер столбика и Боб так же называет ведущему 3 числа — ячейки данного столбика.
При этом Алиса не знает что сказали Бобу, а Боб не знает что сказали Алисе.
Выигрывают — если на пересечении число совпало.
Есть чуть другие описания, как-то вместо 0 — используют +1, а вместо 1 — -1. Но суть не меняется.
Так вот. С помощью квантовой запутанности (если у Алисы и Боба будут девайсы, выдающие квантово-запутанные частицы) — можно читерить и выигрывать в 100% случаев. В то время как без таких девайсов выигрывать можно только в 8/9 случаев.
Еще описание: https://nplus1.ru/news/2022/07/28/Quantum-Pseudotelepathy |
| | |
А теперь код для
https://quantum.ibm.com/composer (бесплатно заходите и запускате).
OPENQASM 2.0;
include "qelib1.inc";
qreg q[4]; // Кубиты: q[0], q[1] – Алиса; q[2], q[3] – Боб
creg c[4]; // Результаты измерений (по 2 у Алисы и Боба)
// Создание запутанного состояния (стандартная схема Mermin-Peres Magic Square)
h q[0];
h q[1];
cx q[0], q[2];
cx q[1], q[3];
// На данном этапе у нас готово специфическое запутанное состояние из четырёх кубитов
// Теперь ведущий выбирает:
// Для примера возьмём конкретно:
// Алиса: строка №0 (первая строка) (X X | Y Y | Z Z)
// Боб: столбец №1 (второй столбец)
// Что измерять Алисе в строке 0? -> [X, X, X]
// Алиса измеряет оба кубита в базисе X:
h q[0]; // базис X
h q[1]; // базис X
// Что измерять Бобу в столбце 1? (второй столбец сверху вниз [Y,Z,X])
// Qубиты Bоба измеряем так:
// Первый кубит: Y (sdg+h)
// Второй кубит: Z (ничего)
sdg q[2];
h q[2]; // Y базис для 1-го кубита Боба
// Второй кубит Боба (q[3]) — Z базис, ничего не делаем
// Измерения Алисы (2 кубита -> 2 бита)
measure q[0] -> c[0];
measure q[1] -> c[1];
// Измерения Боба (2 кубита -> 2 бита)
measure q[2] -> c[2];
measure q[3] -> c[3];
Еще:
| | Скрытый текст |
| | // Измененный OPENQASM-код для случая (row=2, col=2):
OPENQASM 2.0;
include "qelib1.inc";
qreg q[4]; // Алиса q[0],q[1]; Боб q[2],q[3]
creg c[4]; // Результаты измерений
// Подготовка изначального запутанного состояния
h q[0];
h q[1];
cx q[0], q[2];
cx q[1], q[3];
// Алиса (ряд 2): измерения Z,Z (ничего делать не нужно перед измерением)
// Боб (столбец 2): q[2]=Z (ничего), q[3]=Y (надо сделать sdg;h)
sdg q[3];
h q[3];
// Измерения Алисы:
measure q[0] -> c[0];
measure q[1] -> c[1];
// Измерения Боба:
measure q[2] -> c[2];
measure q[3] -> c[3];
|
| | |
И фишка вот в чем. Если вы поменяете измерения Боба — то и измерения Алисы изменятся. При эмуляции на классическом компьютере это достигается добавлением канала связи, т.е результат одного измерения, даже если оно было сделано позже — изменяет результат другого — иначе эмулировать не получится. А в нашем реальном мире это достигается пугающим дальнодействием.
С помощью этого кода вы получите 2 бита для Алисы и 2 бита для Боба — а третий легко получить из условий четности/нечетности.