通信複雑性
両者がランダム列を共有できれば(共有ランダム列プロトコル)、乱択プロトコルを作成するのは簡単である。ランダム列を共有しない場合でも(秘密ランダム列プロトコル)、小さな通信コストで乱択プロトコルを構築することが可能である。n ビットの文字列を使った共有ランダム列乱択プロトコルは、追加の O(log n) ビットの通信を行う秘密ランダム列プロトコルでシミュレート可能である。
直感的に、若干の誤りの増加を伴えば充分なランダム性を持った文字列の集合で乱択プロトコルを実行することができる。この集合は事前に両者で共有しておく。従って、アリスとボブはその集合のうち、どの文字列を使用するかに関して合意すればよい。このとき、文字列の集合は選択のための通信を効率的に行うためにも最小限でよい。形式的な証明は以下の通り。
最大エラー率 0.1 の乱択プロトコル P を考える。 R {\displaystyle R} は長さ n {\displaystyle n} の文字列が 100 n {\displaystyle 100n} 個存在する集合であり、各文字列には r 1 , r 2 , . . . , r 100 n {\displaystyle r_{1},r_{2},...,r_{100n}} と番号が振られている。 R {\displaystyle R} を使った新たなプロトコル P R ′ {\displaystyle P'_{R}} は、無作為に r i {\displaystyle r_{i}} 番の文字列を選択した上で、それを共有ランダム列として P を実行する。
この行列の行は x {\displaystyle x} ∈ {\displaystyle \in } X に対応して並んでおり、列は y {\displaystyle y} ∈ {\displaystyle \in } Y に対応して並んでいる。入力行列の各要素は A x , y = f ( x , y ) {\displaystyle A_{\mathrm {x,y} }=f(x,y)} である。初期状態でアリスもボブも行列 A 全体を知っている(つまり、両者は関数 f {\displaystyle f} を知っている)。そうすると、関数の値の計算問題は対応する行列の要素を選び取る問題に変換される。この問題はアリスかボブのどちらかが x {\displaystyle x} と y {\displaystyle y} の両方を知った時点で答えがわかる。通信を開始するとき、答えとしてありうるのは行列の全要素なので n 2 {\displaystyle n^{2}} 個存在する。その後、互いに 1ビットずつ通信すると、解ではあり得ない行や列が除外されていく。
より形式的に表現すると、集合 R ⊆ {\displaystyle \subseteq } X × {\displaystyle \times } Y があり、 ( x 1 , y 1 ) {\displaystyle (x_{1},y_{1})} ∈ {\displaystyle \in } R かつ ( x 2 , y 2 ) {\displaystyle (x_{2},y_{2})} ∈ {\displaystyle \in } R のとき常に ( x 1 , y 2 ) {\displaystyle (x_{1},y_{2})} ∈ {\displaystyle \in } R ならば、R を長方形であるという。