From 933cd5eff51c8938a6a91f82da8e48e0e5cb3e08 Mon Sep 17 00:00:00 2001 From: Vu Tuan Hai <43202025+vutuanhai237@users.noreply.github.com> Date: Fri, 3 May 2024 23:07:40 +0900 Subject: [PATCH] Add fast-fit --- codes/qcompilation.ipynb | 512 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 483 insertions(+), 29 deletions(-) diff --git a/codes/qcompilation.ipynb b/codes/qcompilation.ipynb index 9f480290..d05c24eb 100644 --- a/codes/qcompilation.ipynb +++ b/codes/qcompilation.ipynb @@ -2,18 +2,9 @@ "cells": [ { "cell_type": "code", - "execution_count": 45, + "execution_count": 1, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The autoreload extension is already loaded. To reload it, use:\n", - " %reload_ext autoreload\n" - ] - } - ], + "outputs": [], "source": [ "import sys\n", "sys.path.insert(0, '..')\n", @@ -31,7 +22,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjMAAAEvCAYAAACwrkC/AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA1D0lEQVR4nO3de1wVdeL/8RdXDyCgqIniBSUIxJT1VmYX2azVvGZalut37ddmrZqVrrr7rdZtu5iXb21qrbpWrlamqZm3sou6EmWZ9wWtMNG4qagggsjt/P44hbGhcnBgzpzzfj4ePpQ5M+P7wIc57zMzZ8bLbrfbEREREbEob7MDiIiIiFwJlRkRERGxNJUZERERsTSVGREREbE0lRkRERGxNJUZERERsTSVGREREbE0lRkRERGxNJUZERERsTSVGREREbE0lRkRERGxNJUZERERsTSVGREREbE0lRkRERGxNJUZERERsTSVGREREbE0lRkRERGxNJUZERERsTSVGREREbE0lRkRERGxNJUZERERsTSVGREREbE0lRkRERGxNJUZERERsTSVGREREbE0lRkRERGxNJUZERERsTSVGREREbE0X7MDiIiISO0dPHjQqfmPHz/OihUruPvuu7nqqqtqtExsbGxtotUb7ZkRERHxICdOnOCVV17hxIkTZkcxjMqMiIiIWJrKjIiIiFiayoyIiIhYmsqMiIiIBwkNDWXgwIGEhoaaHcUwXna73W52CBEREakdZz/NVBv6NJOIiIi4jPPnz3PkyBHOnz9vdhTDqMyIiIh4kLS0NPr27UtaWprZUQyji+a5CLsdKkrNTmEcbz/w8jI7hbVoDIiI1I7KjIuoKIUtc8xOYZzECeDjb3YKa9EYEBGpHR1mEhEREUtTmRERERFL02EmERERDxIfH8+BAwfMjmEo7ZkRERERS1OZERER8SCHDx9mxIgRHD582OwohlGZERER8SBFRUXs3buXoqIis6MYRmVGRERELE0nALuRvYe28sf5iVWm2fyDaNUshj5dRjGk1yP4+OhH7s40BkTEE2mr5oYSE+6lR+wd2LFzuiCHj3cuYf66iRw9foDHhy00O57UA40BEfEkKjNuKDqiC326/rby64E3jOWBmbF88NUi7u/7HI0aNjMxndQHjQERuZiIiAhmzJhBRESE2VEMo3NmPECAfxCxba/HbreT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li154IEHzI4mIiLi0nTOjIuaPn06L7/8Mjk5OWZHERERcWk6Z8ZFVVRUUFxcbHYMERERl6fDTC5g2rRp3HTTTbRv357S0lK2bdvGjBkzuP/++82OJiIi4vJUZlzAmTNnePjhh8nMzMRms9G+fXumT5/Oww8/bHY0ERERl6dzZkRERMTSdM6MxfyQfZyi4vNmxxAREXEZOsxkIWXl5bz53scUny/hgbvvoE1Ec7MjiYiImE57Zv5LeXk5S5cu5fbbb6dZs2Y0aNCANm3a0LdvXxYtWkR5eblp2Xbu/4b8gkL8/f1ocVUT03KIiIi4Ep0z8zNnzpxhyJAhbNmyBYCWLVsSERFBVlYWWVlZ2O12Tp8+TaNGjeo9W1l5ObMWvEN+QSEDb72BXt061nsGERERV6TDTD/zwAMPsGXLFlq1asWSJUuq3Bvp2LFjvPbaa/j5+ZmS7ae9MsENA+nROdaUDCIiIq5Ie2Z+tHPnTrp164avry+7d++mY0fj9nzM/ddqCs6eu4I12CkoPIfdbsfWwB9/kwqViIhIXQluGMAjvxtaq2W1Z+ZHa9asAaB///6GFhmAgrPnOHO20JB1FZ8vofh8iSHrEhERcQcqMz9KTU0FoGfPnoavO7hhwBUsrb0yIiLi/q7ktVJl5kdnzpwBIDQ01PB113a3GcCXew7w3qYkghsGMmXMCPz89CMTERH5Ob0y/igkJASA/Px8w9dd+3NmHHtlAEpLy5i1cLmxwURERFyEzpkxQHx8PKtXr+aLL74wfN1GnDOjc2VERESqpzLzozvvvJNnnnmGjRs3kpqaSocOHQxbd+2OA+pcGRER8RxXcs6MPpr9M/fccw8rVqygTZs2LFmyhFtuuaXysWPHjvH6668zYcIEgoKC6jyLzpURERGpGZWZnzlz5gyDBw9m69atAERERNCyZUuys7PJzMystysAl5WXM3vhcvLOnNXVfkVERC5D92b6mZCQED755BNee+01evfuTVFREXv37sXb25vf/OY3vPbaawQHB9d5jp37vyXvzFld7VdERKQGtGfGBe1O+Y4Ptn7FLdd11l4ZERGRy1CZcVGlZWV44YWvr4/ZUURERFyayoyIiIhYms6ZEREREUtTmRERERFLU5kRERERS1OZEREREUtTmRERERFLU5kRERERS1OZEREREUtTmRERERFLU5kRERERS1OZEREREUtTmRERERFLU5kRERERS1OZEREREUtTmRERERFLU5kRERERS1OZEREREUtTmRERERFLU5kRERERS1OZEREREUtTmRERERFLU5kRERERS1OZEREREUtTmRERERFLU5kRERERS1OZEREREUtTmRERERFLU5kRERERS1OZEREREUtTmRERERFLU5kRERERS1OZEREREUtTmRERERFLU5kRERERS1OZEREREUtTmRERERFLU5kRERERS1OZEREREUtTmRERERFLU5kRERERS/v/gjI9rcJB/AIAAAAASUVORK5CYII=", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjMAAAEvCAYAAACwrkC/AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA1D0lEQVR4nO3de1wVdeL/8RdXDyCgqIniBSUIxJT1VmYX2azVvGZalut37ddmrZqVrrr7rdZtu5iXb21qrbpWrlamqZm3sou6EmWZ9wWtMNG4qagggsjt/P44hbGhcnBgzpzzfj4ePpQ5M+P7wIc57zMzZ8bLbrfbEREREbEob7MDiIiIiFwJlRkRERGxNJUZERERsTSVGREREbE0lRkRERGxNJUZERERsTSVGREREbE0lRkRERGxNJUZERERsTSVGREREbE0lRkRERGxNJUZERERsTSVGREREbE0lRkRERGxNJUZERERsTSVGREREbE0lRkRERGxNJUZERERsTSVGREREbE0lRkRERGxNJUZERERsTSVGREREbE0lRkRERGxNJUZERERsTSVGREREbE0lRkRERGxNJUZERERsTSVGREREbE0X7MDiIiISO0dPHjQqfmPHz/OihUruPvuu7nqqqtqtExsbGxtotUb7ZkRERHxICdOnOCVV17hxIkTZkcxjMqMiIiIWJrKjIiIiFiayoyIiIhYmsqMiIiIBwkNDWXgwIGEhoaaHcUwXna73W52CBEREakdZz/NVBv6NJOIiIi4jPPnz3PkyBHOnz9vdhTDqMyIiIh4kLS0NPr27UtaWprZUQyji+a5CLsdKkrNTmEcbz/w8jI7hbVoDIiI1I7KjIuoKIUtc8xOYZzECeDjb3YKa9EYEBGpHR1mEhEREUtTmRERERFL02EmERERDxIfH8+BAwfMjmEo7ZkRERERS1OZERER8SCHDx9mxIgRHD582OwohlGZERER8SBFRUXs3buXoqIis6MYRmVGRERELE0nALuRvYe28sf5iVWm2fyDaNUshj5dRjGk1yP4+OhH7s40BkTEE2mr5oYSE+6lR+wd2LFzuiCHj3cuYf66iRw9foDHhy00O57UA40BEfEkKjNuKDqiC326/rby64E3jOWBmbF88NUi7u/7HI0aNjMxndQHjQERuZiIiAhmzJhBRESE2VEMo3NmPECAfxCxba/HbreT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li154IEHzI4mIiLi0nTOjIuaPn06L7/8Mjk5OWZHERERcWk6Z8ZFVVRUUFxcbHYMERERl6fDTC5g2rRp3HTTTbRv357S0lK2bdvGjBkzuP/++82OJiIi4vJUZlzAmTNnePjhh8nMzMRms9G+fXumT5/Oww8/bHY0ERERl6dzZkRERMTSdM6MxfyQfZyi4vNmxxAREXEZOsxkIWXl5bz53scUny/hgbvvoE1Ec7MjiYiImE57Zv5LeXk5S5cu5fbbb6dZs2Y0aNCANm3a0LdvXxYtWkR5eblp2Xbu/4b8gkL8/f1ocVUT03KIiIi4Ep0z8zNnzpxhyJAhbNmyBYCWLVsSERFBVlYWWVlZ2O12Tp8+TaNGjeo9W1l5ObMWvEN+QSEDb72BXt061nsGERERV6TDTD/zwAMPsGXLFlq1asWSJUuq3Bvp2LFjvPbaa/j5+ZmS7ae9MsENA+nROdaUDCIiIq5Ie2Z+tHPnTrp164avry+7d++mY0fj9nzM/ddqCs6eu4I12CkoPIfdbsfWwB9/kwqViIhIXQluGMAjvxtaq2W1Z+ZHa9asAaB///6GFhmAgrPnOHO20JB1FZ8vofh8iSHrEhERcQcqMz9KTU0FoGfPnoavO7hhwBUsrb0yIiLi/q7ktVJl5kdnzpwBIDQ01PB113a3GcCXew7w3qYkghsGMmXMCPz89CMTERH5Ob0y/igkJASA/Px8w9dd+3NmHHtlAEpLy5i1cLmxwURERFyEzpkxQHx8PKtXr+aLL74wfN1GnDOjc2VERESqpzLzozvvvJNnnnmGjRs3kpqaSocOHQxbd+2OA+pcGRER8RxXcs6MPpr9M/fccw8rVqygTZs2LFmyhFtuuaXysWPHjvH6668zYcIEgoKC6jyLzpURERGpGZWZnzlz5gyDBw9m69atAERERNCyZUuys7PJzMystysAl5WXM3vhcvLOnNXVfkVERC5D92b6mZCQED755BNee+01evfuTVFREXv37sXb25vf/OY3vPbaawQHB9d5jp37vyXvzFld7VdERKQGtGfGBe1O+Y4Ptn7FLdd11l4ZERGRy1CZcVGlZWV44YWvr4/ZUURERFyayoyIiIhYms6ZEREREUtTmRERERFLU5kRERERS1OZEREREUtTmRERERFLU5kRERERS1OZEREREUtTmRERERFLU5kRERERS1OZEREREUtTmRERERFLU5kRERERS1OZEREREUtTmRERERFLU5kRERERS1OZEREREUtTmRERERFLU5kRERERS1OZEREREUtTmRERERFLU5kRERERS1OZEREREUtTmRERERFLU5kRERERS1OZEREREUtTmRERERFLU5kRERERS1OZEREREUtTmRERERFLU5kRERERS1OZEREREUtTmRERERFLU5kRERERS1OZEREREUtTmRERERFLU5kRERERS1OZEREREUtTmRERERFLU5kRERERS/v/gjI9rcJB/AIAAAAASUVORK5CYII=", "text/plain": [ "
" ] @@ -47,37 +38,500 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 88, + "metadata": {}, + "outputs": [], + "source": [ + "num_qubits = 2\n", + "random = np.random.uniform(0, np.pi, 2**num_qubits)\n", + "random = random/np.linalg.norm(random)\n", + "random_array = np.array(random)" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0.75676064, 0.61660069, 0.17587764, 0.12721623])" + ] + }, + "execution_count": 104, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "random" + ] + }, + { + "cell_type": "code", + "execution_count": 105, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Step 0: 0.9812\n", - "Step 10: 0.6105\n", - "Step 20: 0.11209999999999998\n", - "Step 30: 0.015000000000000013\n", - "Step 40: 0.0012999999999999678\n", - "Step 50: 0.00019999999999997797\n", - "Step 60: 0.00029999999999996696\n", - "Step 70: 0.0\n", - "Step 80: 9.999999999998899e-05\n", - "Step 90: 0.0004999999999999449\n" + "[0.75676064+0.j 0.61660069+0.j 0.17587764+0.j 0.12721623+0.j]\n", + "p0_true 0.3973\n", + "(0.390707554861614+0j)\n" ] } ], "source": [ - "num_qubits = 4\n", + "import qiskit\n", + "from qiskit.primitives import Sampler\n", + "import time\n", + "\n", + "import qiskit.quantum_info as qi\n", + "begin = time.time()\n", + "\n", + "qc1 = qiskit.QuantumCircuit(num_qubits)\n", + "qc1.prepare_state(random)\n", + "qc = qiskit.QuantumCircuit(num_qubits)\n", + "qc.h(0)\n", + "qc.cx(0, 1)\n", + "psi = qi.Statevector.from_instruction(qc).data\n", + "qc = qc.compose(qc1)\n", + "qc.measure_all()\n", + "sampler = Sampler()\n", + "result = sampler.run(qc, shots = 10000).result().quasi_dists[0].get(0, 0)\n", + "print(qi.Statevector.from_instruction(qc1).data)\n", + "print(\"p0_true\", result)\n", + "print((np.conjugate(np.transpose(random_array)) @ psi) ** 2)\n", + "# print(time.time() - begin)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(0.2935427333512742-1.4098069715216743e-15j)\n", + "(0.025909455667814902-1.3809060244409772e-16j)\n", + "(0.06164677585296935-3.508871786738865e-16j)\n", + "(0.017567914401684644-5.646096935801329e-17j)\n", + "(0.3969180366283827-1.4213457567361096e-15j)\n", + "(0.062091976934647394-1.1213482570179243e-16j)\n", + "(0.23882824515820728-7.944153348817864e-16j)\n", + "(0.01163569333388056+2.1416163771650656e-17j)\n", + "(0.10897752151883408-2.9895458545274484e-16j)\n", + "(0.0025719362717574355-4.397973801186225e-17j)\n", + "(0.39691803662838315-1.3979599973556392e-15j)\n", + "(0.06209197693464738-1.3443191358068639e-16j)\n", + "(0.025666925903664588-4.91437948031687e-17j)\n", + "(0.2927250432951283-1.1821111702854639e-15j)\n", + "(0.03277128827371197-6.666076238993606e-17j)\n", + "(0.31568678927169075-1.2264975293689201e-15j)\n", + "(0.0009219248314890646-2.1327124361067545e-17j)\n", + "(0.12282815678828315-3.7501603493584865e-16j)\n", + "(0.08345370853169512-3.092053336649792e-16j)\n", + "(0.44851851915762897-1.9321631343941742e-15j)\n", + "(0.09497138295323267-3.367568081328274e-16j)\n", + "(0.4747292275945159-1.9887465404370436e-15j)\n", + "(0.03814233462716386-3.1974542950886304e-16j)\n", + "(0.03442177819350507-2.5074247229032417e-17j)\n", + "(0.03548240428071021-1.466642126643948e-16j)\n", + "(0.32398799545683493-1.5069868059888735e-15j)\n", + "(0.02372601466881067-5.01024162833226e-17j)\n", + "(0.0514378704317569-3.3622131040808823e-16j)\n", + "(0.038142334627163904-3.1383266254685294e-16j)\n", + "(0.03442177819350503-2.8377834254195185e-17j)\n", + "(0.0002475550014708665-7.730601711699274e-18j)\n", + "(0.15726425739059172-9.353539684833293e-16j)\n", + "(0.0012614483946131827-3.584702765915973e-18j)\n", + "(0.11924232642664159-5.988225461120845e-16j)\n", + "(0.02119833277241063-1.356014751103356e-16j)\n", + "(0.05533561088807488-1.9242354825496324e-16j)\n", + "Step 0 ...\n", + "(0.4150760695276506-1.9358535428245704e-15j)\n", + "(0.012861776023653506-3.659783635611302e-17j)\n", + "(0.12302973107594269-5.612085056799153e-16j)\n", + "(0.16558209849340916-6.536132466858436e-16j)\n", + "(0.6988729806813566-2.6568985313573698e-15j)\n", + "(0.0061328456060695995+6.346790770601804e-18j)\n", + "(0.26983362517897647-8.268274060706468e-16j)\n", + "(0.056748111909054134-4.0941534629380846e-16j)\n", + "(0.14924392089731553-3.790623280561891e-16j)\n", + "(0.13790285591738252-8.993769126787862e-16j)\n", + "(0.6988729806813566-2.60404019170788e-15j)\n", + "(0.006132845606069621+8.547907075022336e-18j)\n", + "(0.0326466764064461-2.2770509736912137e-16j)\n", + "(0.3329172667743154-1.185948745782348e-15j)\n", + "(0.03772570318832709-2.4251465904508005e-16j)\n", + "(0.31746766407176985-1.1757033733519322e-15j)\n", + "(0.05986817852214072-3.332928871320285e-16j)\n", + "(0.2631628425832255-9.218309755890403e-16j)\n", + "(0.00029569005672147185-7.120278899408571e-19j)\n", + "(0.5483078237029817-2.3447056858085025e-15j)\n", + "(0.0008326034725178612-5.455202867929797e-18j)\n", + "(0.531176954467453-2.2402909669607222e-15j)\n", + "(0.15399587543052903-1.0545844686001226e-15j)\n", + "(0.13340804701014106-2.000543670469277e-16j)\n", + "(0.006926221090390382-3.284193182096685e-17j)\n", + "(0.4548825651720565-1.9618145995403337e-15j)\n", + "(0.2088415119075896-7.624752595280378e-16j)\n", + "(0.09040962794528629-4.984227140897012e-16j)\n", + "(0.1539958754305289-1.0484094628054524e-15j)\n", + "(0.1334080470101411-2.1013432065653389e-16j)\n", + "(0.064293414580241-1.619536946678083e-16j)\n", + "(0.254129195173953-1.3231565825158413e-15j)\n", + "(0.11683509261492793-4.731344582668032e-16j)\n", + "(0.17294141803266974-7.584572334184239e-16j)\n", + "(0.13914126146306194-8.204609273441342e-16j)\n", + "(0.14796124577166897-3.947433814774854e-16j)\n", + "(0.3987461277304618-1.6157151523272868e-15j)\n", + "(0.12973268155128118-5.470015111126221e-16j)\n", + "(0.17588280558857494-7.189056126038576e-16j)\n", + "(0.3274859406924184-1.405016029171476e-15j)\n", + "(0.7707301538526278-2.929962389523151e-15j)\n", + "(0.012935725240130688-8.690483393783003e-17j)\n", + "(0.21308422165579652-5.479113683504858e-16j)\n", + "(0.28093948472030256-1.6123702716971486e-15j)\n", + "(0.13420435602568925-2.646832937270933e-16j)\n", + "(0.3910108285163449-2.0902803878682147e-15j)\n", + "(0.7707301538526278-2.9277408049079174e-15j)\n", + "(0.012935725240130688-8.911270881183491e-17j)\n", + "(0.22289371948143344-1.185641431300197e-15j)\n", + "(0.26991297923209157-8.966228932892644e-16j)\n", + "(0.22125064315321663-1.148678672517818e-15j)\n", + "(0.27172745567650675-8.080164479521139e-16j)\n", + "(0.18622867697345408-9.274684735898237e-16j)\n", + "(0.31371817792830553-1.087994971384229e-15j)\n", + "(0.07818122678961079-2.81019563357325e-16j)\n", + "(0.5069990434674859-2.2019656651448867e-15j)\n", + "(0.06696072359906294-2.492339349284491e-16j)\n", + "(0.5371131115576406-2.3033599895755838e-15j)\n", + "(0.27311536157070637-1.6923741050961286e-15j)\n", + "(0.22000162773566487-4.2353788654201615e-16j)\n", + "(0.14297048400840354-5.784659317257769e-16j)\n", + "(0.37642315214462857-1.5709754577212942e-15j)\n", + "(0.4379673783543633-1.7211602825777974e-15j)\n", + "(0.10880542632043176-5.204234757185277e-16j)\n", + "(0.27311536157070637-1.7029552430830032e-15j)\n", + "(0.2200016277356648-4.1839876393156283e-16j)\n", + "(0.2656598595067858-8.431494624306294e-16j)\n", + "(0.2267909106020796-1.2150633170476199e-15j)\n", + "(0.30022636163661587-1.2520164923474574e-15j)\n", + "(0.19688615712406582-7.839390942852745e-16j)\n", + "(0.24193333865381356-1.4063304431353739e-15j)\n", + "(0.2497805657240902-6.413826861041183e-16j)\n", + "(0.31635054629940285-1.2423892459989304e-15j)\n", + "(0.315583638151855-1.381987079454316e-15j)\n", + "(0.24695205208698692-9.204887575798273e-16j)\n", + "(0.39347529556197314-1.7498969624120843e-15j)\n", + "(0.6838083821613553-2.6442596885322858e-15j)\n", + "(0.08838236984655318-4.571879066871847e-16j)\n", + "(0.1730442291004903-3.738380098250922e-16j)\n", + "(0.5015939043333149-2.6812048683107106e-15j)\n", + "(0.1439780039618039-2.3995820567573173e-16j)\n", + "(0.5546889980856118-3.0304372298748434e-15j)\n", + "(0.6838083821613553-2.6587189669297417e-15j)\n", + "(0.08838236984655311-4.565850186684836e-16j)\n", + "(0.44135544761606726-2.244711393079972e-15j)\n", + "(0.21148310025246542-5.680156329334664e-16j)\n", + "(0.3866532338727579-2.0799057294139543e-15j)\n", + "(0.2524101087893679-6.986237043148242e-16j)\n", + "(0.3199179390707036-1.5871349716932863e-15j)\n", + "(0.31204056157999654-1.0809485376956342e-15j)\n", + "(0.23857534518559342-8.78881335887272e-16j)\n", + "(0.4042124508439729-1.8324422473756994e-15j)\n", + "(0.16154398423541647-5.764527020019693e-16j)\n", + "(0.5217078285101495-2.318596163423351e-15j)\n", + "(0.3832468902332814-2.154808530160162e-15j)\n", + "(0.25517593923228665-5.180190218091286e-16j)\n", + "(0.37216279786372003-1.5136875614997472e-15j)\n", + "(0.2643680386335233-1.1610826947007628e-15j)\n", + "(0.5490123525663592-2.2481787061037198e-15j)\n", + "(0.14689215164262506-6.514845540802558e-16j)\n", + "(0.3832468902332814-2.1507734636001247e-15j)\n", + "(0.25517593923228676-5.15199433273804e-16j)\n", + "(0.4993783681972149-1.5954209811247265e-15j)\n", + "(0.17434943268865896-9.402164726837505e-16j)\n", + "(0.3975197352536711-1.6809446407212936e-15j)\n", + "(0.24376648431169162-9.789313337420343e-16j)\n", + "(0.29860528867936725-1.7260075907350435e-15j)\n", + "(0.33381922923875623-8.367737252951418e-16j)\n", + "(0.28716770938280534-1.1650044736749442e-15j)\n", + "(0.4708763780254728-2.085372841624718e-15j)\n", + "(0.3473198733543823-1.3840112587416035e-15j)\n", + "(0.40036767058363665-1.80715658275972e-15j)\n", + "(0.5806139648490155-2.3548090750899596e-15j)\n", + "(0.21169601072169686-1.0049466873661758e-15j)\n", + "(0.20602958194968057-5.241133703419633e-16j)\n", + "(0.5901002409680373-3.226149302486648e-15j)\n", + "(0.22068050636821313-5.352931559329706e-16j)\n", + "(0.5659826758303478-3.024755001081808e-15j)\n", + "(0.5806139648490163-2.3624653830994755e-15j)\n", + "(0.2116960107216968-9.78960059319017e-16j)\n", + "(0.5532336482444019-2.8329047292981586e-15j)\n", + "(0.22875927742934557-6.406001134804909e-16j)\n", + "(0.4562152795289033-2.4596868092677688e-15j)\n", + "(0.29882352939670037-8.07340974628885e-16j)\n", + "(0.4506568095937021-2.1498150817585295e-15j)\n", + "(0.303352954752688-1.073537605311521e-15j)\n", + "(0.3862919114739732-1.4388037245835066e-15j)\n", + "(0.3606732467901767-1.6875338754145834e-15j)\n", + "(0.24324541879560305-8.875962688243754e-16j)\n", + "(0.5312740310202475-2.381131416800631e-15j)\n", + "(0.5049882950813129-2.776506468482565e-15j)\n", + "(0.2615906715181618-5.888487675379393e-16j)\n", + "(0.5424150231350809-2.1722246279681254e-15j)\n", + "(0.23580380004751655-1.0240993465724149e-15j)\n", + "(0.5564780108813349-2.412707985693174e-15j)\n", + "(0.22668082884173746-9.173503324744777e-16j)\n", + "(0.504988295081313-2.7657965362520535e-15j)\n", + "(0.2615906715181619-6.07537293329907e-16j)\n", + "(0.631426159693888-2.1011016885675038e-15j)\n", + "(0.18272321229664773-1.0408089675596803e-15j)\n", + "(0.41690931822940597-1.847046630247318e-15j)\n", + "(0.3322363665184929-1.345897734570257e-15j)\n", + "(0.37084584972690476-2.1126568153541615e-15j)\n", + "(0.3759081626297649-1.0238040897986656e-15j)\n", + "(0.3159606507136375-1.2789266154199368e-15j)\n", + "(0.5487701479647686-2.4281635145565463e-15j)\n", + "(0.44659585123934636-1.81950090913842e-15j)\n", + "(0.40273710824123304-1.8509595452153173e-15j)\n", + "(0.5173619850054446-2.1693605396914214e-15j)\n", + "(0.3406066966978953-1.6392149802497328e-15j)\n", + "(0.31106050374805816-9.247576238468787e-16j)\n", + "(0.5552723781904165-3.0840908107376317e-15j)\n", + "(0.36981715199887977-1.0727454469550907e-15j)\n", + "(0.48270265227998266-2.74348675351916e-15j)\n", + "(0.5173619850054446-2.1881590392261995e-15j)\n", + "(0.3406066966978953-1.6493695135448513e-15j)\n", + "(0.5446202193367186-3.0238964834231912e-15j)\n", + "(0.3191234239331621-9.75966118607125e-16j)\n", + "(0.44151470656123837-2.4434772429607832e-15j)\n", + "(0.40759064396343814-1.2180756637777544e-15j)\n", + "(0.5368886437874895-2.7094164849083505e-15j)\n", + "(0.325090562926843-1.2325006543619938e-15j)\n", + "(0.4743862226045104-1.8620215318109797e-15j)\n", + "(0.37716422779959347-1.8238035447351793e-15j)\n", + "(0.3104823776155448-1.2246084912816628e-15j)\n", + "(0.5560454257423212-2.612252753778085e-15j)\n", + "(0.5884536465012296-3.3590761445376854e-15j)\n", + "(0.2870673523301171-7.429738467648934e-16j)\n", + "(0.5859452921984639-2.39176753555664e-15j)\n", + "(0.28882386394151294-1.3458640981496613e-15j)\n", + "(0.49749274947608024-2.2905331187244186e-15j)\n", + "(0.3570807401266115-1.549883593320216e-15j)\n", + "(0.5884536465012293-3.389928310893597e-15j)\n", + "(0.2870673523301171-7.670908638585496e-16j)\n", + "(0.6425190736442365-2.251854477901287e-15j)\n", + "(0.251322861316435-1.4779832203335746e-15j)\n", + "(0.3801248126204457-1.778139241339944e-15j)\n", + "(0.47107819266625517-1.9924505953689804e-15j)\n", + "(0.43419465390965095-2.399193445236607e-15j)\n", + "(0.4146838466695905-1.2462435738785018e-15j)\n", + "(0.380230591033387-1.636270984588738e-15j)\n", + "(0.5420565370114786-2.811311501941902e-15j)\n", + "(0.4968660479486026-2.1696179933507233e-15j)\n", + "(0.41988590313237595-2.1310249005267804e-15j)\n", + "(0.484529709966423-2.1364462221630492e-15j)\n", + "(0.4313752213967576-2.1614827208289876e-15j)\n", + "(0.4505216898067589-1.5027929210617935e-15j)\n", + "(0.46466604067575007-2.716176239425496e-15j)\n", + "(0.5332539150346487-1.7937012084180374e-15j)\n", + "(0.38766927241177396-2.4677609655755102e-15j)\n", + "(0.48452970996642325-2.020194850588752e-15j)\n", + "(0.43137522139675777-2.0801805880734712e-15j)\n", + "(0.46487586848499207-2.7182515205645302e-15j)\n", + "(0.4503151272395941-1.535928273559227e-15j)\n", + "(0.38943985115299656-2.330808100356466e-15j)\n", + "(0.5311817038328402-1.8723861659698977e-15j)\n", + "(0.5447614232440774-2.7824766274292416e-15j)\n", + "(0.37797134827053624-1.5715789264015398e-15j)\n", + "(0.4927027553967612-1.940751019461543e-15j)\n", + "(0.42372992744596705-2.2500771704672867e-15j)\n", + "(0.3712609010133176-1.476576451152231e-15j)\n", + "(0.5528836589090936-2.817873774772588e-15j)\n", + "(0.591585621720429-3.5199179404577833e-15j)\n", + "(0.3407375154500582-9.699357613344666e-16j)\n", + "(0.5220321532634367-2.132625349576506e-15j)\n", + "(0.3973478916554291-2.010187484216429e-15j)\n", + "(0.42431926865808955-1.9863026785748765e-15j)\n", + "(0.4920676821855615-2.2826278303568406e-15j)\n", + "(0.5915856217204287-3.5193325999336204e-15j)\n", + "(0.340737515450058-9.63419389665006e-16j)\n", + "(0.57814709280542-1.9147630090132642e-15j)\n", + "(0.3510721895725381-2.1564512206009084e-15j)\n", + "(0.33451151259857015-1.4739040485760972e-15j)\n", + "(0.599855815414027-2.8400952617301824e-15j)\n", + "(0.44885570989876433-2.5454014374620034e-15j)\n", + "(0.4663610806589059-1.6435018377813088e-15j)\n", + "(0.4501254922051211-1.950955767586572e-15j)\n", + "(0.4974970674964621-2.6413934508800898e-15j)\n", + "(0.4835100103989313-2.163028128297494e-15j)\n", + "(0.46362454102072587-2.3522529492259557e-15j)\n", + "(0.4693640375004724-2.138245207067821e-15j)\n", + "(0.4776844017117388-2.4420153632349062e-15j)\n", + "(0.5599824255308394-2.0534447406090145e-15j)\n", + "(0.3942947140720456-2.4355175283746498e-15j)\n", + "(0.6231513664957696-2.3248362237961127e-15j)\n", + "(0.3443920687026815-2.1967857351320844e-15j)\n", + "(0.4693640375004724-2.1468524905121314e-15j)\n", + "(0.4776844017117387-2.456354641398802e-15j)\n", + "(0.3943796766358758-2.4164207240176514e-15j)\n", + "(0.559881183393291-2.0507771211109756e-15j)\n", + "(0.35951385759588966-2.252118285108296e-15j)\n", + "(0.6031912785375586-2.211367961427557e-15j)\n", + "(0.5131870394051383-2.8148043977881246e-15j)\n", + "(0.43543884514027753-1.7911613222621615e-15j)\n", + "(0.47542027541411436-1.964775125830337e-15j)\n", + "(0.47161371374388034-2.5954283880433855e-15j)\n", + "(0.4444590825239656-1.917568859854855e-15j)\n", + "(0.5034910014077303-2.6856977687272954e-15j)\n", + "(0.5500545302746853-3.4323856567511313e-15j)\n", + "(0.4027070460350385-1.3107931852016855e-15j)\n", + "(0.44099555784547195-1.918443884649221e-15j)\n", + "(0.5071913494234239-2.7681712466863503e-15j)\n", + "(0.3932553328198441-1.899012661966052e-15j)\n", + "(0.5612225873073812-2.750966919072408e-15j)\n", + "(0.550054530274685-3.4420538261635254e-15j)\n", + "(0.4027070460350382-1.3181062642454373e-15j)\n", + "(0.5132189045245592-1.8665759139121218e-15j)\n", + "(0.4354094938474568-2.720971834616309e-15j)\n", + "(0.3354487390166597-1.5958851813989256e-15j)\n", + "(0.6353194313853517-3.0910659550152715e-15j)\n", + "(0.4466867195211374-2.6581961632493476e-15j)\n", + "(0.5011257882099336-1.921298876159148e-15j)\n", + "(0.502792116034139-2.201422703859543e-15j)\n", + "(0.4630429812075861-2.681058335765075e-15j)\n", + "(0.45016959536977696-2.0686683566007807e-15j)\n", + "(0.5163919711913068-2.553888297722796e-15j)\n", + "(0.4703281929517499-2.0732964151330523e-15j)\n", + "(0.49525870732323335-2.5632174062087396e-15j)\n", + "(0.6001472266811183-2.223750596223047e-15j)\n", + "(0.37805192805324606-2.420030085091364e-15j)\n", + "(0.6195839193303755-2.4274900526375993e-15j)\n", + "(0.36290315903524323-2.2887449481974628e-15j)\n", + "(0.4703281929517499-2.0650976574673203e-15j)\n", + "(0.4952587073232332-2.564656238470271e-15j)\n", + "(0.3794797001027954-2.4455995680083576e-15j)\n", + "(0.5983513466457339-2.199510914950656e-15j)\n", + "(0.37548938597393405-2.38025746393605e-15j)\n", + "(0.603385747573015-2.280553599459346e-15j)\n", + "(0.47616491572324215-2.658420695567621e-15j)\n", + "(0.48930575375192814-2.081235159717898e-15j)\n", + "(0.4704253586263904-1.919265825928077e-15j)\n", + "(0.4951590098532278-2.798806207345442e-15j)\n", + "(0.5237511646798643-2.276022652381253e-15j)\n", + "(0.44334880077536454-2.422541033099865e-15j)\n", + "(0.5025965488624616-3.2055192122170666e-15j)\n", + "(0.4632306960545793-1.5579954661437246e-15j)\n", + "(0.4091673728513285-1.8047336525587754e-15j)\n", + "(0.5623335904309985-2.9966859474009535e-15j)\n", + "(0.4134538789921964-1.9505600736140655e-15j)\n", + "(0.5573326903365869-2.7158387191921033e-15j)\n", + "(0.502596548862462-3.217384479240124e-15j)\n", + "(0.4632306960545793-1.5579954661437252e-15j)\n", + "(0.49570900229152276-1.810643440098545e-15j)\n", + "(0.4698895798806233-2.877271152564126e-15j)\n", + "(0.3892949665487855-1.8108325648997447e-15j)\n", + "(0.5861677168289633-2.9163548826977833e-15j)\n", + "(0.449480918044696-2.6652347734433755e-15j)\n", + "(0.5171301112110701-1.9748410368438915e-15j)\n", + "(0.5275424130661263-2.1194133379748292e-15j)\n", + "(0.4514724504110075-2.6536894223933547e-15j)\n", + "(0.4294507650003841-1.974955506898746e-15j)\n", + "(0.5519200463606755-2.8003423629739587e-15j)\n", + "(0.47445349156571154-2.146542120307468e-15j)\n", + "(0.5032941913320436-2.7395432209860345e-15j)\n", + "(0.5793076939648979-2.1462839734451992e-15j)\n", + "(0.4059161515012539-2.6705280040645526e-15j)\n", + "(0.5629413499405617-2.0976758836743478e-15j)\n", + "(0.41983138975684436-2.7130650102064723e-15j)\n", + "(0.47445349156571165-2.0874339072810187e-15j)\n", + "(0.5032941913320442-2.6946455277107463e-15j)\n", + "(0.4165104346775037-2.7183659488692377e-15j)\n", + "(0.5668011165303769-2.0021518896854536e-15j)\n", + "(0.42408394405698424-2.724783667919211e-15j)\n", + "(0.5580401773352198-2.0475291085650527e-15j)\n", + "(0.4514140029343187-2.5258221814768365e-15j)\n", + "(0.5276055968877054-2.1826386730985823e-15j)\n", + "(0.49279687576772974-2.084957718614838e-15j)\n", + "(0.4847546228083187-2.7753764348921402e-15j)\n", + "(0.5797571191555876-2.522515663206759e-15j)\n", + "(0.4055401097168672-2.3034447146321417e-15j)\n", + "(0.469333632342165-2.9661946044052803e-15j)\n", + "(0.5085955562658772-1.8167649889545604e-15j)\n", + "(0.42861252539744776-1.9977819166962323e-15j)\n", + "(0.5528711955391413-2.9859077033811013e-15j)\n", + "(0.46056808299188023-2.334679371626303e-15j)\n", + "(0.5178047041067084-2.520918249876586e-15j)\n", + "(0.4693336323421653-2.9583077527423717e-15j)\n", + "(0.5085955562658773-1.8167649889545608e-15j)\n", + "(0.5165085800337618-2.010641651707733e-15j)\n", + "(0.4617920530041734-2.8356321827074498e-15j)\n", + "(0.47208061605102397-2.2688043106929825e-15j)\n", + "(0.5057441608376602-2.6098476215150476e-15j)\n", + "(0.46081637748871307-2.81280089229935e-15j)\n", + "(0.5175415019455638-1.9906608883058795e-15j)\n", + "(0.20098490418125778-5.6047474788548955e-16j)\n", + "(0.41123766254443067-1.0389745591637589e-15j)\n", + "(0.5235612675873872-1.2971292736141504e-15j)\n", + "(0.5188630201260904-1.244589966301432e-15j)\n", + "(0.41275623683710244-1.007166618547407e-15j)\n", + "(0.27799493802509867-6.099090812647641e-16j)\n", + "(0.19936743002261745-4.565333267133886e-16j)\n", + "(0.1826401913606119-3.936823559436364e-16j)\n", + "(0.20926563447831062-4.838311819456735e-16j)\n", + "(0.26125522017787606-6.006953318210263e-16j)\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "num_qubits = 3\n", "num_layers = 1\n", "optimizer = 'adam'\n", + "random = np.random.uniform(-np.pi, np.pi, 2**num_qubits)\n", "compiler = QuantumCompilation(\n", - " u = state.ghz(num_qubits),\n", - " vdagger = ansatz.g2gn(num_qubits, num_layers),\n", + " u = ansatz.g2gn(num_qubits, 2),\n", + " vdagger = state.specific(random),\n", " optimizer = optimizer,\n", - " loss_func = 'loss_basic'\n", + " metrics_func = ['loss_basic']\n", ")\n", - "compiler.fit(num_steps = constant.DEFAULT_NUM_STEPS, verbose = 2)" + "compiler.fast_fit(10, verbose = 2)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "compiler.plot()" ] }, { @@ -187,7 +641,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.9" + "version": "3.10.11" }, "orig_nbformat": 4, "vscode": {