QPanda3
Supported by OriginQ
载入中...
搜索中...
未找到
量子程序

上一章: 量子线路
下一章: 量子线路与量子程序


QProg

量子编程用于编写和构建量子程序,通常被理解为一系列操作的序列。由于量子算法中也包含经典计算,业界普遍认为,在不久的将来出现的量子计算机将是混合结构,由两个主要部分组成,其中一部分是负责执行经典计算和控制的经典计算机;另一部分是负责执行量子计算的量子设备。QPanda3 将量子程序的编程过程视为经典程序执行的一部分,整个外围主机程序必须包含创建量子程序的部分。

构造函数

可以使用多个构造函数创建 QProg 实例:

  1. 默认构造函数

  2. 带量子比特数量的构造函数

  3. 拷贝构造函数

  4. 基于量子线路的构造函数

成员函数

以下函数可用于操作和查询 QProg 实例:

  • 追加操作

    你可以追加量子门、量子线路或测量操作:

  • 运算符重载

    你可以使用 << 运算符追加节点:

  • 查询属性

    使用 qubits_numcbits_num 函数获取量子比特和经典比特的数量:

  • 获取量子比特和经典比特

    使用 qubitscbits 函数检索量子比特和经典比特的列表:

  • 获取操作

    使用 operations 函数检索程序中的所有操作:

  • 量子门操作

    使用 gate_operations 函数获取量子门操作列表,参数的含义是是否仅获取双量子比特门:

  • 统计操作数

    使用 count_ops 函数统计程序中的操作数,参数的含义是是否仅统计双量子比特门:

  • 计算程序深度

    使用 depth 函数获取程序的深度,参数的含义是是否仅计算双量子比特门:

  • 扁平化与转换为量子线路

    使用 flattento_circuit 函数将程序扁平化或转换为量子线路:

  • 清空程序

    使用 clear 函数清除程序中的所有操作:

  • 转指令文件

    使用 to_instruction 函数将程序转成本源量子云芯片支持的指令文件。 使用该接口需要保证量子程序中已经全部是芯片的基础指令(RPhi、CZ、Measure和ECHO)。 to_instruction有三个参数,第一个参数是指定的芯片后端,第二个参数是转指令过程中qubit的偏移量,第三个参数是是否使用pattern对指令进行分层。

示例用法

以下是一个创建量子程序、运行量子程序并测量结果的简单示例:

运行结果:

┌─┐ ┌─┐
q_0: |0>─┤H├ ───*── ───────┤M├ ────────── ────────── ───────
└─┘ ┌──┴─┐ └╥┘ ┌─┐
q_1: |0>──── ┤CNOT├ ───*────╫─ ───────┤M├ ────────── ───────
└────┘ ┌──┴─┐ ║ └╥┘ ┌─┐
q_2: |0>──── ────── ┤CNOT├──╫─ ───*────╫─ ───────┤M├ ───────
└────┘ ║ ┌──┴─┐ ║ └╥┘ ┌─┐
q_3: |0>──── ────── ────────╫─ ┤CNOT├──╫─ ───*────╫─ ─┤M├───
║ └────┘ ║ ┌──┴─┐ ║ └╥┘┌─┐
q_4: |0>──── ────── ────────╫─ ────────╫─ ┤CNOT├──╫─ ──╫─┤M├
║ ║ └────┘ ║ ║ └╥┘
c : / ════════════════════╩══════════╩══════════╩════╩══╩═
0 1 2 3 4
{'00000': 0.478515625, '11111': 0.521484375}