当前位置: 首页 > news >正文

基于 MindQuantum 记录线路作用下基底态的变化过程

在设计量子算法时,我们经常需要对线路进行分析,比如开发一些线路恒等式。本文开发一个函数,用于展示量子线路对基底态的变化过程,以辅助用户设计线路。

方案原理很简单,就是在不同基底态下执行量子线路。不过由于 MindQuantum 采用 Little-endian 策略,直接实现有违直觉,我们需要将其转变为习惯的 Big-endian 表示。

from mindquantum import *
from rich.console import Console
from rich.table import Table
from copy import deepcopydef get_basis_change(circ:Circuit):"""记录基底态在线路下的变化过程"""console = Console()table = Table(title="Basis Change",show_header=False, show_lines=True)n_qubits = circ.n_qubitsmapping = {i: n_qubits-i-1 for i in range(n_qubits)} # 重新映射量子比特sim = Simulator('mqvector', circ.n_qubits)for i in range(2**circ.n_qubits): # 遍历所有基底态tem = []# 制备基底态sim.reset() # 每研究完一个基底态都要重置模拟器的状态string = bin(i)[2:].zfill(circ.n_qubits)for j, v in enumerate(string):if v == '1':sim.apply_gate(X.on(mapping[j]))tem.append(sim.get_qs(True))for gate in circ: # 依次执行量子线路中量子门new = deepcopy(gate)new.obj_qubits = [mapping[i] for i in gate.obj_qubits]new.ctrl_qubits = [mapping[i] for i in gate.ctrl_qubits]sim.apply_gate(new)tem.append(sim.get_qs(True))table.add_row(*tem)console.print(table)circ1 = Circuit().z(1,0)
circ2 = Circuit().h(0).x(0,1).h(0)
print(circ1)
print(circ2)
get_basis_change(circ1)
get_basis_change(circ2)
q0: ────■─────┃     ┏━┻━┓   
q1: ──┨ Z ┠───┗━━━┛   ┏━━━┓ ┏━━━┓ ┏━━━┓   
q0: ──┨ H ┠─┨╺╋╸┠─┨ H ┠───┗━━━┛ ┗━┳━┛ ┗━━━┛   ┃           
q1: ──────────■───────────Basis Change   
┏━━━━━━━┳━━━━━━━━┓
┃ 1¦00⟩ ┃ 1¦00⟩   ┃
├───────┼────────┤
│ 1¦01⟩ │ 1¦01⟩  │
├───────┼────────┤
│ 1¦10⟩ │ 1¦10⟩  │
├───────┼────────┤
│ 1¦11⟩ │ -1¦11⟩ │
└───────┴────────┘Basis Change               
┏━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━┓
┃ 1¦00⟩ ┃ √2/2¦00⟩  ┃ √2/2¦00⟩  ┃ 1¦00⟩  ┃
┃       ┃ √2/2¦10⟩  ┃ √2/2¦10⟩  ┃        ┃
├───────┼───────────┼───────────┼────────┤
│ 1¦01⟩ │ √2/2¦01⟩  │ √2/2¦01⟩  │ 1¦01⟩  │
│       │ √2/2¦11⟩  │ √2/2¦11⟩  │        │
├───────┼───────────┼───────────┼────────┤
│ 1¦10⟩ │ √2/2¦00⟩  │ √2/2¦00⟩  │ 1¦10⟩  │
│       │ -√2/2¦10⟩ │ -√2/2¦10⟩ │        │
├───────┼───────────┼───────────┼────────┤
│ 1¦11⟩ │ √2/2¦01⟩  │ -√2/2¦01⟩ │ -1¦11⟩ │
│       │ -√2/2¦11⟩ │ √2/2¦11⟩  │        │
└───────┴───────────┴───────────┴────────┘

上面我们以 HXH 和 Z 的恒等线路为例,展示基底态变化过程。在两个表的最后一列为最后的基底态。从结果可知,两个线路的结果是相同的,意味着它们是等价的。

http://www.xdnf.cn/news/671923.html

相关文章:

  • 让jupyter notebook显示目录
  • 大模型应用:开发移动端页面个人中心页面提示词
  • 基于大模型预测视神经脊髓炎的技术方案大纲
  • Ubuntu 20.04 下 OpenCV 4.5.4 编译安装与系统默认 OpenCV 4.2 共存切换指南【2025最新版!!!】
  • Elasticsearch创建快照仓库报错处理
  • 嵌入式学习--江协stm32day3
  • 阿里云服务器采用crontab定时任务使acme.sh全自动化申请续签免费SSL证书,并部署在Linux宝塔网站和雷池WAF
  • 基于递归思想的系统架构图自动化生成实践
  • VMware-MySQL主从
  • AI提示工程(Prompt Engineering)高级技巧详解
  • 【大模型实战篇】BGE-Rerank-base重排服务部署教程
  • AI前端开发岗位面试准备指南
  • 什么是数据驱动?以及我们应如何理解数据驱动?
  • 什么是可重组机器人?
  • 33. 自动化测试开发之使用mysql异步连接池实现mysql数据库操作
  • 前端域名、端口、协议一样,本地缓存可以共享吗?
  • 【b站计算机拓荒者】【2025】微信小程序开发教程 - chapter3 项目实践 - 2信息采集
  • Protocol Buffers 复杂嵌套编译指南:生成 C++ 代码
  • JavaScript- 3.2 JavaScript实现不同显示器尺寸的响应式主题和页面
  • 开源酷炫大数据可视化大屏html+eacher 100+套
  • 力扣热题——分类求和并作差
  • Vue-02 (使用不同的 Vue CLI 插件)
  • 从 PyTorch 到 TensorFlow Lite:模型训练与推理
  • 【华为云物联网】iOtDA数据以表格字段转发OBS的设置攻略,便于以后数据上大屏
  • 如何描述BUG
  • VUE项目部署IIS服务器手册
  • 机器学习笔记【Week6】
  • 打板策略实战对比,khQuant回测横评第三弹【AI量化第29篇】
  • Nginx 在四大核心场景中的应用实践与优化
  • 深入解析 Flink 中的时间与窗口机制