ブログ

今月のサーキット 11月21日:国家準備の楽しみ方

8
11月
,
2021

多くの量子アルゴリズムにおいて、状態の準備はしばしば重要な最初のステップとなる。今月は、確率質量関数を各3量子ビットの5つのグループにロードするように設計された回路を探索する。

ここでユニークなのは、異なる数の量子ビットが与えられたときに、Classiqプラットフォームがどのように回路を生成するかという点だ。

最初の例では、20個の量子ビットでこの目標を達成するよう合成プラットフォームに依頼します。多くのオプションを自動的に探索した後、エンジンは20個の量子ビットを4個ずつの5つのグループに分けるのが良い解決策であると判断します。各グループでは、3つの量子ビットが初期化され、4番目の量子ビットがアンシラ/補助量子ビットとして使用されます。

Classiqエンジンが16量子ビットの解を求めると、事態はさらに面白くなる。この場合、4量子ビットずつ5つのグループは不可能である。エンジンが生成するのは、以下のステップを使った解である:

  • まず、3つの量子ビットの4つのグループが初期化されます(それぞれアンシラ量子ビットを使用)。
  • 次に、4つのアンシアラ量子ビット(各グループから1つずつ)がクリーンアップされます。
  • さて、まだ初期化されていない3つの量子ビットの最後のグループを処理するために、これら4つの量子ビットのうち3つ(前のグループのアンシラ量子ビットとして使用されていた)が、4番目の量子ビットをアンシラとして使用して初期化される。

これが20量子ビットの場合のClassiqコードである。これはテキストモデルで、VSCode環境で実行できる:


{
    "qubit_count":  20,
    "max_depth":1000,
    "draw_as_functions": false,
    "output_format": ["qasm"],
    "logic_flow": [{
        "function": "StatePreparation",
        "function_params": {
            "num_qubits": 4,
            "probabilities": {
                "pmf": [0.4, 0.05, 0.2, 0.05, 0.3, 0.0, 0.0, 0.0]
            },
            "error_metric": {"KL": {"upper_bound": 0.3}}
        },
        "add_as_single_gate": true
    },
    {
        "function": "StatePreparation",
        "function_params": {
            "num_qubits": 4,
            "probabilities": {
                "pmf": [0.4, 0.05, 0.2, 0.05, 0.0, 0.3, 0.0, 0.0]
            },
            "error_metric": {"KL": {"upper_bound": 0.32}}
        },
        "add_as_single_gate": true
    },
    {
        "function": "StatePreparation",
        "function_params": {
            "num_qubits": 4,
            "probabilities": {
                "pmf": [0.4, 0.05, 0.0, 0.05, 0.3, 0.0, 0.2, 0.0]
            },
            "error_metric": {"KL": {"upper_bound": 0.32}}
        },
        "add_as_single_gate": true
    },
    {
        "function": "StatePreparation",
        "function_params": {
            "num_qubits": 4,
            "probabilities": {
                "pmf": [0.4, 0.0, 0.2, 0.05, 0.3, 0.0, 0.0, 0.05]
            },
            "error_metric": {"KL": {"upper_bound": 0.34}}
        },
        "add_as_single_gate": true
    },
    {
        "function": "StatePreparation",
        "function_params": {
            "num_qubits": 4,
            "probabilities": {
                "pmf": [0.4, 0.05, 0.2, 0.0, 0.35, 0.0, 0.0, 0.0]
            },
            "error_metric": {"KL": {"upper_bound": 0.3}}
        },
        "add_as_single_gate": true
    }
]
}

これがその回路である。5つのグループ(各3量子ビット)がすべて並列に初期化されていることがわかります。

20量子ビット回路

16量子ビットの解を探るには、1本の線を変える必要がある:


