【问题标题】:How to pass one Q# operation to another Q# operation from C# or F#如何从 C# 或 F# 将一个 Q# 操作传递给另一个 Q# 操作
【发布时间】:2020-04-07 05:39:28
【问题描述】:

我有以下 Q# 操作

operation VQC (cirq:((Double[],Qubit[])=>Unit is Adj),measurement:Pauli[], args: Double[], nQubits:Int) : Double {
    let res=EstimateFrequencyA(cirq(args,_),Measure(measurement,_),nQubits,1000);
    return 2.*res-1.;                   
}

operation Cirq(args:Double[],qs: Qubit[]):Unit is Adj{      
    Rz(args[0],qs[0] );
    CNOT(qs[0],qs[1]);
    Ry(args[1],qs[1]);

}

如何将 Cirq 操作从 C# 或 F# 传递到 VQC 操作?

【问题讨论】:

    标签: quantum-computing q#


    【解决方案1】:

    看起来您可以使用SimulatorBase.Get<> 来获取您需要传递的操作类型的实例并改为传递它。

    这里是C#驱动代码(F#应该类似):

    using QuantumSimulator qsim = new QuantumSimulator();
    Pauli[] paulis = { Pauli.PauliX, Pauli.PauliZ };
    double[] doubles = { 2.0, 0.5 };
    IAdjointable cirqInstance = qsim.Get<IAdjointable, Cirq>();
    double result = VQC.Run(qsim, cirqInstance, new QArray<Pauli>(paulis), new QArray<Double>(doubles), 2).Result;
    Console.WriteLine(result);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-24
      • 2021-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-10
      • 1970-01-01
      相关资源
      最近更新 更多