Skip to content
master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 

問題 Groverの探索アルゴリズムの実装

この問題はMicrosoftのコードサンプルを一部利用し、編集しています。

問題

GroverPracticeフォルダ以下が問題です。次のコマンドで実行できるようになっています。

> cd GroverPractice 
> dotnet run

dotnet runで実行できない場合は、.NET Core SDKおよびQuantum Development Kitがインストールされていない可能性があります。Q# の開発環境を準備する (.NET Core CLI + Visual Studio Code編)を参考にしてインストールしてください。

Driver.csは編集する必要はありません。 Operations.qsはメソッド定義とヒント(TODO)が書いてあるので、TODOの箇所を埋めていってください。

C#からQ#には、確率振幅増幅を何回行うか(nIterations)とデータベースの量子ビット列のサイズ(nDatabaseQubits)を渡す。 つまりデータベースのサイズは2^nDatabaseQubits。 実装の簡単のため、探索する状態は固定で |1..1> としています。

ハンズオンの手順

  1. TODOをうめていく
  2. 実行してみる
  3. データベースサイズ(nDatabaseQubits)や繰り返し数(nIterations)を変えて試してみる
  4. AmpAmpByOracle APIを使うパターンに実装を変更してみる。

AmpAmpByOracleはQ#がAPIとして提供している振幅増幅の関数です。これを使うと振幅増幅部分で量子ゲートを並べて実装するようなコードをかかずにすみます。 今回の実装だとあまり簡単さに変化はありませんが、Groverのアルゴリズムは探索対象を複数にすることもでき、そのようなケースではコードが非常に完結になります。 GroverMultiに探索対象が複数の場合の実装例を載せています。

About

No description, website, or topics provided.

Resources

License

Releases

No releases published

Packages

No packages published

Languages