今天搞了下量子计算编程

六月ゝ 毕业季﹏ 提交于 2020-02-27 14:00:46

operation QTest() : (Result, Result)
{
    body
    {
        // 用于保存量子位状态的可变局部变量
        mutable s1 = Zero;
        mutable s2 = Zero;

        // 分配两个量子位
        using (qubits = Qubit[2])
        {
            // 将第一个量子位执行阿达马门实现状态叠加
            H(qubits[0]);

            // 通过可控非门将两个量子进行纠缠
            CNOT(qubits[0], qubits[1]);

            // 测量两个量子位的状态
            set s1 = M(qubits[0]);
            set s2 = M(qubits[1]);

            // 释放量子位前需要将其重置0状态
            Set(Zero, qubits[0]);
            Set(Zero, qubits[1]);
        }

        // 返回两个量子位的状态
        return (s1, s2);
    }    

static void Main(string[] args)
{
    using (var sim = new QuantumSimulator())
    {
        for (int i = 0; i < 10; i++)
        {
            var (s1, s2) = QTest.Run(sim).Result;
            Console.WriteLine($"第{i}次:Q1状态 {s1,-5} Q2状态 {s2,-5}");
        }
    }

    Console.WriteLine("按任意键继续...");
    Console.ReadKey();
}
 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!