はじめに
Qiskitで回路をトランスパイルすると、急にSWAPが増えたり、CNOTの向きが変えられたりします。その中心にいるのが カップリングマップ(coupling map) です。
本記事では「カップリングマップがそもそも何なのか」を整理しつつ、線形以外の形と、よく詰まる「有向」って何が困るの?までまとめます。
カップリングマップの正体:2量子ビットゲートの“接続図”
Qiskitの CouplingMap は、固定カップリングを表す有向グラフとして定義されています。
ノードは物理量子ビット(整数)、有向エッジは許可されたCNOTで、始点→終点が control→targetに対応します。
つまり一言でいうと、
「このデバイスで“直接”2量子ビットゲートできるペア(しかも向き付き)の地図」
がカップリングマップです。
線形だけじゃない:カップリングマップは“グラフ”です
「量子ビットが一直線に並んでいる図」を思い浮かべがちですが、本質は任意形状のグラフです。
代表的な形のイメージをいくつか載せます。
線形(linear)
Q0 — Q1 — Q2 — Q3
リング(ring / circular)
Q0 — Q1 — Q2 — Q3
| |
+--------------+
スターっぽい分岐(star-ish)
Q1
|
Q2 — Q0 — Q3
|
Q4
はしご(ladder)/ 2次元っぽい接続
Q0 — Q1 — Q2
| | |
Q3 — Q4 — Q5
形が変わると「どこが混むか(SWAPが出やすいか)」や「良い初期配置(layout)」の考え方も変わります。
なぜ必要?
論理回路と物理デバイスのギャップを埋めるためです。
量子回路(抽象回路)は、理想的には任意の2量子ビット間にCNOTを書けます。
でも実機(物理デバイス)では、2量子ビットゲートができるペアが限られます。これがカップリングマップです。
IBMのガイドでは、抽象回路の量子ビットを virtual qubits、カップリングマップ上の量子ビットを physical qubits と呼び、transpilerが両者の対応付け(マッピング)を作る、と説明されています。
SWAPが増える理由
カップリングマップに載っていないペアで2量子ビットゲートをしたい場合、回路はそのままでは実行できません。このとき transpiler は、SWAPを挿入して量子情報を移動させ、最終的に「接続できる隣接ペア」でゲートできる形に変換します。
超ざっくり言うと、
- カップリングマップ=道路
- SWAP=引っ越し(隣に移動してから用事を済ませる)
みたいなイメージです。道路がない場所にワープできないので、引っ越して隣に行くしかありません。
「有向」って実害なに?向き違いのCNOTはどうなる?
ここが一番ハマりポイントです。
まず定義:矢印は control→target です
CouplingMap の有向エッジは、始点がcontrol、終点がtargetに対応します。
たとえば
-
0 → 1がある:CNOT(0,1) は(その向きで)直接OK -
1 → 0がない:CNOT(1,0) は(その向きでは)直接はNG
ということが起こります。
でも大丈夫
IBMのガイドでは、カップリングが方向性を持つ場合がある一方で、transpilerは単一量子ゲートを追加してゲート方向を反転できると説明されています。
つまり「向き違いのCNOT」は、
- そのままでは不可 →
- transpilerが追加の1量子ゲートを入れて辻褄を合わせる
という動きになります。
実害
方向を直すために追加ゲートが入るので、
- 回路深さが増える
- ノイズに弱くなる(特に現行デバイスでは影響が出やすい)
という形で効いてきます。
さらに、IBMのガイドでは例として ECRゲートは方向性があることが明記され、特定方向(例:qubit 1→0)のゲート特性(durationやerror)を参照する例が載っています。
方向が違うだけで誤差率や時間が変わり得る、という意味で「有向」は実害になりやすいです。
「線形以外」を入れると理解が進む:リング配置の例
線形だと「遠い→SWAP増える」が直感的ですが、リングや格子だと話が変わります。
IBMのガイドには、回路側が entanglement="circular"(リングっぽい接続)を持つとき、適切なlayoutを選ぶと SWAPが入らない(または減る)例が載っています。
具体的には、単にcoupling_mapだけ渡すとSWAPが挿入されるが、適切な最適化設定(layout/routing込み)だとSWAPが消える、という流れが説明されています。
この例は、「カップリングマップは制約」だけでなく、
“回路の接続パターン” と “デバイスの接続パターン” を合わせると強い
という感覚を作るのにちょうど良いです。
まとめ
- カップリングマップは、物理量子ビット間の2量子ビットゲート可能な接続を表す地図です。Qiskitでは 有向グラフで、エッジの向きは control→target に対応します。
- 接続制約に合わない回路は、transpilerが SWAPを挿入して実行可能にします。
- 「有向」の実害は、向き違いCNOTが出ると 追加の1量子ゲートで方向調整が入って回路が重くなる点です。
- 線形以外(リング等)も普通にあり、回路の接続パターンとlayoutが噛み合うと SWAPが減る/消えることがあります。
参考資料
https://quantum.cloud.ibm.com/docs/en/api/qiskit/qiskit.transpiler.CouplingMap
https://quantum.cloud.ibm.com/docs/en/guides/represent-quantum-computers