From 47e3ee6c294eb497529cf416fe4e6cc7d1c6f9e2 Mon Sep 17 00:00:00 2001 From: victor-villar Date: Fri, 6 Dec 2024 15:49:21 -0500 Subject: [PATCH 1/3] Update permutation notebook with valid coupling map --- ai-permutation-synthesis-demo.ipynb | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/ai-permutation-synthesis-demo.ipynb b/ai-permutation-synthesis-demo.ipynb index cd979e4..b6ac518 100644 --- a/ai-permutation-synthesis-demo.ipynb +++ b/ai-permutation-synthesis-demo.ipynb @@ -91,10 +91,7 @@ "metadata": {}, "outputs": [], "source": [ - "from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager\n", - "from qiskit_ibm_runtime.fake_provider.backends.cairo import FakeCairoV2\n", - "\n", - "coupling_map = FakeCairoV2().coupling_map" + "coupling_map=[[1,0],[2,1],[3,2],[3,5],[4,1],[6,7],[7,4],[7,10],[8,5],[8,9],[8,11],[11,14],[12,10],[12,13],[12,15],[13,14],[16,14],[17,18],[18,15],[18,21],[19,16],[19,22],[20,19],[21,23],[23,24],[25,22],[25,24],[26,25]]" ] }, { From 8cfe0756cfc5404d566df63c48b39671cd091424 Mon Sep 17 00:00:00 2001 From: victor-villar Date: Fri, 6 Dec 2024 16:01:24 -0500 Subject: [PATCH 2/3] Add release note --- release-notes/unreleased/141.bug.rst | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 release-notes/unreleased/141.bug.rst diff --git a/release-notes/unreleased/141.bug.rst b/release-notes/unreleased/141.bug.rst new file mode 100644 index 0000000..cb01b52 --- /dev/null +++ b/release-notes/unreleased/141.bug.rst @@ -0,0 +1,4 @@ +Bug fixes +--------- + +Fixes permutation notebook example by updating the coupling map used \ No newline at end of file From 0a33df8cd311c5139bdfb6c3dbf72adab2840db7 Mon Sep 17 00:00:00 2001 From: victor-villar Date: Fri, 6 Dec 2024 16:02:17 -0500 Subject: [PATCH 3/3] Fix lint --- ai-permutation-synthesis-demo.ipynb | 291 ++++++++++++++++++++++++++-- 1 file changed, 274 insertions(+), 17 deletions(-) diff --git a/ai-permutation-synthesis-demo.ipynb b/ai-permutation-synthesis-demo.ipynb index b6ac518..a33a83a 100644 --- a/ai-permutation-synthesis-demo.ipynb +++ b/ai-permutation-synthesis-demo.ipynb @@ -12,7 +12,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 29, "metadata": {}, "outputs": [], "source": [ @@ -32,7 +32,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 31, "metadata": {}, "outputs": [ { @@ -44,12 +44,122 @@ }, { "data": { - "image/png": "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", + "text/html": [ + "
                                                                                    \n",
+       " q_0: ────────────────────────────────────────────────────────────────────────────X─\n",
+       "                                                                                  │ \n",
+       " q_1: ─────────────────────────────────────────────────────────────────────────X──┼─\n",
+       "                                                                               │  │ \n",
+       " q_2: ──────────────────────────────────────────────────────────────────────X──┼──┼─\n",
+       "                                                                            │  │  │ \n",
+       " q_3: ───────────────────────────────────────────────────────────────────X──┼──┼──┼─\n",
+       "                                                                         │  │  │  │ \n",
+       " q_4: ────────────────────────────────────────────────────────────────X──┼──┼──┼──┼─\n",
+       "                                                                      │  │  │  │  │ \n",
+       " q_5: ─────────────────────────────────────────────────────────────X──┼──┼──┼──┼──┼─\n",
+       "                                                                   │  │  │  │  │  │ \n",
+       " q_6: ──────────────────────────────────────────────────────────X──┼──┼──┼──┼──┼──┼─\n",
+       "                                                                │  │  │  │  │  │  │ \n",
+       " q_7: ───────────────────────────────────────────────────────X──┼──┼──┼──┼──┼──┼──┼─\n",
+       "                                                             │  │  │  │  │  │  │  │ \n",
+       " q_8: ────────────────────────────────────────────────────X──┼──┼──┼──┼──┼──┼──┼──┼─\n",
+       "                                                          │  │  │  │  │  │  │  │  │ \n",
+       " q_9: ─────────────────────────────────────────────────X──┼──┼──┼──┼──┼──┼──┼──┼──┼─\n",
+       "                                                       │  │  │  │  │  │  │  │  │  │ \n",
+       "q_10: ──────────────────────────────────────────────X──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼─\n",
+       "                                                    │  │  │  │  │  │  │  │  │  │  │ \n",
+       "q_11: ───────────────────────────────────────────X──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼─\n",
+       "                                                 │  │  │  │  │  │  │  │  │  │  │  │ \n",
+       "q_12: ────────────────────────────────────────X──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼─\n",
+       "                                              │  │  │  │  │  │  │  │  │  │  │  │  │ \n",
+       "q_13: ─────────────────────────────────────X──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼─\n",
+       "                                           │  │  │  │  │  │  │  │  │  │  │  │  │  │ \n",
+       "q_14: ──────────────────────────────────X──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼─\n",
+       "                                        │  │  │  │  │  │  │  │  │  │  │  │  │  │  │ \n",
+       "q_15: ───────────────────────────────X──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼─\n",
+       "                                     │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │ \n",
+       "q_16: ────────────────────────────X──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼─\n",
+       "                                  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │ \n",
+       "q_17: ─────────────────────────X──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼─\n",
+       "                               │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │ \n",
+       "q_18: ──────────────────────X──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼─\n",
+       "                            │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │ \n",
+       "q_19: ───────────────────X──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼─\n",
+       "                         │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │ \n",
+       "q_20: ────────────────X──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼─\n",
+       "                      │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │ \n",
+       "q_21: ─────────────X──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼─\n",
+       "                   │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │ \n",
+       "q_22: ──────────X──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼─\n",
+       "                │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │ \n",
+       "q_23: ───────X──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼─\n",
+       "             │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │ \n",
+       "q_24: ────X──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼─\n",
+       "          │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │ \n",
+       "q_25: ─X──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼─\n",
+       "       │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │  │ \n",
+       "q_26: ─X──X──X──X──X──X──X──X──X──X──X──X──X──X──X──X──X──X──X──X──X──X──X──X──X──X─\n",
+       "                                                                                    
" + ], "text/plain": [ - "
" + " \n", + " q_0: ────────────────────────────────────────────────────────────────────────────X─\n", + " │ \n", + " q_1: ─────────────────────────────────────────────────────────────────────────X──┼─\n", + " │ │ \n", + " q_2: ──────────────────────────────────────────────────────────────────────X──┼──┼─\n", + " │ │ │ \n", + " q_3: ───────────────────────────────────────────────────────────────────X──┼──┼──┼─\n", + " │ │ │ │ \n", + " q_4: ────────────────────────────────────────────────────────────────X──┼──┼──┼──┼─\n", + " │ │ │ │ │ \n", + " q_5: ─────────────────────────────────────────────────────────────X──┼──┼──┼──┼──┼─\n", + " │ │ │ │ │ │ \n", + " q_6: ──────────────────────────────────────────────────────────X──┼──┼──┼──┼──┼──┼─\n", + " │ │ │ │ │ │ │ \n", + " q_7: ───────────────────────────────────────────────────────X──┼──┼──┼──┼──┼──┼──┼─\n", + " │ │ │ │ │ │ │ │ \n", + " q_8: ────────────────────────────────────────────────────X──┼──┼──┼──┼──┼──┼──┼──┼─\n", + " │ │ │ │ │ │ │ │ │ \n", + " q_9: ─────────────────────────────────────────────────X──┼──┼──┼──┼──┼──┼──┼──┼──┼─\n", + " │ │ │ │ │ │ │ │ │ │ \n", + "q_10: ──────────────────────────────────────────────X──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼─\n", + " │ │ │ │ │ │ │ │ │ │ │ \n", + "q_11: ───────────────────────────────────────────X──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼─\n", + " │ │ │ │ │ │ │ │ │ │ │ │ \n", + "q_12: ────────────────────────────────────────X──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼─\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ \n", + "q_13: ─────────────────────────────────────X──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼─\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ \n", + "q_14: ──────────────────────────────────X──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼─\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ \n", + "q_15: ───────────────────────────────X──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼─\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ \n", + "q_16: ────────────────────────────X──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼─\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ \n", + "q_17: ─────────────────────────X──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼─\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ \n", + "q_18: ──────────────────────X──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼─\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ \n", + "q_19: ───────────────────X──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼─\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ \n", + "q_20: ────────────────X──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼─\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ \n", + "q_21: ─────────────X──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼─\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ \n", + "q_22: ──────────X──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼─\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ \n", + "q_23: ───────X──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼─\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ \n", + "q_24: ────X──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼─\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ \n", + "q_25: ─X──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼─\n", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ \n", + "q_26: ─X──X──X──X──X──X──X──X──X──X──X──X──X──X──X──X──X──X──X──X──X──X──X──X──X──X─\n", + " " ] }, - "execution_count": 3, + "execution_count": 31, "metadata": {}, "output_type": "execute_result" } @@ -68,7 +178,7 @@ "print(\n", " f\"Original circuit -> Depth: {circuit.decompose(reps=3).depth()}, Gates(2q): {circuit.decompose(reps=3).num_nonlocal_gates()}\"\n", ")\n", - "circuit.draw(output=\"mpl\", fold=-1, scale=0.3, style=\"iqp\")" + "circuit.draw(fold=-1, scale=0.3, style=\"iqp\")" ] }, { @@ -87,16 +197,45 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 32, "metadata": {}, "outputs": [], "source": [ - "coupling_map=[[1,0],[2,1],[3,2],[3,5],[4,1],[6,7],[7,4],[7,10],[8,5],[8,9],[8,11],[11,14],[12,10],[12,13],[12,15],[13,14],[16,14],[17,18],[18,15],[18,21],[19,16],[19,22],[20,19],[21,23],[23,24],[25,22],[25,24],[26,25]]" + "coupling_map = [\n", + " [1, 0],\n", + " [2, 1],\n", + " [3, 2],\n", + " [3, 5],\n", + " [4, 1],\n", + " [6, 7],\n", + " [7, 4],\n", + " [7, 10],\n", + " [8, 5],\n", + " [8, 9],\n", + " [8, 11],\n", + " [11, 14],\n", + " [12, 10],\n", + " [12, 13],\n", + " [12, 15],\n", + " [13, 14],\n", + " [16, 14],\n", + " [17, 18],\n", + " [18, 15],\n", + " [18, 21],\n", + " [19, 16],\n", + " [19, 22],\n", + " [20, 19],\n", + " [21, 23],\n", + " [23, 24],\n", + " [25, 22],\n", + " [25, 24],\n", + " [26, 25],\n", + "]" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 33, "metadata": {}, "outputs": [], "source": [ @@ -110,9 +249,17 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 34, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:qiskit_ibm_transpiler.wrappers.ai_local_synthesis:Running Permutations AI synthesis on local mode\n" + ] + } + ], "source": [ "# AI Synthesis passes respect the coupling map and should run after transpiling\n", "ai_optimized_circuit = ai_optimize_perms.run(circuit)" @@ -120,24 +267,134 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 35, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "AI-Optimized circuit -> Depth: 36, Gates(2q): 174\n" + "AI-Optimized circuit -> Depth: 48, Gates(2q): 180\n" ] }, { "data": { - "image/png": "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", + "text/html": [ + "
                                                               \n",
+       " q_0: ─X───────────────────────────────────────────────────────\n",
+       "       │                                                       \n",
+       " q_1: ─X──X──X─────X──X──X─────────────────────────────────────\n",
+       "          │  │     │  │  │                                     \n",
+       " q_2: ────┼──X──X──X──┼──X──X─────X────────────────────────────\n",
+       "          │     │     │     │     │                            \n",
+       " q_3: ─X──┼─────X─────┼─────X──X──X────────────────────────────\n",
+       "       │  │           │        │                               \n",
+       " q_4: ─┼──X──X────────X────────┼───────────────────────────────\n",
+       "       │     │                 │                               \n",
+       " q_5: ─X─────┼─────────────────X───────────────────────────────\n",
+       "             │                                                 \n",
+       " q_6: ─X─────┼─────────────────────────────────────────────────\n",
+       "       │     │                                                 \n",
+       " q_7: ─X─────X──X─────────────────────────────────────────X────\n",
+       "                │                                         │    \n",
+       " q_8: ──────────┼────────X──X─────────────────────────────┼────\n",
+       "                │        │  │                             │    \n",
+       " q_9: ──────────┼────────┼──X─────────────────────────────┼────\n",
+       "                │        │                                │    \n",
+       "q_10: ─X─────X──X────────┼─────X───────────────────────X──X──X─\n",
+       "       │     │           │     │                       │     │ \n",
+       "q_11: ─┼─────┼────────X──X─────┼─────X─────────────────┼─────┼─\n",
+       "       │     │        │        │     │                 │     │ \n",
+       "q_12: ─X──X──X─────X──┼─────X──X──X──┼──X──X──X─────X──X──X──X─\n",
+       "          │        │  │     │     │  │  │  │  │     │     │    \n",
+       "q_13: ────X─────X──X──┼─────┼──X──┼──┼──┼──X──┼──X──X──X──X──X─\n",
+       "                │     │     │  │  │  │  │     │  │     │     │ \n",
+       "q_14: ─X─────X──X─────X──X──┼──X──┼──X──┼─────┼──X──X──X──X──X─\n",
+       "       │     │           │  │     │     │     │     │     │    \n",
+       "q_15: ─┼─────┼───────────┼──X──X──X──X──X─────X─────┼─────┼────\n",
+       "       │     │           │     │     │              │     │    \n",
+       "q_16: ─X──X──X───────────X─────┼─────┼──────────────X──X──X────\n",
+       "          │                    │     │                 │       \n",
+       "q_17: ─X──┼────────────────────┼─────┼─────────────────┼───────\n",
+       "       │  │                    │     │                 │       \n",
+       "q_18: ─X──┼────────────────────X──X──X──X──────────────┼───────\n",
+       "          │                       │     │              │       \n",
+       "q_19: ────X───────────────────────┼─────┼──────────────X──X────\n",
+       "                                  │     │                 │    \n",
+       "q_20: ────────────────────────────┼─────┼─────────────────X────\n",
+       "                                  │     │                      \n",
+       "q_21: ────────────────────────────X─────X──X─────X─────────────\n",
+       "                                           │     │             \n",
+       "q_22: ───────X─────────────────────────────┼─────┼─────────────\n",
+       "             │                             │     │             \n",
+       "q_23: ─X─────┼─────────────────────────────X──X──X─────────────\n",
+       "       │     │                                │                \n",
+       "q_24: ─X──X──┼──X─────────────────────────────X──X─────────────\n",
+       "          │  │  │                                │             \n",
+       "q_25: ────X──X──X────────────────────────────────X──X──────────\n",
+       "                                                    │          \n",
+       "q_26: ──────────────────────────────────────────────X──────────\n",
+       "                                                               
" + ], "text/plain": [ - "
" + " \n", + " q_0: ─X───────────────────────────────────────────────────────\n", + " │ \n", + " q_1: ─X──X──X─────X──X──X─────────────────────────────────────\n", + " │ │ │ │ │ \n", + " q_2: ────┼──X──X──X──┼──X──X─────X────────────────────────────\n", + " │ │ │ │ │ \n", + " q_3: ─X──┼─────X─────┼─────X──X──X────────────────────────────\n", + " │ │ │ │ \n", + " q_4: ─┼──X──X────────X────────┼───────────────────────────────\n", + " │ │ │ \n", + " q_5: ─X─────┼─────────────────X───────────────────────────────\n", + " │ \n", + " q_6: ─X─────┼─────────────────────────────────────────────────\n", + " │ │ \n", + " q_7: ─X─────X──X─────────────────────────────────────────X────\n", + " │ │ \n", + " q_8: ──────────┼────────X──X─────────────────────────────┼────\n", + " │ │ │ │ \n", + " q_9: ──────────┼────────┼──X─────────────────────────────┼────\n", + " │ │ │ \n", + "q_10: ─X─────X──X────────┼─────X───────────────────────X──X──X─\n", + " │ │ │ │ │ │ \n", + "q_11: ─┼─────┼────────X──X─────┼─────X─────────────────┼─────┼─\n", + " │ │ │ │ │ │ │ \n", + "q_12: ─X──X──X─────X──┼─────X──X──X──┼──X──X──X─────X──X──X──X─\n", + " │ │ │ │ │ │ │ │ │ │ │ \n", + "q_13: ────X─────X──X──┼─────┼──X──┼──┼──┼──X──┼──X──X──X──X──X─\n", + " │ │ │ │ │ │ │ │ │ │ │ \n", + "q_14: ─X─────X──X─────X──X──┼──X──┼──X──┼─────┼──X──X──X──X──X─\n", + " │ │ │ │ │ │ │ │ │ \n", + "q_15: ─┼─────┼───────────┼──X──X──X──X──X─────X─────┼─────┼────\n", + " │ │ │ │ │ │ │ \n", + "q_16: ─X──X──X───────────X─────┼─────┼──────────────X──X──X────\n", + " │ │ │ │ \n", + "q_17: ─X──┼────────────────────┼─────┼─────────────────┼───────\n", + " │ │ │ │ │ \n", + "q_18: ─X──┼────────────────────X──X──X──X──────────────┼───────\n", + " │ │ │ │ \n", + "q_19: ────X───────────────────────┼─────┼──────────────X──X────\n", + " │ │ │ \n", + "q_20: ────────────────────────────┼─────┼─────────────────X────\n", + " │ │ \n", + "q_21: ────────────────────────────X─────X──X─────X─────────────\n", + " │ │ \n", + "q_22: ───────X─────────────────────────────┼─────┼─────────────\n", + " │ │ │ \n", + "q_23: ─X─────┼─────────────────────────────X──X──X─────────────\n", + " │ │ │ \n", + "q_24: ─X──X──┼──X─────────────────────────────X──X─────────────\n", + " │ │ │ │ \n", + "q_25: ────X──X──X────────────────────────────────X──X──────────\n", + " │ \n", + "q_26: ──────────────────────────────────────────────X──────────\n", + " " ] }, - "execution_count": 7, + "execution_count": 35, "metadata": {}, "output_type": "execute_result" } @@ -146,7 +403,7 @@ "print(\n", " f\"AI-Optimized circuit -> Depth: {ai_optimized_circuit.decompose(reps=3).depth()}, Gates(2q): {ai_optimized_circuit.decompose(reps=3).num_nonlocal_gates()}\"\n", ")\n", - "ai_optimized_circuit.draw(output=\"mpl\", fold=-1, scale=0.25, style=\"iqp\")" + "ai_optimized_circuit.draw(fold=-1, scale=0.25, style=\"iqp\")" ] }, {