用 150 行 Python 代碼寫的量子計算模擬器

簡評:讓你更輕鬆地明白,量子計算機如何遵循線性代數計算的。

這是個 GItHub 項目,可以簡單了解一下。

adamisntdead/QuSimPy?

github.com圖標

qusim.py 是一個多量子位的量子計算機模擬器(玩具?),用 150 行的 python 所編寫。

這段代碼可以讓你輕鬆了解量子計算機如何遵循線性代數來計算的!

from QuSim import QuantumRegister############################################## Introduction ############################################### Here Will Be A Few Example of Different ## Quantum States / Algorithms, So You Can ## Get A Feel For How The Module Works, and ## Some Algorithmic Ideas ############################################################################################ Quantum Measurement ############################################### This experiment will prepare 2 states, of a# Single qubit, and of 5 qubits, and will just# Measure themOneQubit = QuantumRegister(1) # New Quantum Register of 1 Qubitprint(One Qubit: + OneQubit.measure()) # Should Print One Qubit: 0FiveQubits = QuantumRegister(5) # New Quantum Register of 5 Qubits# Should Print Five Qubits: 00000print(Five Qubits: + FiveQubits.measure())############################################## Swap 2 Qubits ############################################### Here, We Will Apply a Pauli-X Gate / NOT Gate# To the first qubit, and then after the algorithm,# it will be swapped to the second qubit.Swap = QuantumRegister(2) # New Quantum Register of 2 qubitsSwap.applyGate(X, 1) # Apply The NOT Gate. If Measured Now, it should be 10# Start the swap algorithmSwap.applyGate(CNOT, 1, 2)Swap.applyGate(H, 1)Swap.applyGate(H, 2)Swap.applyGate(CNOT, 1, 2)Swap.applyGate(H, 1)Swap.applyGate(H, 2)Swap.applyGate(CNOT, 1, 2)# End the swap algorithmprint(SWAP: | + Swap.measure() + >) # Measure the State, Should be 01############################################## Fair Coin Flip ############################################### Shown in this Experiment, is a so called Fair Coin Flip,# Where a state will be prepared, that has an equal chance of# Flipping to Each Possible State. to do this, the Hadamard# Gate will be used.# New Quantum Register of 1 Qubit (As a coin has only 2 states)FairCoinFlip = QuantumRegister(1)# If measured at this point, it should be |0># Apply the hadamard gate, now theres an even chance of measuring 0 or 1FairCoinFlip.applyGate(H, 1)# Now, the state will be measured, flipping the state to# either 0 or 1. If its 0, we will say "Heads", or if its# 1, we will say "Tails"FairCoinFlipAnswer = FairCoinFlip.measure() # Now its flipped, so we can testif FairCoinFlipAnswer == 0: print(FairCoinFlip: Heads)elif FairCoinFlipAnswer == 1: print(FairCoinFlip: Tails)############################################## CNOT Gate ############################################### In this experiment, 4 states will be prepared, {00, 01, 10, 11}# And then the same CNOT Gate will be run on them,# To Show The Effects of the CNOT. The Target Qubit will be 2, and the control 1# New Quantum Register of 2 Qubits, done 4 times.# If any are measured at this time, the result will be 00ZeroZero = QuantumRegister(2)ZeroOne = QuantumRegister(2)OneZero = QuantumRegister(2)OneOne = QuantumRegister(2)# Now prepare Each Into The State Based On Their Name# ZeroZero Will be left, as thats the first state anywayZeroOne.applyGate(X, 2)OneZero.applyGate(X, 1)OneOne.applyGate(X, 1)OneOne.applyGate(X, 2)# Now, a CNOT Will Be Applied To Each.ZeroZero.applyGate(CNOT, 1, 2)ZeroOne.applyGate(CNOT, 1, 2)OneZero.applyGate(CNOT, 1, 2)OneOne.applyGate(CNOT, 1, 2)# Print the results.print(CNOT on 00: | + ZeroZero.measure() + >)print(CNOT on 01: | + ZeroOne.measure() + >)print(CNOT on 10: | + OneZero.measure() + >)print(CNOT on 11: | + OneOne.measure() + >)

主要代碼來自:corbett/QuantumComputing.

如果你對用 RUST 所寫的高效、高性能的硬體量子計算模擬器有興趣,可以點擊 QCGPU 來查看更多內容。

GITHUB 地址:adamisntdead/QuSimPy


極光日報,極光開發者旗下媒體。

每天導讀三篇英文技術文章。


推薦閱讀:

python有趣的解包用法
對於UiPath的初步了解
關於學習四品八德有哪些名人名言可以引用?
抽象能力決定編程能力
張泉靈代言的編程貓三個月內兩次融資 少兒編程教育吸金才剛剛開始

TAG:Python | 編程 | 量子計算 |