📜  经典计算与量子计算

📅  最后修改于: 2021-04-16 08:09:12             🧑  作者: Mango

介绍 :
常规的计算方法是用于以估计的时间复杂度解决期望的问题的最流行的方法。搜索,排序和许多其他算法可以解决日常生活中的问题,并且可以针对不同方法在时间和空间上得到有效控制。例如,线性搜索的时间复杂度为O(n),二进制搜索的时间复杂度为(nlog2n)。这些都为软件行业和其他IT部门带来了繁荣发展的动力,为世界的福祉而努力。

基本常规结构:
当然,我们使用位(0或1)来存储信息,并借助这2位,我们以无与伦比的效率计算出了千兆字节至TB到PB的数据,甚至更多。现在让我们更深入地了解一下,可以将2个4位组合(即16个组合)转换为四个经典位,如下所示:

0000    0001    0010    0011
0100    0101    0110    0111
1000    1001    1010    1011
1100    1101    1110    1111

那是16种可能的组合,其中我们一次只能使用一种。我们的CPU的平均计算频率为2.4GHz,显然,所有组合都是同时计算的,但是它们彼此之间是不同的,并且CPU每次组合都会计算一次。尽管同时计算可以通过在计算机中拥有1个以上的CPU来完成,这被称为“多处理”,但这是另一回事。事实是,我们的CPU一次计算一个组合。这引起了一个重大而又高级的研究问题–是否可以在没有任何多处理器的情况下同时使用所有这些?

量子计算

为了回答这个疯狂的问题,Quantum Computing出现了。这种计算技术直接利用独特的量子力学现象,例如叠加和纠缠来对数据执行操作。量子计算的基本和非凡的想法是,在普通的经典计算机中,位是信息的基本最小单位。

量子计算机使用的量子位(量子位)也可以像传统位一样设置为0或1,但是这些位的容器从晶体管变为光子。 Qubit可以在任何2级量子系统(例如自旋和磁场)中,也可以在单个光子中。根据水平或垂直极化,可能的状态可以设为0或1。因此,在量子世界理论中,量子位不必只是其中之一。它可以同时处于两种状态的任何比率。那仅称为叠加

量子计算的应用
这可能会为计算机科学领域的基础打下坚实而开创性的基础。这有助于解决具有统一的时空复杂性的许多未解决或几乎可解决的问题。

为具有8个面的骰子创建一个应用程序
要使用量子计算编写基本程序,我们需要为机器设置环境。请按照以下步骤设置环境:

  • 注册免费的Forest API密钥。注册后,API ket将被免费邮寄给您。
  • 检查您是否已经Python 3.x都有安装。 (使用Python –version )。如果版本未更新,则从此处安装最新版本)
  • 安装正确版本后,请使用命令pip install pyquil安装pyquil。

导入所需的模块:

from pyquil.quil import Program
from pyquil.api import QVMConnection
from pyquil.gates import H
from functools import reduce
  
qvm = QVMConnection()

>

重要的提示 :

  • 通常,量子是使用程序对象在Forest中编程的。
  • QVM实际上提供了到量子虚拟机(QVM)的连接。
  • H是哈达玛门。它基本上是用来随机掷骰子的。
  • reduce基本上是用于迭代和循环功能的库。

最终程序:

from pyquil.quil import Program
from pyquil.api import QVMConnection
from pyquil.gates import H
from functools import reduce
  
qvm = QVMConnection()
  
dice = Program(H(0),H(1), H(2))
  
roll = dice.measure_all()
  
res = qvm.run(roll)
  
value = reduce(lambda x,y: 2*x+y,res[0],0)+1
  
print ("Dice returned value are ", value)

;

输出

While printing the roll value we got some instructions set as
Output : 
H 0
H 1
H 2
MEASURE 0 [0]
MEASURE 1 [1]
MEASURE 2 [2]

These instruction sets are basically written in QUIL (Quantum Instruction Language)