Skip to content
No description, website, or topics provided.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.vscode
GroverMulti
GroverPractice
.gitattributes
.gitignore
GroverPractice.sln
LICENSE
README.md

README.md

問題 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に探索対象が複数の場合の実装例を載せています。

You can’t perform that action at this time.