Qulacs-Osaka / qulacs-osaka

Development branch of qulacs at Osaka Univ
MIT License
13 stars 6 forks source link

update StateTest(SetHaarRandomState, Sampling, GetZeroProbability) #319

Closed KowerKoint closed 2 years ago

KowerKoint commented 2 years ago

QuantumStateのカバレッジを見て必要だと思ったget_Haar_random_state(), samling(), get_zero_probability(), get_marginal_probability()に対するテストを書きました(get_marginal_probability()はもとからあったことにあとから気づいたので不要なら消します)

GetHaarRandomState

乱数生成をきっちり統計的に検定するには実行時間がかかる(かつ私が書ける自信がない)ので

Sampling

これも乱数の検定が難しいので、見つかる確率が1倍、2倍、…の状態を用意して、単調増加になること、明らかに観測されない状態をサンプリングしないことを確認しました

GetZeroProbability

Samlingと同じ状態を使って下位4ビット分の確率が手計算と一致することを確認しました

KowerKoint commented 2 years ago

https://github.com/Qulacs-Osaka/qulacs-osaka/runs/6486600889?check_suite_focus=true 早速落ちてますね…これでも不安定テストが増えたことになってしまいました…

KowerKoint commented 2 years ago

関連: #310

forest1040 commented 2 years ago

早速落ちてますね…これでも不安定テストが増えたことになってしまいました…

ちょっと見てみます。

forest1040 commented 2 years ago

@KowerKoint 自分の環境では、7/10ぐらいの結構な頻度で失敗になっちゃいますね。。

テスト内容を教えてください。ロジックを見た限りでは以下のような事をしていると思います。

セットする基底を増やして足したからと言って、サンプリング結果のindexが大きい方が 必ず大きいとは言えないと思います。

かと言って、よいテスト方法が思いつくわけではないですが。。 ざっと平均とか分散とか取って見る感じですかね。。

KowerKoint commented 2 years ago

足し込むときに係数に√2,√3,…を付けてるので各基底の観測確率は1:2:3:4:…:10になってます それでも9:10なんかは逆転する確率が結構高そうなので指数関数的に係数を増やしたほうが良かったなと今思っています

forest1040 commented 2 years ago

足し込むときに係数に√2,√3,…を付けてるので各基底の観測確率は1:2:3:4:…:10になってます

なるほど!ありがとうございます。

それでも9:10なんかは逆転する確率が結構高そうなので指数関数的に係数を増やしたほうが良かったなと今思っています

試してみてください!

KowerKoint commented 2 years ago

Samplingにおいては1から5までの基底状態を1:2:4:8:16の割合で混ぜることにしました。これなら流石に基本的に通るはずです。

forest1040 commented 2 years ago

ありがとうございます! LGTM です。

KowerKoint commented 2 years ago

レビュー対応しました

KowerKoint commented 2 years ago

get_marginal_probability()のテスト、下のものと被ってたので追加をやめました。