Q_03_03_05 宽度计数器

宽度计数器 

Width Counter计算每个操作分配和借用的量子位数。 所有来自Microsoft.Quantum.Primitive命名空间的操作都是以单量子位旋转,T门,单量子位Clifford门,CNOT门以及多量子位Pauli可观测量的量度来表示的。 一些原始操作可以分配额外的量子位。 例如,乘法控制的X门或受控的T门。 让我们计算实现一个乘法控制的X门所分配的额外量子比特的数量:

Q#
 open Microsoft.Quantum.Primitive;
operation MultiControlledXDriver( numberOfQubits : Int ) : () {
    body {
        using( qubits = Qubit[numberOfQubits] ) {
            (Controlled X)(qubits[ 1 .. numberOfQubits - 1] ,qubits[0]);
        } 
    }
} 

在C#程序中使用宽度计数器

乘以受控的X作用于总共5个量子位将分配2个辅助量子位,其输入宽度将为5.为了检查这种情况,我们可以使用以下C#程序:

C#
 var config = new QCTraceSimulatorConfiguration();
config.useWidthCounter = true;
var sim = new QCTraceSimulator(config);
int totalNumberOfQubits = 5;
var res = MultiControlledXDriver.Run(sim, totalNumberOfQubits).Result;


double allocatedQubits = 
    sim.GetMetric<Primitive.X, MultiControlledXDriver>(
        WidthCounter.Metrics.ExtraWidth,
        functor: OperationFunctor.Controlled); 


double inputWidth =
    sim.GetMetric<Primitive.X, MultiControlledXDriver>(
        WidthCounter.Metrics.InputWidth,
        functor: OperationFunctor.Controlled); 

该程序的第一部分执行MultiControlledXDriver 在第二部分中,我们使用方法QCTraceSimulator.GetMetric来获得分配的量子位数以及受控X作为输入接收的量子位数。

最后,要以CSV格式输出由宽度计数器收集的所有统计信息,我们可以使用以下内容:

C#
 string csvSummary = sim.ToCSV()[MetricCalculatorsNames.widthCounter]; 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值