Ane*_*dar 13 quantum-computing q#
简而言之:如果我可以访问真正的量子计算机,是否有可能使用Q#控制它?
在你将其投入到必杀技之前,因为"现在还没有量子计算机可用":我是一名物理学家,我们的团队能够在现实世界的量子比特上做真正的大门.我也有一些编程背景(主要是C++).
因此,为了这个问题,让我们假装某人可以访问能够在多个量子位上执行某些量子操作的真实世界设备.显然,量子比特的数量可能是有限的,因此可能是可能的操作.我们还要说有人对Q#足够熟练,如果需要C#.是否有可能将计算从内置模拟器"重定向"到某个真实世界的设备?或者是否必须基本上重写整个Q#库?有没有办法定义我自己的QuantumSimulator,我将如何开始这样做?
我在对象浏览器中浏览了一下。
用于调用 Q# 的 C# 存根operations如下所示:
using (var sim = new QuantumSimulator())
{
var res = MyOperation.Run(sim, arg1, arg2).Result;
}
Run Code Online (Sandbox Code Playgroud)
运行时环境似乎作为参数传递给操作。所以我查看了该类QuantumSimulator,然后查看了它的父类SimulatorBase,其中有这个有用的评论和定义。
//
// Summary:
// A Base class for Simulators. It provides the infrastructure that makes it easy
// for a Simulator to become an OperationFactory (so the execution of an Operation
// can be tied to this simulator) and to manage the allocation of Qubits (via the
// QubitManager).
public abstract class SimulatorBase : AbstractFactory<AbstractOperation>, IOperationFactory
Run Code Online (Sandbox Code Playgroud)
我将其解释为意味着任何实现的东西都AbstractFactory<AbstractOperation>可以作为参数传递给操作 - 从而将语言结构与特定的运行环境联系起来。在实现真正的量子计算机时,可能可以用作QuantumSimulator示例 - 看起来它主要只是实现Microsoft.Quantum.Primitive命名空间中原始操作的具体版本。(所有原始操作似乎都是抽象类)。
我认为您可能必须具体实现每个原语才能正确控制机器上的量子位,但随后您可能几乎可以开箱即用地使用 Q# 语言。
这对我来说是相当推测的,但这可能是一个很好的起点。
编辑:Prelude 中需要修改的四个命名空间是 Microsoft.Quantum.Extensions.Bitwise
Microsoft.Quantum.Extensions.Convert
Microsoft.Quantum.Extensions.Math
Microsoft.Quantum.Extensions.RangeFunctions