Add deutsch algorithm

This commit is contained in:
Anton Romanov 2024-08-27 15:31:51 +04:00
parent 183396208f
commit 80b3e96fca
3 changed files with 205 additions and 30 deletions

172
1.Introduction.ipynb Normal file

File diff suppressed because one or more lines are too long

View File

@ -1,8 +1,17 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "2953ed5d-b54c-41a7-8b01-11e9f4ffebea",
"metadata": {},
"source": [
"Используя вентили X, H и CNOT, можно проводить эксперименты с первым в мире алгоритмом квантовых вычислений: алгоритм Дойча [dɔitʃ] является одним из наиболее распространенных квантовых алгоритмов, который определяет тип функции. В отличие от классических алгоритмов, алгоритм Дойча демонстрирует ускорение алгоритмов\n",
"квантовых вычислений."
]
},
{
"cell_type": "code",
"execution_count": 1,
"execution_count": 14,
"id": "fc7fe56b-71b4-498c-955d-e5e56af8f08e",
"metadata": {},
"outputs": [
@ -10,21 +19,24 @@
"name": "stdout",
"output_type": "stream",
"text": [
"{'10': 512, '11': 512}\n"
"{'11': 1024}\n"
]
}
],
"source": [
"from spinqit import get_basic_simulator, get_compiler, Circuit, BasicSimulatorConfig\n",
"from spinqit import H, CX, Rx\n",
"from spinqit import H, X, Rx, CNOT\n",
"from math import pi\n",
"\n",
"# Write the program\n",
"circ = Circuit()\n",
"q = circ.allocateQubits(2)\n",
"circ << (Rx, q[0], pi)\n",
"circ << (X, q[1])\n",
"circ << (H, q[0])\n",
"circ << (H, q[1])\n",
"circ << (CNOT, (q[0], q[1]))\n",
"circ << (H, q[0])\n",
"circ << (H, q[1])\n",
"circ << (CX, (q[0], q[1]))\n",
"\n",
"# Choose the compiler and backend\n",
"comp = get_compiler(\"native\")\n",
@ -41,6 +53,22 @@
"\n",
"print(result.counts)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c8fd21c4-ce4b-4d47-8bf6-ca241e994d1e",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "0c9946b4-0366-4129-ac6e-1e138309ee5f",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {

25
main.py
View File

@ -1,25 +0,0 @@
from spinqit import get_basic_simulator, get_compiler, Circuit, BasicSimulatorConfig
from spinqit import H, CX, Rx
from math import pi
# Write the program
circ = Circuit()
q = circ.allocateQubits(2)
circ << (Rx, q[0], pi)
circ << (H, q[1])
circ << (CX, (q[0], q[1]))
# Choose the compiler and backend
comp = get_compiler("native")
engine = get_basic_simulator()
# Compile
optimization_level = 0
exe = comp.compile(circ, optimization_level)
# Run
config = BasicSimulatorConfig()
config.configure_shots(1024)
result = engine.execute(exe, config)
print(result.counts)