質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.82%

量子ウォーク(アダマールウォーク)の実装について

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 697

Fallout_18

score 106

あまり、よろしくない質問の仕方だとは思いますが。。。
(http://d.hatena.ne.jp/ryamada/20151221)のサイトにある、
R言語での実装をpythonで行いたいのですが、以下のR言語(R?Ruby?)をpythonに翻訳したいです。

U <- 1/sqrt(2) * matrix(c(1,1,1,-1),byrow=TRUE,2,2) + 1i*0

my.PQ <- function(U){
    P <- Q <- matrix(0,2,2)
    P[1,] <- U[1,]
    Q[2,] <- U[2,]
    return(list(P=P,Q=Q))
}


Xinit <- 1/sqrt(2) * c(1,1i)

my.HadamardWalk <- function(U,Xinit,n){
    PQ <- my.PQ(U)
    P <- PQ[[1]]
    Q <- PQ[[2]]
    ret <- list()
    ret[[1]] <- matrix(Xinit,nrow=1)

    ret2 <- list()
    ret2[[1]] <- apply(Mod(ret[[1]])^2,1,sum)
    ret3 <- matrix(0,n,n)
    ret3[1,1] <- ret2[[1]]
    for(i in 2:n){
        ret[[i]] <- matrix(0,i,2)
        tmp1 <- matrix(ret[[i-1]][1:(i-1),],ncol=2)
        tmp2 <- matrix(ret[[i-1]][1:(i-1),],ncol=2)
        p <- P %*% t(tmp1)
        q <- Q %*% t(tmp2)
        ret[[i]][1:(i-1),] <- ret[[i]][1:(i-1),] + t(p)
        ret[[i]][2:i,] <- ret[[i]][2:i,] + t(q)
        ret2[[i]] <- apply(Mod(ret[[i]])^2,1,sum)
        ret3[i,1:i] <- ret2[[i]]
    }
    return(list(Q=ret,prob=ret2,probMat=ret3))
}

hout <- my.HadamardWalk(U,Xinit,50)
image(hout[[3]])
persp(hout[[3]])


![イメージ説明上図がコード結果になります。](db6694b37b8b732292388922c425a595.jpeg)](7d272e84fb9cdc17866c140daf4a4614.jpeg)
一応、私なりにですが、自分なりに努力している所を挙げます。

sympy.physics.quantum.qubit import Qubit
import sympy
import numpy as np
x = Qubit("00")
y = Qubit("01")

def hadamardcoin():
    hadamardcoin = np.array([[1 / sqrt(2), 1 / sqrt(2), 0, 0], [1 / sqrt(2), -1 / sqrt(2), 0, 0]])
    return hadamardcoin
def initQuanStat(x0,x1,y0,y1):
    initQuanStat = np.zeros([4,4],complex) #0+0jの4,4行列
    initQuanStat[0][0] = x0
    initQuanStat[1][1] = x1
    initQuanStat[2][2] = y0
    initQuanStat[3][3] = y1
    return initQuanStat
def initPositionMap(steps):
    positionMap = np.zeros([2*steps + 1, 2*steps + 1, 4, 4],complex)
    return positionMap
def coinOperator(positionMap,coin):
    dimension = shape(positonMap)[0]
    for i in range(dimension):
        for j in range(dimension):
            positonMap[i][j] = dot(positonMap[i][j],coin)
        return positionMap
def shiftOperator(coinMap,step):
    newPositionMap = initPositionMap(step)
#まだ途中です


Githubなど使って頑張ってはいますが、初心者にはなかなかハードなものだと痛感しており、力を貸していただきたい気持ちです。(私の上記のコードを本題とは少しズレておりますので、あまり気にしないでください)
宜しくお願い致します。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    2018/04/10 19:25

    複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という意見がありました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

  • Fallout_18

    2018/04/10 22:25 編集

    低評価のオンパレードや~
    確かに、すいません。丸投げでした、自分で頑張ります。。

    キャンセル

  • KojiDoi

    2018/04/11 03:18

    まず、RとRubyの違いを理解するところから始めましょうか。

    キャンセル

  • Fallout_18

    2018/04/14 17:38

    その通りです

    キャンセル

回答 3

check解決した方法

0

自分でしっかり書き直しました笑
イメージ説明

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

目指していることはR言語とpythonを書けるようになってR言語のコードをpythonを移植できるようになることでしょうか。
それとも、物理・数式を理解して、それをpythonのコードに落とし込むことでしょうか。

努力していると言われましても、載っているコードにコメントは特になく、どこまで理解しているのかわかりません。
せめてどう思って、何を試して、どううまくいっていないのかを整理してみてください。

http://www.kisc.meiji.ac.jp/~tz14040/quantumwalk/english/
はじめのうちは順番に結果を確認しながらステップバイステップで実装して行くと、どこまでわかってどこからがわからないかがわかると思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/14 17:38

    そうですね、相手に明確に伝えることなく投げやりな形になって申し訳なかったです。
    物理・数式を理解してコードに落とし込むことを行えることが理想です。
    一つ一つ理解しながら、やっていきます。
    いつもありがとうございます。

    キャンセル

0

Rで正しく動くコードがあるのであれば、pythonからRを起動するコードを研究したほうがいいのではないでしょうか?
Rのコードを移植したいのであれば、Rのコードを正しく理解するところから始めたほうがいいと思います。その上で、Rで実装できているがpythonだとどの関数を使えばいいのかわからない部分に限定して質問したほうが、回答を得やすくなると思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/14 17:19

    アドバイスありがとうございます。
    pythonとRを併用するやり方があることさえ知らなかったです。。
    本当にありがとうございます、頑張ってみます!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.82%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る