量子力学と量子コンピューターについての学習メモ #4
シリーズとしては少し間が空いてしまったが前回の続き
ショアのアルゴリズム
ショアのアルゴリズムは、有名な因数分解の量子計算アルゴリズムである。因数分解したい数を とする。
まず に対して、お互いに約数を持たないような より小さい数 を決める。 と が互いに約数を持つかはユークリットの互除法で判定する。
と を用いて、 のあまりが 1 を満たす自然数 を探す。
この時に求まった が奇数だった場合、手順 1. に戻り を選び直してやり直す。この場合、 は偶数なので、次の手順に進む。
- この段階で のあまりは 1 となっているはずである。つまり、 は の整数倍となっているはずだ。一方で は、 と を掛け合わせたものであり、その二つのどちらかと は公約数を持っているはずである。今 と の最大公約数を とすると、 はすなわち の因数なので、これで の因数分解ができたことになる。