• 締切済み

量子コンピュータを用いた位数計算

大学の授業でショアのアルゴリズムを習って、そのステップに含まれる位数計算でわからないことがあります。 Mを素因数分解するとします。 そこでまず、x、M(x<M)の位数rを計算するのですが、 ここでM=15、x=7を選びます。 位数計算の最も簡単な(図を書けませんが)量子回路に入力すると、 (なお、4BITで考えます。) <アダマールゲート通過後> 1/√(2^4)Σ(K=0to2^4-1)(ケットK)(テンソル積)(ケット1) <UKゲート後> 1/√(2^4)Σ(K=0to2^4-1)(ケットK)(テンソル積)(ケット7^k mod15) そして最終的に 1/2{(ケット2)+(ケット6)+(ケット10)+(ケット14)}テンソル積(ケット4) となるらしいのですが、最終的にどうしてこのようになるのかが理解できません。 わかりにくいとは思いますが、どうぞよろしくお願いいたします。

  • 科学
  • 回答数1
  • ありがとう数0

みんなの回答

noname#35856
noname#35856
回答No.1

7^k mod 15 を k=0 から k=15 まで計算し、それが 4 になるものだけを pick upしています。 k=2、6、10、14 だけがそれを満足することを示しているのではないですか。

関連するQ&A

  • 量子コンピュータで四則演算

    量子コンピュータの解説を読んでいても、要するにどうなのかというところがわかりません。 たとえば、 1+1 2*3 10/3 といった計算は、量子コンピュータだとどういうアルゴリズムで計算されますか? たとえば for i=0 to10 printf"hogehoge" next という処理はどのように行われるのですか?(行われると予想されますか?)

  • 行列

    Ax=λx  (Aはm×m) By=ζy (Bはn×n) のとき、 A(テンソル積)E_n + E_m(テンソル積)B の固有値が(λ+ζ)で、固有ベクトルがw( w_(i,j)=(x_i)(y_i) ) となることの証明をどなたかお願いします.

  • 位数12の群Gの問題なんですが・・・

    Gを位数12の群G=<a,b>,a^^6=e,a^^3=b^^2=(ab)^^2とする。Gの元はG={e,a,a^^2,a^^3,a^^4,a^^5,b,ab,a^^2b,a^^3b,a^^4b,a^^5b}でありまた部分群N、Z、Kを次のようにおく。N=<a>,Z<a^^3>,K<b>とした時の (1)剰余群G/N、G/Z、N/Zの乗積表を作れという問題なんですがいまいちわかりません。 (2)またN,Kの標準的準同型写像f:G→G/Z x:→xZによる像を求めよという問題なんですがよくわかりません。アドバイス頂ければありがたいです。よろしくお願い致します。(Gの乗積表は省略しました。)

  • 2つのガウス分布の積の計算

    計算が嫌いで苦手な理系のものです. 質題のとおり,2つのガウス分布の積の計算をしたいのですが,自分でおこなっても答えに至っていません. そのためどうしても計算法を知りたいと思い, この場をお借りして質問させていただきました. 問題はガウス分布p_1(x)=N(x|m_1,a^-1), p_2(x)=N(x|m_2,b^-2)の積を求めよというシンプルなもの. ちなみにmは平均, a,bは精度となってます. 答えは p(x)=N(x|m,g^-1) m=(a*m_1+b*m_2)/(a+b) g=a+b となるようです. 簡単だと思うのですが,なんか至ってない. 詳細の説明込みでご回答いただけると助かります. よろしくお願い致します.

  • べき乗の計算が遅い理由

    VBAを使っていてふと気づいたことなのですが、 x ^ 2とx * xは計算結果は全く同じなのですが、x * xの方が6倍程度速く計算することができます。 Sub test() start_time = Timer For j = 1 To 10000 For i = 1 To 1000 y = i ^ 2 * j ^ 2 Next Next zikan = Format(Timer - start_time, "0.00") End Sub というプログラムの計算時間が3.80秒なのに対し、 y = i ^ 2 * j ^ 2をy = i * i * j * jに書き換えて実行すると 0.66秒になります。 恐らく、x ^ 2とx * xで計算アルゴリズムが異なるからだと思うのですが、 一般的によく知られたことなのでしょうか? また、どのようにアルゴリズムが異なるのでしょうか? また、VB以外の他のプログラミング言語にも見られるのでしょうか? ちなみに、 Function bekijou(x, y) bekijou = 1 For q = 1 To y bekijou = bekijou * x Next End Function という関数を作って、 y = bekijou(i, 2) * bekijou(j, 2)で実行してみたところ、計算時間は更に伸びて、 9.47秒になってしまいました。 これ以外に意外と知られていない計算速度を上げるためのコツなどがありましたら 教えてください。

  • 量子力学の問題(期待値を求める)

    量子力学の問題について、自分で解いたのですが正しいか自信がありません。各問いで解答が正しいか、また考え方が正しいかご教授をお願いします。 問題 ポテンシャルV(x)=-gxの中を運動する質量mの粒子について。ある時刻t=t0において粒子の波動関数が次のように与えられたとする。 Ψ(x,to)=Cexp(-ax^2+ibx) (a,b,Cは正の実数) このとき、 (1)t=toにおける位置の期待値 (2)t=toにおける運動量の期待値 (3)時刻tにおける位置の期待値 (4)波動関数Ψ(x,t)が従う、時間に依存するシュレディンガー方程式 を求めよ。 解答 (1)<Ψ(x,to)*| x |Ψ(x,to)> =∫[-∞,∞]Cexp(-ax^2-ibx)・x・Cexp(-ax^2+ibx)dx =C^2∫[-∞,∞] xexp(-2ax^2)dx を計算して答えが0になりました。(この積分を直接計算できませんでしたが、被積分関数のグラフを考えると原点対象だったので、-∞から∞に積分して0になるだろうと考えました。) (2)<Ψ(x,to)*| -ihd/dx |Ψ(x,to)> =… =hbC^2∫[-∞,∞] exp(-2ax^2)dx =hbC^2×√π/√(2a) (最後の積分でガウス積分の公式を使いました。) (3)ハミルトニアンが時間に依存しないので、時刻tにおいて波動関数ψは ψ(x,t)=Ψ(x,to)exp(-iEt/h)=Cexp(-ax^2+ibx)・exp(-iEt/h) とおける。従って求める期待値は、 <ψ(x,t)*| x |ψ(x,t)> =∫[-∞,∞]Cexp(-ax^2-ibx)・exp(iEt/h)・x・Cexp(-ax^2+ibx)・exp(-iEt/h)dx =C^2∫[-∞,∞] xexp(-2ax^2)dx =0 (結局(1)と同じ) (4)(-h^2/2m(d^2/dx^2)-gx)ψ(x,t)=ihd/dtψ(x,t)

  • modを使用した平方根の求め方

    解き方が解からない問題があります。 どれだけ考えても解き方がわからないので、どなたかわかる方教えてください。 【解き方が解からない問題】 大きな素数の積n=pqが与えられた時、nを素因数分解するのは非常に難しい。 整数mと整数y(<m)が与えられた時y=x2(xの二乗) mod mなる整数解xが存在すれば、yは mod mで平方剰余であるという。 xを mod mでのyの平方根という。 mが素数7の時、 12(1の二乗の事です。二乗の書き方がわからなくて・・・)≡1 (mod 7) 、 22(2の二乗) ≡ 4 (mod 7) 32(3の二乗)≡2 (mod 7) 、 42(4の二乗) ≡ 2 (mod 7) 52(5の二乗)≡4 (mod 7) 、 62(6の二乗) ≡ 1 (mod 7) となるので、1、2、4が平方剰余で、各平方剰余には2個の平方根がある。 mが二つの素数の積の場合、4個の平方根がある。 ここまでが参考書に載ってる説明です。 ここから私がわからない問題です。 102(10の二乗) mod 77=23 n = 77 の素因数7と11から素因数の知識を利用してZのmod nでの平方根Sを計算する。 S2(Sの二乗) ≡ 23 mod 7 S2(Sの二乗) ≡ 23 mod 11 上の2つを解いて、mod 77での4つの平方根10、32、45、67を得る。 この2つの式から、何をどうやって計算して、4つの平方根10、32、45、67が導き出せたのかわかりません。 二乗の表記の仕方がわからず、とても見難くなってしまいました。すみません。 乱文になってしまいましたが、どなたかわかる方教えてください。 よろしくお願いします。

  • レピュニットの分解

    知恵をお貸しください。 10^k=m^2-n(n+2)・・・[1]を満たす整数m、nを探す方法がないでしょうか。 1111111=239×4649(よろしく)という興味深い素因数分解に出会い、趣味で一般のレピュニットを積に分解する方法を調べています。 (レピュニット→ https://ja.wikipedia.org/wiki/%E3%83%AC%E3%83%94%E3%83%A5%E3%83%8B%E3%83%83%E3%83%88 ) 作戦として、直接分解するのではなくレピュニット×9、つまり10^k-1を分解し、その後9で除すという方法を考えています。そして、もし[1]を満たす整数m、nがみつかれば、10^k-1=(m-nー1)(m+n+1)という積に分解できます。もちろん素数のレピュニットもあるのでm-nー1=9,m+n+1=レピュニットという自明な分解になってしまう可能性もあると思うのですが、そうでないことが多いようです。 特記すべきなのはk≧2のとき、(今調べている範囲では)必ずmが10の倍数になるケースがあることです。もっというと100の倍数になることもしばしば見られます。k=7であれば 10^7=3400^2-1248×1250 という具合です。ちなみにk=7における[1]をみたす最小のmがm=3400であり、これには何か神の意志を感じてしまいました。もし何もないところから[1]を満たすm,nを見出すことができればさまざまなレピュニットの素因数分解を手助けできると思います。 そこで[1]の有効な作り方に何かアイデアがあればご教示いただきたいのです。帰納法的に、k-1までの全てに[1]の形が存在することを前提にkのときに作るという方法でも構いません。よろしくお願いいたします。 (参考)[1]の例 k=2 → 10^2=18^2-14×16,50^2-48×50 k=3 → 10^3=32^2-4×6,60^2-50×52,168^2-164×166 k=4 → 10^4=168^2-134×136,460^2-448×450 k=5 → 10^5=320^2-48×50,468^2-344×346,1240^2-1198×1200 k=6 → 10^6=1020^2-200×202,1432^2-1024×1026,1968^2-1694×1696 k=7 → 10^7=3400^2-1248×1250,7332^2-6614×6616,21040^2-20800×20802 (注)上記は全てすでに知られているレピュニットの素因数分解から逆算して求めただけです。 しかし、見れば見るほど法則性がありそう・・・

  • 量子力学の問題で困っています

    量子力学の問題なのですが手元に資料が少なく、またネットで調べてもよくわからないので誰か教えて下さい。 1次元の調和振動子の規定状態の波動関数は一座表表示で次のように書ける Ψ(x,t) = Aexp(-2mωx^2/2h)exp(-iωt/2) これが調和振動子のシュレディンガー方程式の解であることを確かめなさい という問題なのですが調和振動子のシュレディンガー方程式というのは (-h^2/2m)d^2Ψ/dx^2 + mω^2x^2Ψ/2 = EΨ でいいのでしょうか? この方程式では時間の項を考慮していないように見えるのですが また、運動量の固有関数が f(x) = (1/√2πh)exp(ipx/h) であることを用いて、この波動関数Ψ(x,t)の運動量表示Φ(p,t)を求めなさい という問題も計算がうまくいかなくて困っています。教えていただけませんか? 式中のhは全てエイチバーです。よろしくお願いします

  • 極限計算について

    極限の計算において x→aのときにf(x)→A, g(x)→Bであるとする。 このとき f(x)g(x)→AB が成り立つ。 とあったのですが、そうだとしたら次の計算は成り立ちますか? lim[n→∞]1/(2n)×1/nΣ[上:n 下:k=1]{f(k/n)}^2 lim[n→∞]1/(2n)×∫(0→1){f(x)}^2dx=0 まず2段目の式についてはΣの方だけ区分求積しておいて1/(2n)だけ極限を計算していないのですが、こういう書き方はしてもよいのでしょうか?かといって 1/∞×∫(0→1){f(x)}^2dx=0 として∞なんかを計算式に書くのもダメですよね? まあこれは書き方の問題に過ぎないのですが... そこで極限においてですが、「和」も「差」も「積」も一つずつ別々に計算してそれを最後に足したり引いたりかけたりしてよいのでしょうか?例えば h(x)+I(x)+j(x)→α+β+γ(α,β,γはそれぞれの極限値とします) というのは成り立ちますか?もちろん足したり引いたりかけたりする項がn個の場合は成り立たないと思いますが。 あと上で書いたA,Bという極限値ですが有限値という制限がありました。当たり前だと思うのですが→0ももちろん有限値ですよね? 参考書に書いてあるようなレベルの質問ですが、ちょっと自分としては曖昧な点があるので一度アドバイス頂いた方が良いと思い質問させていただきました。よろしくお願いします!