qubit和bit之间的差异可以用一个简单的代码示例来解释吗?
我只知道你可以玩量子计算的地方是google quantum playground和ibm's quantum experience。虽然第一个使用qscript和第二个qasm语言(这很容易学习),但它们的用法与常规编程(除少数特定功能外)没有多大区别。以下是*的解释:qubit和bit之间的差异可以用一个简单的代码示例来解释吗?
一个量子位与经典位有一些相似之处,但总体而言非常不同。量子位的测量有两种可能的结果 - 通常是0和1,就像一点一样。不同之处在于,尽管一个比特的状态是0或1,但量子比特的状态也可以是两者的叠加。可以在一个量子比特中完全编码一个比特。然而,量子位可以容纳更多信息,例如,使用超密码编码最多两位。
对于一个有n个元件的系统,在经典物理学中它的状态的完整描述只需要n位,而在量子物理中它需要2^n-1个复数。
哪个或多或少明确。但如何用代码示例显示?
下面是一些经典代码,翻转硬币,数你有多少头获得:
def coin_count():
bit = False
counter = 0
for _ in range(500):
bit ^= random() < 0.5 # False → 50% False, 50% True
# True → 50% False, 50% True
if bit:
counter += 1
return counter
如果你运行这段代码很多次,并进行了直方图,其结果将是大约Binomial distribution:
现在这里是一些伪代码,基本上是一样的东西,except the coin is replaced by a qubit。我们通过对其应用Hadamard操作来“翻转量子位”。
def hadamard_coin_count():
qubit = qalloc()
counter = 0
for _ in range(500):
apply Hadamard to qubit # |0⟩ → √½|0⟩ + √½|1⟩
# |1⟩ → √½|0⟩ - √½|1⟩
if qubit: # (not a measurement; controls nested operations)
counter += 1 # (happens only in some parts of the superposition)
return measure(counter) # (note: counter was in superposition)
做了很多次,绘制出的分布,你会得到something very different:
显然,这些代码片段,尽管他们表面的相似性做的非常不同的事情。量子行走不像古典随机游走一样。这种差异在一些算法中很有用。
广泛的解释。谢谢。我会花几个时间来运行它几次,并考虑它。 – npocmaka
您可能会发现[我的拖放量子电路模拟器Quirk](http://algassert.com/quirk)有用。 –