qml.qcut

该模块包含用于切割量子电路的量子函数变换。

概述

本模块定义了电路切割的变换函数。这允许将大型电路“切割”(或拆分)为较小的电路,以便在量子比特数量受限的设备上执行。

电路切割的变换

cut_circuit(带, [自动切割器, ...])

将量子电路切割成更小的电路片段。

cut_circuit_mc(tape[, ...])

使用蒙特卡洛方法将包含样本测量的电路切割成更小的片段。

工具函数

还有一些低级函数可以用于构建电路切割功能:

tape_to_graph(tape)

将量子带转换为有向多重图。

replace_wire_cut_nodes(图)

将图中的每个 WireCut 节点替换为 MeasureNodePrepareNode

fragment_graph(图)

将图分割成一组子图,并返回通信()图。

graph_to_tape(图)

将有向多重图转换为相应的 QuantumTape

expand_fragment_tape(tape)

将一个片段磁带扩展为每个包含的 MeasureNodePrepareNode 操作的配置对应的磁带序列。

expand_fragment_tapes_mc(tapes, ...[, seed])

将片段磁带扩展为包含的 MeasureNodePrepareNode 操作的随机配置序列。

qcut_processing_fn(results, ...[, ...])

处理cut_circuit()变换的函数。

qcut_processing_fn_sample(results, ...)

用于对cut_circuit_mc()变换进行后处理的函数。

qcut_processing_fn_mc(results, ...)

cut_circuit_mc() 变换的样本进行后处理的函数。

CutStrategy([设备, 最大 свободной провода, ...])

一种用于在可用(相对较小)设备上执行(大型)电路的电路切割分配策略。

kahypar_cut(图, 片段数[, ...])

调用 KaHyPar 来划分图。

place_wire_cuts(图, 切割边缘)

为电路图中的每个提供的切边插入一个 WireCut 节点。

find_and_place_cuts(图[, 切割方法, ...])

自动找到并将最佳 WireCut 节点放置到给定的带转换图中,使用可定制的图划分函数。

切割电路

电路切割可以让您用一组电路替换一个N根线的电路,这组电路的线数少于N根(另见Peng et. al)。这会带来一个成本:较小的电路需要更多的设备执行次数来进行评估。

在 PennyLane 中,针对以期望值终止的电路,可以通过在所需切割位置放置 WireCut 操作符来激活电路切割,以及通过用 cut_circuit() 变换装饰 QNode。

剪切电路保持完全可微分,结果电路可以在并行设备上执行(如果可用的话)。有关更多详细信息,请参见cut_circuit()文档。

注意

产生样本的模拟量子电路可以使用 cut_circuit_mc() 变换进行切割,这基于蒙特卡洛方法。

自动切割

PennyLane还实验性支持自动切割电路——也就是说,可以在不显式放置 WireCut 操作符的情况下确定最佳切割位置。可以通过使用cut_circuit()auto_cutter 关键字参数来启用此功能;有关更多详细信息,请参阅该函数文档。