{
    "qubit_count":  16, // <-- this is the only line that has changed
    "max_depth":1000,
    "draw_as_functions": false,
    "output_format": ["qasm"],
    "logic_flow": [{
        "function": "StatePreparation",
        "function_params": {
            "num_qubits": 4,
            "probabilities": {
                "pmf": [0.4, 0.05, 0.2, 0.05, 0.3, 0.0, 0.0, 0.0]
            },
            "error_metric": {"KL": {"upper_bound": 0.3}}
        },
        "add_as_single_gate": true
    },
    {
        "function": "StatePreparation",
        "function_params": {
            "num_qubits": 4,
            "probabilities": {
                "pmf": [0.4, 0.05, 0.2, 0.05, 0.0, 0.3, 0.0, 0.0]
            },
            "error_metric": {"KL": {"upper_bound": 0.32}}
        },
        "add_as_single_gate": true
    },
    {
        "function": "StatePreparation",
        "function_params": {
            "num_qubits": 4,
            "probabilities": {
                "pmf": [0.4, 0.05, 0.0, 0.05, 0.3, 0.0, 0.2, 0.0]
            },
            "error_metric": {"KL": {"upper_bound": 0.32}}
        },
        "add_as_single_gate": true
    },
    {
        "function": "StatePreparation",
        "function_params": {
            "num_qubits": 4,
            "probabilities": {
                "pmf": [0.4, 0.0, 0.2, 0.05, 0.3, 0.0, 0.0, 0.05]
            },
            "error_metric": {"KL": {"upper_bound": 0.34}}
        },
        "add_as_single_gate": true
    },
    {
        "function": "StatePreparation",
        "function_params": {
            "num_qubits": 4,
            "probabilities": {
                "pmf": [0.4, 0.05, 0.2, 0.0, 0.35, 0.0, 0.0, 0.0]
            },
            "error_metric": {"KL": {"upper_bound": 0.3}}
        },
        "add_as_single_gate": true
    }
]
}

そして、これが出来上がった回路である。量子ビット0-2、4-6、8-10、12-14の状態準備が終わった後、量子ビット3、7、11、15が使われていることがわかります:

16量子ビット解

Classiqプラットフォームは、デザイナーがさまざまなオプションを検討できるだけでなく、革新的なソリューションを自動的に見つけることができる。

多くの量子アルゴリズムにおいて、状態の準備はしばしば重要な最初のステップとなる。今月は、確率質量関数を各3量子ビットの5つのグループにロードするように設計された回路を探索する。

ここでユニークなのは、異なる数の量子ビットが与えられたときに、Classiqプラットフォームがどのように回路を生成するかという点だ。

最初の例では、20個の量子ビットでこの目標を達成するよう合成プラットフォームに依頼します。多くのオプションを自動的に探索した後、エンジンは20個の量子ビットを4個ずつの5つのグループに分けるのが良い解決策であると判断します。各グループでは、3つの量子ビットが初期化され、4番目の量子ビットがアンシラ/補助量子ビットとして使用されます。

Classiqエンジンが16量子ビットの解を求めると、事態はさらに面白くなる。この場合、4量子ビットずつ5つのグループは不可能である。エンジンが生成するのは、以下のステップを使った解である:

  • まず、3つの量子ビットの4つのグループが初期化されます(それぞれアンシラ量子ビットを使用)。
  • 次に、4つのアンシアラ量子ビット(各グループから1つずつ)がクリーンアップされます。
  • さて、まだ初期化されていない3つの量子ビットの最後のグループを処理するために、これら4つの量子ビットのうち3つ(前のグループのアンシラ量子ビットとして使用されていた)が、4番目の量子ビットをアンシラとして使用して初期化される。

これが20量子ビットの場合のClassiqコードである。これはテキストモデルで、VSCode環境で実行できる:


