量子计算被吹捧为所有计算的未来,治愈癌症的关键和加密的终结(所有这些都是非常疯狂的说法,现在最大的量子计算机有127个量子比特,所以我们的加密钱包离任何危险还有很长的路要走)。

为什么量子计算机如此特别?
你可能会问,"有什么大不了的?量子计算机能做什么,我的Mac还不能做吗?"好吧,量子计算机比普通计算机有两个关键优势。超位 和 纠缠。
超位。在 经典计算机中,一个比特可以有一个0或1的值,我们可以用电路把这个比特打开(1)或关闭(0)。在量子计算机中,一个量子比特可以是1和0的组合,并具有一定的概率(即当你观察量子比特时,40%是1,60%是0)。(更多信息见微软关于测量量子比特的文档)。因此,在经典计算机中,如果我们想存储001,010,011,100,101,110和111,我们将需要3*8=24比特。但是在量子计算中,我们只需要3个量子比特就可以存储所有这些值。更一般地说,如果我们想存储所有可能的N个长度的 "比特 "序列,我们只需要N个量子比特,但我们需要N*2^N个经典比特。如果这个数字只是10,它将是10对10,240(而且它从那里以指数级增长)。

红色。Qubits | 蓝色。X: 二进制的长度 | Y: 需要的 "比特 "数量
纠缠
量子计算的另一个很酷的特性是纠缠,当你纠缠两个量子比特时,它们总是(在一些容错范围内)有相同的值。假设我把量子比特A和量子比特B纠缠在一起,然后我把A切换成1的值,如果我观察B,它也会有1的值。如果我把A设置为0并观察B,那么B也会把它的值变成0。在量子计算中,这就变成了N+K,在单个量子比特上进行N次纠缠操作和K次翻转操作(这将自动翻转纠缠的量子比特)
创建一个量子电路
虽然你可能没有量子计算机(除非你从IBM那里偷了一台,在这种情况下,我为你的偷窃能力鼓掌),但在python中有一个叫做Qiskit的库,可以让你创建和模拟量子电路。
如果你想跟着学,下面是实验室的链接
在导入所有必要的软件包后,我们将创建我们的电路。
circuit = QuantumCircuit(2, 2)
这是一个简单的电路,有2个量子比特来操作,2个经典比特来读取输出。
circuit.h(0)
circuit.cx(0, 1)
circuit.measure([0,1], [0,1])
我们将第一个量子比特通过哈达玛德门(将量子比特置于叠加状态)。然后,我们将两个量子位通过一个受控的 "不 "字操作,使它们纠缠在一起,这样量子位1将反映量子位0的任何值。然后我们测量状态,把第一个量子比特的状态放在第一个经典位上,把第二个量子比特的状态放在第二个经典位上。

产生的电路
simulator = QasmSimulator()
compiled_circuit = transpile(circuit, simulator)
job = simulator.run(compiled_circuit, shots=1000)
result = job.result()
counts = result.get_counts(circuit)
print("\nTotal count for 00 and 11 are:",counts)
然后我们可以模拟将2个量子位运行1000次,测量得到00和11的时间。

在这个非常简单的电路中,我们使用了叠加(将量子比特0通过Hadamard门)和纠缠(对我们的量子比特进行受控-不受控操作)。
使用Qiskit进行量子计算的简要介绍》最初发表在《Dev Genius》杂志上,人们通过强调和回应这个故事来继续对话。