npo*_*aka 6 bit quantum-computing qscript qubit
我知道你可以玩量子计算的唯一地方是谷歌量子游乐场和ibm的量子体验.虽然第一个使用qscript和第二个qasm语言(易于学习),但它们的使用仍然与常规编程(除了少数特定功能)没有太大差别.这是维基百科的解释:
量子比特与经典比特有一些相似之处,但总体上非常不同.测量量子位有两种可能的结果 - 通常是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
Run Code Online (Sandbox Code Playgroud)
如果多次运行此代码并进行直方图,结果将近似为二项分布:
现在这里有一些基本相同的伪代码,除了硬币由量子比特代替.我们通过应用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)
Run Code Online (Sandbox Code Playgroud)
做了很多次,绘制出分布,你会得到一些非常不同的东西:
显然,尽管这些代码片段的表面相似性,但它们的表现却截然不同.量子行走与经典随机行走的行为不同.这种差异在某些算法中很有用.