Для реализации протокола «ментальный покер» используется параметризованное семейство унитарных матриц. В данном случае используется семейство матриц размера 2^4x2^4 с параметрами P_1=23, P_2=5, P_3=7, P_4=14. Для каждого раунда каждый участник (будем называть их Alice и Bob) выбирает случайным образом две унитарные матрицы из семейства, а затем сообщает другому свой выбор. Затем общая унитарная матрица получается как произведение выбранных матриц.
Таким образом, мы имеем дело с протоколом, который использует квантовую случайность.
Для того, чтобы узнать, какая карта поступила абонентам Alice и Bob, необходимо использовать кодирование информации в квантовых состояниях.
Пусть карты в данном примере кодируются следующим образом: карта 1 соответствует состоянию |0⟩, карта 2 - состоянию |1⟩, карта 3 - состоянию |+⟩ (сумма состояний |0⟩ и |1⟩), карта 4 - состоянию |-⟩ (разность состояний |0⟩ и |1⟩).
Абоненту Alice необходимо переставить карты по правилу 1,2,3(3,2,1), то есть сначала поменять местами первую и последнюю карты, затем поменять местами вторую и четвертую, а затем поменять местами первую и третью.
Абоненту Bob необходимо выбрать первое число и использовать замену 1,2(2,1). То есть если Bob выбрал первое число, то он должен оставить карту на месте, а если выбрал второе число, то он должен поменять местами первую и вторую карты.
После этого Alice и Bob должны сообщить друг другу выбранные ими унитарные матрицы. Например, пусть Alice выбрала матрицы A1 и A2, а Bob выбрал матрицы B2 и B1.
Общая унитарная матрица U=A1B2A2B1. После этого каждый из участников выполняет измерение квантового состояния, которое соответствует его карте, в базисе {С|0⟩, |1⟩, |+⟩, |-⟩}. При этом вероятность измерения i-го состояния, если было выбрано j-е число (1 или 2), равна |(U|j⟩i)|^2.
Таким образом, если Альфа выбрал вторую из полученных цифр, то он должен произвести измерение своего квантового состояния в базисе {С|0⟩, |1⟩, |+⟩, |-⟩} и получить результат, который соответствует одной из карт.
Для определения, какая карта поступила абонентам Alice и Bob, необходимо рассчитать вероятность для каждого из возможных исходов. Например, если Alice и Bob выбрали матрицы A1=[[-0.067+0.571i, 0.498+0.458i], [0.634-0.312i, -0.396+0.537i]] и B2=[[-0.833+0.095i, -0.547-0.065i], [-0.171+0.466i, 0.112+0.182i]], то общая унитарная матрица U=A1B2A2B1=[[-0.194+0.432i, -0.279-0.537i], [0.088+0.344i, -0.821+0.282i]]. Пусть Alice имеет карту, которая кодируется состоянием |-⟩, тогда ее квантовое состояние до измерения будет U|1⟩|-⟩=[0.088+0.344i, -0.821+0.282i], и вероятность получить результат |0⟩ равна |(U|1⟩|-⟩)|^2=0.13, вероятность получить результат |1⟩ равна |(U|2⟩|-⟩)|^2=0.87, вероятность получить результат |+⟩ равна |(U|3⟩|-⟩)|^2=0.01, вероятность получить результат |-⟩ равна |(U|4⟩|-⟩)|^2=1.13*10^{-4}. Таким образом, с вероятностью около 0.87 абоненту Alice пришла карта, которая соответствует состоянию |1⟩, а с вероятностью 1.13*10^{-4} - карта, которая соответствует состоянию |-⟩.
Аналогично можно определить, какая карта поступила абоненту Bob. Если он выбрал первое число, то он должен измерить свое квантовое состояние в базисе {С|0⟩, |1⟩, |+⟩, |-⟩}. Если он выбрал второе число, то он должен изменить порядок результатов измерения карты, то есть если вероятность получения карты в нормальном порядке равна p, то вероятность получения карты в обратном порядке равна 1-p.
Таким образом, чтобы определить, какая карта была получена абонентами Alice и Bob в данном примере, необходимо выполнить несколько шагов протокола: перемешивание карты по определенным правилам, выбор унитарных матриц и их произведение, измерения квантовых состояний в базисе {С|0⟩, |1⟩, |+⟩, |-⟩} для каждой из возможных карт. Результат определения карты зависит от вероятностей результатов измерений и выбранных унитарных матриц, которые, в свою очередь, зависят от квантовой случайности.