バーンスタイン・ヴァジラニとサイモン
隠れた秘密ビット列をたった1回の問い合わせで丸ごと当てるバーンスタイン・ヴァジラニと、周期を暴いて古典に指数差をつけるサイモンを、Shorへ橋渡しする原理から腑に落とせます。
- 1.バーンスタイン・ヴァジラニは、内積 f(x)=s·x を計算するオラクルに隠れた n ビットの秘密列 s を、古典は n 回の問い合わせが要るところ量子は1回で全ビット確定できる。仕組みはドイチュ–ジョザと同じ位相キックバックとアダマール干渉。
- 2.サイモンは、f(x)=f(y) が x⊕y ∈ `{0,s}` のときだけ成り立つ2対1関数の隠れた周期 s を求める問題で、古典は指数回、量子は多項式回の問い合わせで解ける。証明可能な指数分離を初めて示した。
- 3.サイモンの1回の実行は s に直交する式 y·s=0 を1本得るだけで、n−1 本集めて古典の連立一次方程式(GF(2))を解いて s を復元する。この量子+古典の後処理と周期発見という骨格がショアの原型になった。
ドイチュ–ジョザの次に来る2つの分離
ドイチュ–ジョザ は「量子が古典を上回れる」ことを誤りゼロで示しましたが、判定は定数か均衡かの1ビットの答えにすぎず、しかも古典でも乱択なら少数回で高確率に解けてしまいます。ここで扱うバーンスタイン・ヴァジラニ(BV)とサイモンは、その物足りなさを埋める2つの前進です。BV は「n ビットの秘密列を丸ごと1回で抜く」ことで並列性の威力を可視化し、サイモンは「乱択を許しても古典は指数回かかる」という証明可能な指数分離を初めて与えました。そしてサイモンの構造こそが、後の ショア の周期発見の設計図になります。
バーンスタイン・ヴァジラニ:秘密列を1回で抜く
問題設定はこうです。n ビットの隠れた秘密列 s(s ∈ {0,1}^n)があり、オラクルは入力 x に対して s との**内積(mod 2)**を返します。
f(x) = s·x = (s_1·x_1 ⊕ s_2·x_2 ⊕ … ⊕ s_n·x_n) (すべて mod 2)
s の中身は見えず、f への問い合わせだけで s を当てよ、というのが問題です。古典では s の各ビットを1本ずつ抜くしかありません。x = 100…0 を入れれば f = s_1、x = 010…0 なら f = s_2 ……と、n ビットを知るのに n 回の問い合わせが要ります。情報理論的にも、1回の問い合わせで得られる答えは1ビットなので、n ビットの s を確定するには n 回が古典の下限です。
古典の各問い合わせは f(x) という1ビットしか返さないため、s の n ビットを一意に決めるには最低 n ビットの情報、すなわち n 回の(一次独立な)問い合わせが必要です。乱択で回数を減らしても、線形独立でない x を選べば情報が重複し、期待値では結局 n 回を下回れません。ここが量子の1回との差になります。
量子アルゴリズムは、道具立てがドイチュ–ジョザと完全に同じです。補助ビットを |−> に用意して位相キックバックを効かせ、入力側にアダマール変換をかけて干渉させます。手順は3段です。
1. |0>^n にアダマール H^⊗n をかけ、全 x の均等な重ね合わせを作る。
2. 出力ビットを |−> にして U_f を1回適用(位相キックバック)。
→ 各基底状態に (−1)^(s·x) の符号が刻まれる:
(1/√2^n) Σ_x (−1)^(s·x) |x>
3. 入力側に再び H^⊗n をかけて測定する。
決め手はステップ3の干渉です。アダマール変換 H^⊗n は |x> を (1/√2^n) Σ_y (−1)^(x·y) |y> へ写すので、位相 (−1)^(s·x) が乗った状態全体にかけると、状態 |y> の振幅は次の和になります。
|y> の振幅 = (1/2^n) Σ_x (−1)^(s·x) · (−1)^(x·y)
= (1/2^n) Σ_x (−1)^((s⊕y)·x)
この和は、s⊕y = 0(つまり y = s)のときだけ全項が +1 で揃って 1 になり、それ以外の y では +1 と −1 が半々で完全に打ち消し合って 0 になります。したがって測定すると確率1で y = s が得られ、n ビットの秘密列が1回の問い合わせで丸ごと確定します。
BV は回路がドイチュ–ジョザとほぼ同一ですが、得られる答えの質が違います。ドイチュ–ジョザは全ビット0か否かの1ビット判定だったのに対し、BV は測定結果そのものが n ビットの s。同じ「並列性+位相キックバック+干渉」で n ビットを一挙に読み出せる点が、量子並列性の効きを直感的に示します。ただし BV の古典下限は n 回(多項式)なので、指数的ではなく線形の分離である点は正確に区別してください。
サイモン:隠れた周期と指数分離
サイモンの問題は、BV より一段深い構造を突きます。関数 f: {0,1}^n → {0,1}^n が、ある未知の秘密列 s(s ≠ 0)について次の**約束(promise)**を満たすとします。
f(x) = f(y) ⇔ x = y または x ⊕ y = s
言い換えると f は2対1で、x と x⊕s という対だけが同じ値に写ります(この s を関数の「周期」と呼びます)。目標は f への問い合わせだけで s を求めることです。
古典で s を知る唯一の手掛かりは「同じ値を返す入力対(衝突)」を見つけることです。しかし衝突は x と x⊕s のただ1対しかなく、それを総当たりで引き当てるには誕生日の議論から 2^(n/2) 回程度の問い合わせが要ります。乱択を許しても、この指数的な壁は崩れません。ここが「乱択でも少数回で解けた」ドイチュ–ジョザ・BV と決定的に違う点で、サイモンが証明可能な指数分離である核心です。
量子アルゴリズムは、1回の実行で s を直接は出しません。代わりに s に直交する式を1本取り出します。回路は入力レジスタ・出力レジスタの2本で、手順は次の通りです。
1. 入力 n 量子ビットに H^⊗n をかけ、全 x の重ね合わせを作る:
(1/√2^n) Σ_x |x>|0>
2. オラクル U_f を適用して出力レジスタに f(x) を書く:
(1/√2^n) Σ_x |x>|f(x)>
3. 出力レジスタを測定する(値 f(x0) が1つ確定)。
すると入力側は衝突対だけが残り、次の状態に射影される:
(1/√2) (|x0> + |x0 ⊕ s>)
4. 入力側に再び H^⊗n をかけて測定する。
ステップ4の干渉が肝です。(|x0> + |x0⊕s>) にアダマールをかけると、状態 |y> の振幅は (−1)^(x0·y) · (1 + (−1)^(s·y)) に比例します。ここで (1 + (−1)^(s·y)) は、s·y = 1(mod 2)なら 0、s·y = 0 なら 2 になります。つまり測定で得られる y は必ず y·s = 0(mod 2)を満たすものだけで、しかも該当する y の中では一様ランダムに出ます。
測定結果 y は必ず y·s ≡ 0 (mod 2) を満たす。
1回の実行は s を未知数とする一次方程式 y·s = 0 を1本与えるだけです。これを繰り返して線形独立な式を n−1 本集めると、GF(2)(2元体)上の連立一次方程式になり、ガウス消去で解けます。非自明な解がちょうど s です(自明解 0 は約束で除外済み)。線形独立な式が n−1 本揃う確率は高く、期待でも O(n) 回の実行で足ります。
サイモンの本質は、量子並列性そのものではなく「衝突対 {x0, x0⊕s} への射影」と「アダマール干渉が s 直交条件をふるいにかける」設計にあります。1回の量子実行が返すのは s ではなく s に直交するランダムな1ベクトル。s の復元は古典の連立方程式解法が担います。この「量子で制約を集め、古典で解く」という役割分担は、ショアで「量子で位相 s/r を測り、古典で連分数展開して周期を復元する」構図とそっくりです。
Shorへの橋渡し ── 周期発見という共通骨格
サイモンとショアは、表面上は別物(GF(2) の隠れた周期 対 整数の位数)ですが、設計の骨格が同じです。どちらも「関数に隠れた周期構造」を突き止める問題で、量子の役割は周期に紐づく制約を干渉で浮かび上がらせることに尽き、最終的な数の復元は古典後処理に任せます。
| 観点 | サイモン | ショア |
|---|---|---|
| 隠れた構造 | GF(2) 上の周期 s(f(x)=f(x⊕s)) | 整数の位数 r(a^r ≡ 1 mod N) |
| 群 | 加法群 (Z/2)^n(べき和はXOR) | 乗法群 (Z/N)* に絡む Z 上の周期 |
| 干渉の道具 | アダマール変換((Z/2)^n のフーリエ変換) | 量子フーリエ変換(Z/2^t のフーリエ変換) |
| 1回で得るもの | s に直交する式 y·s=0 を1本 | s/r に近い位相の測定値を1つ |
| 古典の後処理 | 連立一次方程式をガウス消去 | 連分数展開で分母 r を復元 |
| 古典との差 | 指数分離(証明済み・ブラックボックス) | 準指数 対 多項式(素因数分解) |
橋渡しの核心は「アダマール変換は (Z/2)^n 上のフーリエ変換にほかならない」という視点です。サイモンの周期は XOR((Z/2)^n の群演算)に対する周期で、その周期を暴くのが同じ群のフーリエ変換=アダマールでした。ショアはこの枠組みを、周期が整数の加法群 Z に載る場合へ一般化し、(Z/2)^n のフーリエ変換の代わりに 量子フーリエ変換 を使ったもの——というのが正確な関係です。実際ショア自身が、サイモンのアルゴリズムから着想を得たと述べています。両者はまとめて「隠れた部分群問題(Hidden Subgroup Problem, HSP)」の可換群の場合として統一的に理解できます。
BV・サイモン・ショア・ドイチュ–ジョザは、いずれも「群 G 上の関数 f が、ある部分群 H の剰余類ごとに一定値をとる。H を求めよ」という HSP の特殊例です。G が可換(アーベル)群のときは量子フーリエ変換で効率よく解け、これが既知の指数加速の大半を説明します。一方、非可換群の HSP(グラフ同型や格子問題が関係)は未解決で、ここに現在の量子アルゴリズム研究のフロンティアがあります。
3つのアルゴリズムの計算量まとめ
同じ「並列性+位相/フーリエ干渉」を使っても、古典との差は問題構造で大きく変わります。
| アルゴリズム | 求めるもの | 古典(誤りゼロ/乱択) | 量子 | 分離 |
|---|---|---|---|---|
| ドイチュ–ジョザ | 定数か均衡か(1ビット) | 決定的 2^(n−1)+1 回/乱択は少数回 | 1 回 | 誤りゼロなら指数、乱択込みでは無し |
| バーンスタイン・ヴァジラニ | 秘密列 s(n ビット) | n 回(乱択でも n 回) | 1 回 | 線形(n 対 1) |
| サイモン | 周期 s(n ビット) | 約 2^(n/2) 回(乱択でも指数) | O(n) 回 | 指数(証明可能) |
BV は「1回で n ビット」というインパクトで並列性を見せますが、古典下限も多項式なので線形の分離です。対してサイモンは、乱択を許しても古典が指数回を要する点で質的に強く、これが「量子は本当に速い」と胸を張れる最初の指数分離になりました。詳しい分離の意味と限界は 量子計算量クラス(BQP) で扱っています。
- BV の問題:
f(x)=s·xの内積オラクルから n ビットのsを当てる。古典 n 回、量子1回。回路はドイチュ–ジョザと同じ位相キックバック+アダマール干渉。 - BV の干渉:
(−1)^(s·x)を全基底に刻み、H^⊗n後に振幅が(1/2^n)Σ_x(−1)^((s⊕y)·x)となりy=sだけ確率1で残る。 - サイモンの約束:
f(x)=f(y) ⇔ x⊕y ∈ {0,s}の2対1関数。古典は衝突探索で約2^(n/2)回、量子はO(n)回。 - サイモンの後処理:1実行は
y·s=0を1本得るだけ。n−1本集めて GF(2) の連立方程式をガウス消去しsを復元。 - 分離の質:BV は線形分離、サイモンは証明可能な指数分離。ここを混同しないこと。
- ショアとの関係:サイモンの周期発見+古典後処理がショアの原型。アダマール=
(Z/2)^nのフーリエ変換を QFT に一般化したのがショア。両者とも可換 HSP。
まとめ
- バーンスタイン・ヴァジラニは、内積オラクルに隠れた n ビットの秘密列
sを、位相キックバックで(−1)^(s·x)を刻みアダマール干渉でy=sに確率1を集中させることで、1回の問い合わせで丸ごと読み出す。古典下限は n 回で、これは線形の分離。 - サイモンは、
f(x)=f(x⊕s)という隠れた周期sを、衝突対への射影とアダマール干渉でy·s=0の式に変え、n−1本集めて GF(2) の連立方程式を解いて復元する。古典は乱択でも約2^(n/2)回を要し、証明可能な指数分離を与えた最初の例。 - 両者は「量子で周期に紐づく制約を集め、古典で数を解く」という役割分担を共有し、これがそのまま ショア の周期発見(QPE+連分数展開)の設計図になった。統一視点は可換群の隠れた部分群問題で、既知の指数加速の骨格を成す。
量子コンピューティング Article
バーンスタイン・ヴァジラニとサイモンを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
量子アルゴリズム
比較で見る軸
難易度: advanced / カテゴリ: 量子コンピューティング / タグ数: 6
導入後に効く点
サイモンは、f(x)=f(y) が x⊕y ∈ `{0,s}` のときだけ成り立つ2対1関数の隠れた周期 s を求める問題で、古典は指数回、量子は多項式回の問い合わせで解ける。証明可能な指数分離を初めて示した。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- 量子コンピューティング
- タグ数
- 6
判断チェックリスト
- 自社の用途が「量子アルゴリズム / バーンスタイン・ヴァジラニ」に近いか確認する。
- 強みである「バーンスタイン・ヴァジラニは、内積 f(x)=s·x を計算するオラクルに隠れた n ビットの秘密列 s を、古典は n 回の問い合わせが要るところ量子は1回で全ビット確定できる。仕組みはドイチュ–ジョザと同じ位相キックバックとアダマール干渉。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。