{
    "qubit_count":  20,
    "max_depth":1000,
    "draw_as_functions": false,
    "output_format": ["qasm"],
    "logic_flow": [{
        "function": "StatePreparation",
        "function_params": {
            "num_qubits": 4,
            "probabilities": {
                "pmf": [0.4, 0.05, 0.2, 0.05, 0.3, 0.0, 0.0, 0.0]
            },
            "error_metric": {"KL": {"upper_bound": 0.3}}
        },
        "add_as_single_gate": true
    },
    {
        "function": "StatePreparation",
        "function_params": {
            "num_qubits": 4,
            "probabilities": {
                "pmf": [0.4, 0.05, 0.2, 0.05, 0.0, 0.3, 0.0, 0.0]
            },
            "error_metric": {"KL": {"upper_bound": 0.32}}
        },
        "add_as_single_gate": true
    },
    {
        "function": "StatePreparation",
        "function_params": {
            "num_qubits": 4,
            "probabilities": {
                "pmf": [0.4, 0.05, 0.0, 0.05, 0.3, 0.0, 0.2, 0.0]
            },
            "error_metric": {"KL": {"upper_bound": 0.32}}
        },
        "add_as_single_gate": true
    },
    {
        "function": "StatePreparation",
        "function_params": {
            "num_qubits": 4,
            "probabilities": {
                "pmf": [0.4, 0.0, 0.2, 0.05, 0.3, 0.0, 0.0, 0.05]
            },
            "error_metric": {"KL": {"upper_bound": 0.34}}
        },
        "add_as_single_gate": true
    },
    {
        "function": "StatePreparation",
        "function_params": {
            "num_qubits": 4,
            "probabilities": {
                "pmf": [0.4, 0.05, 0.2, 0.0, 0.35, 0.0, 0.0, 0.0]
            },
            "error_metric": {"KL": {"upper_bound": 0.3}}
        },
        "add_as_single_gate": true
    }
]
}

これがその回路である。5つのグループ(各3量子ビット)がすべて並列に初期化されていることがわかります。

20量子ビット回路

16量子ビットの解を探るには、1本の線を変える必要がある:


{
    "qubit_count":  16, // <-- this is the only line that has changed
    "max_depth":1000,
    "draw_as_functions": false,
    "output_format": ["qasm"],
    "logic_flow": [{
        "function": "StatePreparation",
        "function_params": {
            "num_qubits": 4,
            "probabilities": {
                "pmf": [0.4, 0.05, 0.2, 0.05, 0.3, 0.0, 0.0, 0.0]
            },
            "error_metric": {"KL": {"upper_bound": 0.3}}
        },
        "add_as_single_gate": true
    },
    {
        "function": "StatePreparation",
        "function_params": {
            "num_qubits": 4,
            "probabilities": {
                "pmf": [0.4, 0.05, 0.2, 0.05, 0.0, 0.3, 0.0, 0.0]
            },
            "error_metric": {"KL": {"upper_bound": 0.32}}
        },
        "add_as_single_gate": true
    },
    {
        "function": "StatePreparation",
        "function_params": {
            "num_qubits": 4,
            "probabilities": {
                "pmf": [0.4, 0.05, 0.0, 0.05, 0.3, 0.0, 0.2, 0.0]
            },
            "error_metric": {"KL": {"upper_bound": 0.32}}
        },
        "add_as_single_gate": true
    },
    {
        "function": "StatePreparation",
        "function_params": {
            "num_qubits": 4,
            "probabilities": {
                "pmf": [0.4, 0.0, 0.2, 0.05, 0.3, 0.0, 0.0, 0.05]
            },
            "error_metric": {"KL": {"upper_bound": 0.34}}
        },
        "add_as_single_gate": true
    },
    {
        "function": "StatePreparation",
        "function_params": {
            "num_qubits": 4,
            "probabilities": {
                "pmf": [0.4, 0.05, 0.2, 0.0, 0.35, 0.0, 0.0, 0.0]
            },
            "error_metric": {"KL": {"upper_bound": 0.3}}
        },
        "add_as_single_gate": true
    }
]
}

そして、これが出来上がった回路である。量子ビット0-2、4-6、8-10、12-14の状態準備が終わった後、量子ビット3、7、11、15が使われていることがわかります:

16量子ビット解

Classiqプラットフォームは、デザイナーがさまざまなオプションを検討できるだけでなく、革新的なソリューションを自動的に見つけることができる。

"キュービット・ガイのポッドキャスト "について

The Qubit Guy(弊社最高マーケティング責任者ユヴァル・ボーガー)がホストを務めるこのポッドキャストは、量子コンピューティングのオピニオンリーダーをゲストに迎え、量子コンピューティングエコシステムに影響を与えるビジネスや技術的な疑問について議論します。ゲストは、量子コンピュータのソフトウェアやアルゴリズム、量子コンピュータのハードウェア、量子コンピューティングの主要なアプリケーション、量子産業の市場調査などについて興味深い見解を提供します。

ポッドキャストへのゲスト推薦をご希望の方は、こちらまでご連絡ください。

こちらも参照

該当する項目はありません。

量子ソフトウェア開発を開始

お問い合わせ