Feynman は、量子力学の経路積分モデルにおける量子回路解析のためのツールキットです。このツールキットは、パス上の合計としての回路動作の表現に基づいた合成、最適化、および検証方法で構成されています。
ファインマン プロジェクトと連携するには 2 つの方法が可能です。ツール内にあるファインマン上に構築されたスタンドアロン ツールは、量子回路の最適化や検証のためのコマンドライン インターフェイスを提供します。また、ファインマン ライブラリをインポートして他の Haskell プロジェクトに直接使用することもできます。
Feynman プロジェクトには、GHC >=8.0.2 および Cabal >=1.24.0 が必要です。 GHC の古いバージョンは動作する可能性がありますが、テストされていません。
Feynman ライブラリと、最適化 ( feynopt
) および検証 ( feynver
) 用のバイナリ実行可能ファイルは、次のコマンドを使用してグローバルにインストールできます。
cabal install
または、もう少し細かい一連のコマンドを使用してください
cabal configure
cabal build
cabal install
依存関係地獄は Haskell の一般的な問題であるため、Cabal の以前のバージョンには、他のパッケージに問題を引き起こすことなくパッケージの依存関係がインストールされるローカル サンドボックスを明示的に作成するオプションがありました。サンドボックスにファインマンの依存関係をインストールするには、ファインマンをビルドまたはインストールする前に最初に実行します。
# Cabal 1 & 2
cabal sandbox init
cabal install --only-dependencies
# Cabal 3
cabal v1-sandbox init
cabal install --only-dependencies
デフォルトでは、Cabal は Unix ビルドのバイナリを~/cabal/bin/
にインストールします。別のフォルダーを指定するには、次のようにインストールします。
cabal install --installdir=DIR
Feynman には現在、openQASM と .qc のフロントエンドがあります。両方の例はベンチマーク フォルダーにあります。
.qc または openQASM ファイルに対してファインマン オプティマイザーfeynopt
実行するには、次のコマンドを実行します。
feynopt <filename>.(qc | qasm)
feynopt
拡張子 .qc および .qasm をそれぞれ .qc ファイルおよび openQASM ファイルとして自動的に認識します。
利用可能なすべての最適化と変換のリストを表示するには、次のコマンドを使用します。
feynopt -h
feynver
バイナリ ツールを使用すると、個別の回路ファイルの等価性チェックが可能になります。標準的な使い方は、
feynver <filename1>.qc <filename2>.qc
入力回路は主入力 (つまり、初期化されていない量子ビット) の名前に同意する必要がありますが、異なる補助を使用することもできます。
注: feynver
現在 .qc フロントエンドのみをサポートしています
Feynman リポジトリには、量子回路ベンチマークのスイートが付属しており、 benchmarks
フォルダーにあります。ベンチマークの詳細については、「量子回路設計の形式的手法」を参照してください。
ベンチマーク スイートには、openQASM github リポジトリから取得した openQASM 回路のサンプルも含まれています。
ファインマンは、多数の論文にまたがるアルゴリズムとテクニックのコレクションです。学術論文に引用する場合は、該当する論文を以下に記載します。
マシュー・エイミー