Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Qamomile v0.12.5

Qamomile v0.12.5では、PCEConverterPCEEncoderによるPauli Correlation Encoding(PCE)を追加しました。これにより、二次の最適化ワークフローでスピン変数をk-body Pauli correlatorとしてエンコードし、各スピン変数に1量子ビットを割り当てる方法より少ない量子ビットで扱える場合があります。QURI Partsのサンプリングには再現性のためのseedを渡せるようになりました。さらに、制御ゲート、測定結果を使う条件分岐、Vector要素の期待値計算まわりの不具合も修正しています。

pip install qamomile==0.12.5

新機能

Pauli Correlation Encoding(PCE)

PCEConverterを使うと、ommx.v1.InstanceまたはQamomileのBinaryModelとして与えた二次QUBO/Ising最適化問題にPauli Correlation Encodingを適用できます。PCEは各スピン変数を異なるk-body Pauli correlatorへエンコードします。これにより、各スピン変数に1量子ビットを割り当てる方法より少ない量子ビットで最適化問題を扱える場合があります。num_qubitsを指定しない場合、C(n, k) * 3**k >= num_variablesを満たす最小のn >= kを使います。割り当てられたobservableはget_encoded_pauli_list()で取得でき、correlator期待値はdecode(...)で復号できます(#369)。

from qamomile.optimization.binary_model import BinaryModel
from qamomile.optimization.pce import PCEConverter

ising = BinaryModel.from_ising(
    linear={0: 1.0, 1: -1.0, 2: 0.5},
    quad={(0, 1): 2.0},
    constant=0.0,
)
converter = PCEConverter(ising, correlator_order=2)
observables = converter.get_encoded_pauli_list()
sampleset = converter.decode([0.8, -0.4, 0.2])
print(converter.num_qubits, len(observables))
print(sampleset.samples, sampleset.energy)
2 3
[{0: 1, 1: -1, 2: 1}] [0.5]

Pauli Correlation Encoding(PCE)のドキュメントも参照してください。

QURI Partsサンプリングの再現性

既定のQulacsベースサンプラーでは、QuriPartsExecutor(seed=...)QuriPartsTranspiler().executor(seed=...)で乱数seedを固定できるようになりました。同じseedで作ったExecutorを同じ回路に対してサンプリングすると、同一のショットカウントが得られます。seedを省略すると従来どおり非決定的に動作します(#441)。

from qamomile.quri_parts import QuriPartsTranspiler

transpiler = QuriPartsTranspiler()
executor = transpiler.executor(seed=42)

バグ修正

ドキュメント

さらに詳しく