如何用python编程实现模拟计算机_用 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 them

OneQubit = QuantumRegister(1) # New Quantum Register of 1 Qubit

print('One Qubit: ' + OneQubit.measure()) # Should Print 'One Qubit: 0'

FiveQubits = QuantumRegister(5) # New Quantum Register of 5 Qubits

# Should Print 'Five Qubits: 00000'

print('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 qubits

Swap.applyGate('X', 1) # Apply The NOT Gate. If Measured Now, it should be 10

# Start the swap algorithm

Swap.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 algorithm

print('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 1

FairCoinFlip.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 test

if 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 00

ZeroZero = 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 anyway

ZeroOne.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() + '>')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值