排序算子¶
排序算子对 SparseState 中的基态按不同维度进行排序。排序本身不改变量子态(振幅不变),但会影响 StatePrint 等工具的显示顺序,并用于内部条件操作的正确匹配。
概述¶
算子 |
排序依据 |
|---|---|
|
按指定寄存器值排序 |
|
按两个寄存器值联合排序 |
|
按除指定寄存器外的所有寄存器排序 |
|
按除指定位外的所有位排序 |
|
按 Hadamard 变换后的寄存器排序 |
|
无条件排序(按完整基态键值) |
|
按振幅绝对值排序 |
---
SortByKey(按键排序)¶
操作: 按指定寄存器的值对基态进行升序排序。
参数: key — 排序依据的寄存器(名称或 ID)。
import pysparq as ps
ps.SortByKey("addr")(state)
SortByKey2(双键排序)¶
操作: 按两个寄存器的值联合排序(先按 key1,再按 key2)。
参数: key1, key2 — 两个排序依据的寄存器。
ps.SortByKey2("addr", "data")(state)
SortExceptKey(排除键排序)¶
操作: 按除指定寄存器外的所有寄存器值排序。
参数: key — 要排除的寄存器。
用途: 当需要忽略某个寄存器的值进行排序时使用,常用于内部条件操作的正确匹配。
ps.SortExceptKey("temp")(state)
SortExceptBit(排除位排序)¶
操作: 按除指定寄存器的某一位外的所有位排序。
参数: key — 寄存器,digit — 要排除的位索引。
ps.SortExceptBit("q", 0)(state)
SortExceptKeyHadamard(排除 Hadamard 键排序)¶
操作: 按 Hadamard 变换后排除指定量子比特的方式排序。
参数: key — 寄存器,qubit_ids — 要排除的量子比特位索引集合。
ps.SortExceptKeyHadamard("q", {0, 2})(state)
SortUnconditional(无条件排序)¶
操作: 按完整基态键值无条件排序。无需任何参数。
ps.SortUnconditional()(state)
SortByAmplitude(按振幅排序)¶
操作: 按基态振幅的绝对值进行排序。无需任何参数。
用途: 调试时快速查看哪些基态贡献最大。
ps.SortByAmplitude()(state)