From fe22bcb9bc783d5ee494eb95824fea2bfd203f27 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Tue, 21 May 2024 23:42:32 +0200 Subject: [PATCH 01/83] Add files via upload --- .../HW1/Yasir_Mansour_HW1_QClass2024.ipynb | 851 ++++++++++++++++++ 1 file changed, 851 insertions(+) create mode 100644 community/QClass_2024/Submissions/HW1/Yasir_Mansour_HW1_QClass2024.ipynb diff --git a/community/QClass_2024/Submissions/HW1/Yasir_Mansour_HW1_QClass2024.ipynb b/community/QClass_2024/Submissions/HW1/Yasir_Mansour_HW1_QClass2024.ipynb new file mode 100644 index 00000000..506f30bd --- /dev/null +++ b/community/QClass_2024/Submissions/HW1/Yasir_Mansour_HW1_QClass2024.ipynb @@ -0,0 +1,851 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "XtC66r2Y5_eT" + }, + "source": [ + "# The Qmod Workshop - Introduction\n", + "\n", + "The Classiq platform features a high-level quantum modeling language called Qmod. Qmod is compiled into concrete gate-level implementation using a powerful synthesis engine that optimizes and adapts the implementation to different target hardware/simulation environments.\n", + "\n", + "In this workshop, we will learn how to write quantum models using Qmod. We will be using the Python embedding of Qmod, available as part of the Classiq Python SDK. We will learn basic concepts in the Qmod language, such as functions, operators, quantum variables, and quantum types. We will develop useful building blocks and small algorithms.\n", + "\n", + "The [QMOD language reference](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/) covers these concepts more systematically and includes more examples.\n", + "\n", + "This workshop consists of step-by-step exercises. It is structured as follows:\n", + "\n", + "- Part 1: Language Fundamentals - Exercises 1-5\n", + "- Part 2: Higher-Level Concepts - Exercises 6-10\n", + "- Part 3: Execution Flows - Exercises 11, 12\n", + "\n", + "The introduction and Part 1 are included in this notebook. Part 2 and 3 are each in its own separate notebook. For each exercise you will find the solution to the exercises at the bottom of the same notebook.\n", + "\n", + "### Preparations\n", + "\n", + "Make sure you have a Python version of 3.8 through 3.11 installed. Unfortunately, Classiq is not yet supported with Python 3.12.\n", + "\n", + "Install Classiq’s Python SDK by following the instructions on this page: [Getting Started - Classiq](https://docs.classiq.io/latest/getting-started/).\n", + "\n", + "### Python Qmod Exercises - General Instructions\n", + "\n", + "In order to synthesize and execute your Qmod code, you should:\n", + "1. Make sure you define a `main` function that calls functions you create.\n", + "2. Use `create_model` by running `qmod = create_model(main)` to construct a representation of your model.\n", + "3. You can synthesize the model (using `qprog = synthesize(qmod)`) to obtain an implementation - a quantum program.\n", + "4. You can then visualize the quantum program (`show(qprog)`) or execute it (using `execute(qprog)`. See: [Execution - Classiq](https://docs.classiq.io/latest/user-guide/platform/executor/#full-example)). You can also execute it with the IDE after visualizing the circuit.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "RatBmdhm5_e2" + }, + "source": [ + "### Exercise 0: From Model to Execution\n", + "\n", + "The following model defines a function that applies X and H gates on a single qubit, and subsequently calls it:" + ] + }, + { + "cell_type": "code", + "source": [ + "!pip install -U classiq" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "collapsed": true, + "id": "156317w1BFqw", + "outputId": "2bf3654e-05de-4dd1-f7cb-08c9b1d49011" + }, + "execution_count": 1, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Collecting classiq\n", + " Downloading classiq-0.41.1-py3-none-any.whl (398 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m398.1/398.1 kB\u001b[0m \u001b[31m4.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting ConfigArgParse<2.0.0,>=1.5.3 (from classiq)\n", + " Downloading ConfigArgParse-1.7-py3-none-any.whl (25 kB)\n", + "Collecting Pyomo<6.6,>=6.5 (from classiq)\n", + " Downloading Pyomo-6.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.7 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m10.7/10.7 MB\u001b[0m \u001b[31m29.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting black<25.0,>=24.0 (from classiq)\n", + " Downloading black-24.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.8 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.8/1.8 MB\u001b[0m \u001b[31m19.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting httpx<1,>=0.23.0 (from classiq)\n", + " Downloading httpx-0.27.0-py3-none-any.whl (75 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m75.6/75.6 kB\u001b[0m \u001b[31m3.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: keyring<24.0.0,>=23.5.0 in /usr/lib/python3/dist-packages (from classiq) (23.5.0)\n", + "Requirement already satisfied: matplotlib<4.0.0,>=3.4.3 in /usr/local/lib/python3.10/dist-packages (from classiq) (3.7.1)\n", + "Collecting networkx<3.0.0,>=2.5.1 (from classiq)\n", + " Downloading networkx-2.8.8-py3-none-any.whl (2.0 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.0/2.0 MB\u001b[0m \u001b[31m29.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: numexpr<3.0.0,>=2.7.3 in /usr/local/lib/python3.10/dist-packages (from classiq) (2.10.0)\n", + "Requirement already satisfied: numpy<2.0.0,>=1.20.1 in /usr/local/lib/python3.10/dist-packages (from classiq) (1.25.2)\n", + "Collecting packaging<23.0,>=22.0 (from classiq)\n", + " Downloading packaging-22.0-py3-none-any.whl (42 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m42.6/42.6 kB\u001b[0m \u001b[31m2.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: pandas<3.0.0,>=1.4.0 in /usr/local/lib/python3.10/dist-packages (from classiq) (2.0.3)\n", + "Requirement already satisfied: plotly<6.0.0,>=5.7.0 in /usr/local/lib/python3.10/dist-packages (from classiq) (5.15.0)\n", + "Collecting pydantic<2.0.0,>=1.9.1 (from classiq)\n", + " Downloading pydantic-1.10.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.1/3.1 MB\u001b[0m \u001b[31m39.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: scipy<2.0.0,>=1.10.1 in /usr/local/lib/python3.10/dist-packages (from classiq) (1.11.4)\n", + "Collecting sympy<1.11.0,>=1.9.0 (from classiq)\n", + " Downloading sympy-1.10.1-py3-none-any.whl (6.4 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m6.4/6.4 MB\u001b[0m \u001b[31m22.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: tabulate<1,>=0.8.9 in /usr/local/lib/python3.10/dist-packages (from classiq) (0.9.0)\n", + "Requirement already satisfied: click>=8.0.0 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (8.1.7)\n", + "Collecting mypy-extensions>=0.4.3 (from black<25.0,>=24.0->classiq)\n", + " Downloading mypy_extensions-1.0.0-py3-none-any.whl (4.7 kB)\n", + "Collecting pathspec>=0.9.0 (from black<25.0,>=24.0->classiq)\n", + " Downloading pathspec-0.12.1-py3-none-any.whl (31 kB)\n", + "Requirement already satisfied: platformdirs>=2 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (4.2.2)\n", + "Requirement already satisfied: tomli>=1.1.0 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (2.0.1)\n", + "Requirement already satisfied: typing-extensions>=4.0.1 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (4.11.0)\n", + "Requirement already satisfied: anyio in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (3.7.1)\n", + "Requirement already satisfied: certifi in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (2024.2.2)\n", + "Collecting httpcore==1.* (from httpx<1,>=0.23.0->classiq)\n", + " Downloading httpcore-1.0.5-py3-none-any.whl (77 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m77.9/77.9 kB\u001b[0m \u001b[31m3.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: idna in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (3.7)\n", + "Requirement already satisfied: sniffio in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (1.3.1)\n", + "Collecting h11<0.15,>=0.13 (from httpcore==1.*->httpx<1,>=0.23.0->classiq)\n", + " Downloading h11-0.14.0-py3-none-any.whl (58 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m58.3/58.3 kB\u001b[0m \u001b[31m4.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (1.2.1)\n", + "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (0.12.1)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (4.51.0)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (1.4.5)\n", + "Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (9.4.0)\n", + "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (3.1.2)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (2.8.2)\n", + "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas<3.0.0,>=1.4.0->classiq) (2023.4)\n", + "Requirement already satisfied: tzdata>=2022.1 in /usr/local/lib/python3.10/dist-packages (from pandas<3.0.0,>=1.4.0->classiq) (2024.1)\n", + "Requirement already satisfied: tenacity>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from plotly<6.0.0,>=5.7.0->classiq) (8.3.0)\n", + "Collecting ply (from Pyomo<6.6,>=6.5->classiq)\n", + " Downloading ply-3.11-py2.py3-none-any.whl (49 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m49.6/49.6 kB\u001b[0m \u001b[31m3.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: mpmath>=0.19 in /usr/local/lib/python3.10/dist-packages (from sympy<1.11.0,>=1.9.0->classiq) (1.3.0)\n", + "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.7->matplotlib<4.0.0,>=3.4.3->classiq) (1.16.0)\n", + "Requirement already satisfied: exceptiongroup in /usr/local/lib/python3.10/dist-packages (from anyio->httpx<1,>=0.23.0->classiq) (1.2.1)\n", + "Installing collected packages: ply, sympy, Pyomo, pydantic, pathspec, packaging, networkx, mypy-extensions, h11, ConfigArgParse, httpcore, black, httpx, classiq\n", + " Attempting uninstall: sympy\n", + " Found existing installation: sympy 1.12\n", + " Uninstalling sympy-1.12:\n", + " Successfully uninstalled sympy-1.12\n", + " Attempting uninstall: pydantic\n", + " Found existing installation: pydantic 2.7.1\n", + " Uninstalling pydantic-2.7.1:\n", + " Successfully uninstalled pydantic-2.7.1\n", + " Attempting uninstall: packaging\n", + " Found existing installation: packaging 24.0\n", + " Uninstalling packaging-24.0:\n", + " Successfully uninstalled packaging-24.0\n", + " Attempting uninstall: networkx\n", + " Found existing installation: networkx 3.3\n", + " Uninstalling networkx-3.3:\n", + " Successfully uninstalled networkx-3.3\n", + "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", + "torch 2.3.0+cu121 requires nvidia-cublas-cu12==12.1.3.1; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cuda-cupti-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cuda-nvrtc-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cuda-runtime-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cudnn-cu12==8.9.2.26; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cufft-cu12==11.0.2.54; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-curand-cu12==10.3.2.106; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cusolver-cu12==11.4.5.107; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cusparse-cu12==12.1.0.106; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-nccl-cu12==2.20.5; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-nvtx-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\u001b[0m\u001b[31m\n", + "\u001b[0mSuccessfully installed ConfigArgParse-1.7 Pyomo-6.5.0 black-24.4.2 classiq-0.41.1 h11-0.14.0 httpcore-1.0.5 httpx-0.27.0 mypy-extensions-1.0.0 networkx-2.8.8 packaging-22.0 pathspec-0.12.1 ply-3.11 pydantic-1.10.15 sympy-1.10.1\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "import classiq\n", + "classiq.authenticate()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "EaDN5EkVC58C", + "outputId": "c2446774-718c-4d7c-eb0b-e8e1f676d27d" + }, + "execution_count": 3, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Your user code: DJXG-DBNT\n", + "If a browser doesn't automatically open, please visit this URL from any trusted device: https://auth.classiq.io/activate?user_code=DJXG-DBNT\n" + ] + } + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "id": "DpF2vKUh5_e7" + }, + "outputs": [], + "source": [ + "from classiq import *\n", + "\n", + "\n", + "# Define a quantum function using the @qfunc decorator\n", + "@qfunc\n", + "def qfn(q: QBit) -> None:\n", + " X(target=q)\n", + " H(target=q)\n", + "\n", + "\n", + "# Define a main function\n", + "@qfunc\n", + "def main(res: Output[QBit]) -> None:\n", + " allocate(1, res)\n", + " qfn(q=res)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "NXh4E69A5_fC" + }, + "source": [ + "Create a model from it, and synthesize, visualize, and execute it.\n", + "\n", + "Use the General Instructions above to do so.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "id": "UB612BIP5_fE", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "outputId": "6658d861-fccb-4acb-8bf2-1b52dee5b6c4" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/5c3524e1-3515-4fbe-a927-2d47b5270323?version=0.41.1\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "ExecutionJob(id='18cfaed0-47cf-450f-bcaa-47a32eb60116')" + ] + }, + "metadata": {}, + "execution_count": 5 + } + ], + "source": [ + "from classiq import *\n", + "\n", + "# Your code here:\n", + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)\n", + "execute(qprog)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "s3CXWd3V5_fF" + }, + "source": [ + "In Qmod `QBit` is the simplest quantum type, and in this example, `q` is a quantum variable of type `QBit`. Quantum variables abstract away the mapping of quantum objects to qubits in the actual circuit.\n", + "\n", + "See also [Quantum Variables](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/quantum-variables/).\n", + "\n", + "We will discuss other quantum types during the workshop.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "wtQE208K5_fH" + }, + "source": [ + "# The Qmod Workshop - Part 1: Language Fundamentals\n", + "\n", + "Follow exercises 1 through 5 for the first session of the workshop." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "8jM3lrC15_fI" + }, + "source": [ + "## Exercise 1 - Bell Pair\n", + "\n", + "Create a function that takes two single-qubit (`QBit`) quantum arguments and prepares the bell state on them ([Bell state](https://en.wikipedia.org/wiki/Bell_state)) by applying `H` on one variable and then using it as the control of a `CX` function with the second variable as the target.\n", + "Create a main function that uses this function and has two single-qubit outputs, initialize them to the |0> state (using the `allocate` function), and apply your function to them.\n", + "\n", + "See also [Functions](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/functions#syntax)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "id": "fNOTP83I5_fJ", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "outputId": "4c0a03a2-6f67-4c15-957e-261b56f1ad91" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/0b923e49-912a-4b24-8492-844448a3cd0d?version=0.41.1\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "ExecutionJob(id='f2788c4b-0838-4529-b650-577447a674e6')" + ] + }, + "metadata": {}, + "execution_count": 6 + } + ], + "source": [ + "from classiq import *\n", + "# Define a quantum function using the @qfunc decorator\n", + "@qfunc\n", + "def bell(q1: QBit, q2: QBit) -> None:\n", + " H(target=q1)\n", + " CX(control=q1,target=q2)\n", + "\n", + "# Define a main function\n", + "@qfunc\n", + "def main(res1: Output[QBit], res2: Output[QBit]) -> None:\n", + " allocate(1, res1)\n", + " allocate(1, res2)\n", + " bell(q1=res1,q2=res2)\n", + "\n", + "# Your code here:\n", + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)\n", + "execute(qprog)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "AY_kkbyi5_fM" + }, + "source": [ + "Use qubit array subscript (the syntax - _variable_ **[** _index-expression_ **]**) to change the function from subsection 1 to receive a single quantum variable, a qubit array (`QArray`) of size 2.\n", + "Change your main function to declare a single output (also an array of size 2).\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "id": "Y-c9r6OT5_fO", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "outputId": "8a2a41c7-bcee-4765-8906-4b7026bf3b71" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/434f96a0-8e06-46dc-b09e-fdc7a9308cb2?version=0.41.1\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "ExecutionJob(id='a42a082b-7714-4d02-84fe-cb1821e98d05')" + ] + }, + "metadata": {}, + "execution_count": 7 + } + ], + "source": [ + "from classiq import *\n", + "\n", + "# Your code here:\n", + "# Define a quantum function using the @qfunc decorator\n", + "@qfunc\n", + "def bell(q: QArray) -> None:\n", + " H(target=q[0])\n", + " CX(control=q[0],target=q[1])\n", + "\n", + "# Define a main function\n", + "@qfunc\n", + "def main(res: Output[QArray]) -> None:\n", + " allocate(2, res)\n", + " bell(res)\n", + "\n", + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)\n", + "execute(qprog)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "SoXeCLcX5_fQ" + }, + "source": [ + "## Exercise 2 - Repeat\n", + "\n", + "Use the built-in `repeat` operator to create your own Hadamard transform function (call it `my_hadamard_transform`). The Hadamard transform function is a function that takes as argument a qubit array of an unspecified size and applies `H` to each of its qubit.\n", + "\n", + "See also [Classical repeat](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/statements/classical-control-flow/#classical-repeat).\n", + "\n", + "Set your main function to have a quantum array output of unspecified size, allocate 10 qubits, and then apply your Hadamard transform function.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "id": "vFrcPTqi5_fS", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "outputId": "48c6573f-ba4d-4c47-b65f-dd2204818e8e" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/cb37c4e0-4286-4bbd-9f70-02abddc58c87?version=0.41.1\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "ExecutionJob(id='614e1320-0f6a-48bc-bf70-302f09a46d85')" + ] + }, + "metadata": {}, + "execution_count": 8 + } + ], + "source": [ + "from classiq import *\n", + "\n", + "# Your code here:\n", + "@qfunc\n", + "def my_hadamard(q: QArray) -> None:\n", + " repeat(count=q.len, iteration=lambda i: H(target=q[i]))\n", + "\n", + "# Define a main function\n", + "@qfunc\n", + "def main(res: Output[QArray]) -> None:\n", + " allocate(10, res)\n", + " my_hadamard(res)\n", + "\n", + "\n", + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)\n", + "execute(qprog)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "98liCUg15_fT" + }, + "source": [ + "### Note: Quantum Variable Capture\n", + "The `repeat` operator invokes a statement block multiple times. The statement block is specified using a Python callable, typically a lambda expression. Inside the block you can refer to variables declared in the outer function scope.\n", + "This concept is called `quantum variable capture`, equivalent to [capture](https://en.wikipedia.org/wiki/Closure_(computer_programming)) in classical languages.\n", + "\n", + "See also [Capturing context variables and parameters](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/operators/#capturing-context-variables-and-parameters)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "fonXAiHP5_fU" + }, + "source": [ + "### Exercise 3 - Power\n", + "Raising a quantum operation to a power appears in many known algorithms, for examples, in Grover search and Quantum Phase Estimation.\n", + "For most operations, it simply means repeating the same circuit multiple times.\n", + "\n", + "Sometimes, however, power can be simplified, thus saving computational resources.\n", + "The most trivial example is a quantum operation expressed as a single explicit unitary matrix (i.e., all n*n matrix terms are given) - raising the operation can be done by raising the matrix to that power via classical programming.\n", + "\n", + "See also [Power operator](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/statements/quantum-operators/#syntax).\n", + "\n", + "Use the following code to generate a 2-qubit (real) unitary matrix:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "id": "tD_aBHoU5_fW" + }, + "outputs": [], + "source": [ + "from typing import List\n", + "\n", + "import numpy as np\n", + "\n", + "from classiq import *\n", + "\n", + "rng = np.random.default_rng(seed=0)\n", + "random_matrix = rng.random((4, 4))\n", + "qr_unitary, _ = np.linalg.qr(random_matrix)\n", + "\n", + "unitary_matrix = QConstant(\"unitary_matrix\", List[List[float]], qr_unitary.tolist())" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "yRWVHm1O5_fY" + }, + "source": [ + "In order to reuse some classical value we can define a `QConstant` to store that value.\n", + "\n", + "1. Create a model that applies `unitary_matrix` on a 2 qubit variable.\n", + "2. Create another model that applies `unitary_matrix` raised to power 3 on a 2 qubit variable.\n", + "3. Compare the gate count via the Classiq’s IDE in both cases.\n", + "\n", + "Note - the signature of function `unitary` is:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "id": "bTtPgsj75_fZ" + }, + "outputs": [], + "source": [ + "def unitary(\n", + " elements: CArray[CArray[CReal]],\n", + " target: QArray[QBit],\n", + ") -> None:\n", + " pass" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "id": "6Js8fNbl5_fa", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "outputId": "4d13cc20-3b3f-45b8-93fb-b353ab8cbea0" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/94eb7893-0314-4fe6-b229-f31bf70e2808?version=0.41.1\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "ExecutionJob(id='b1b283d2-0c26-46a4-8577-fa33a79255cf')" + ] + }, + "metadata": {}, + "execution_count": 11 + } + ], + "source": [ + "from classiq import *\n", + "\n", + "# Your code here:\n", + "rng = np.random.default_rng(seed=0)\n", + "random_matrix = rng.random((4, 4))\n", + "qr_unitary, _ = np.linalg.qr(random_matrix)\n", + "\n", + "unitary_matrix = QConstant(\"unitary_matrix\", List[List[float]], qr_unitary.tolist())\n", + "\n", + "\n", + "@qfunc\n", + "def main(q: Output[QArray[QBit]]) -> None:\n", + " allocate(2, q)\n", + " power(3, lambda: unitary(unitary_matrix, q))\n", + "\n", + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)\n", + "execute(qprog)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "P-jP3v9O5_fb" + }, + "source": [ + "## Exercise 4 - User-defined Operators\n", + "Create a function that applies a given single-qubit operation to all qubits in its quantum argument (Call your function `my_apply_to_all`). Such a function is also called an operator, i.e. a function that one of its arguments is another function (its operand).\n", + "\n", + "See also [Operators](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/operators/).\n", + "\n", + "Follow these guidelines:\n", + "1. Your function should declare a quantum argument of type qubit array. It should also declare an argument of a function type with a single qubit argument.\n", + "2. The body should apply the operand to all qubits in the argument.\n", + "\n", + "When you're done, re-implement `my_hadamard_transform` from exercise 2 using this function instead of `repeat`.\n", + "Use the same main function from exercise 2." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "id": "vvMbP91D5_fc", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "outputId": "18fca5c9-3b26-4683-98c7-c17f27de698a" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/b516311f-de20-43bc-828b-981b114cb3d8?version=0.41.1\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "ExecutionJob(id='06c0d754-c529-4c95-b80b-5b45aeb165c0')" + ] + }, + "metadata": {}, + "execution_count": 12 + } + ], + "source": [ + "from classiq import *\n", + "\n", + "# Your code here:\n", + "\n", + "@qfunc\n", + "def my_apply_to_all(operand: QCallable[QBit], q: QArray[QBit]) -> None:\n", + " repeat(q.len, lambda i: operand(q[i]))\n", + "\n", + "@qfunc\n", + "def my_hadamard(q: QArray[QBit]) -> None:\n", + " my_apply_to_all(lambda t: H(t), q)\n", + "\n", + "# Define a main function\n", + "@qfunc\n", + "def main(q: Output[QArray[QBit]]) -> None:\n", + " allocate(10, q)\n", + " my_hadamard(q)\n", + "\n", + "\n", + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)\n", + "execute(qprog)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "gh690ZGT5_fe" + }, + "source": [ + "# Exercise 5 - Quantum Conditionals\n", + "\n", + "### Exercise 5a - Control Operator\n", + "Use the built-in `control` operator to create a function that receives two single qubit variables and uses one of the variables to control an RY gate with a `pi/2` angle acting on the other variable (without using the `CRY` function).\n", + "\n", + "See also [Quantum operators](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/statements/quantum-operators/#syntax).\n" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "id": "00trO6SJ5_ff", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "outputId": "b022f930-40a5-436c-b3af-0a4e4e5d21d7" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/f3c67563-851e-4c53-a672-c64330254cf1?version=0.41.1\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "ExecutionJob(id='be6a11e8-0250-4927-a910-51895da28286')" + ] + }, + "metadata": {}, + "execution_count": 13 + } + ], + "source": [ + "from classiq import *\n", + "\n", + "# Your code here:\n", + "from classiq.qmod.symbolic import pi\n", + "\n", + "\n", + "@qfunc\n", + "def my_controlled_ry(control_bit: QBit, target: QBit) -> None:\n", + " control(control_bit, lambda: RY(pi / 2, target))\n", + "\n", + "\n", + "@qfunc\n", + "def main(control_bit: Output[QBit], target: Output[QBit]) -> None:\n", + " allocate(1, control_bit)\n", + " allocate(1, target)\n", + " my_controlled_ry(control_bit, target)\n", + "\n", + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)\n", + "execute(qprog)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "GJ9y7jlY5_fh" + }, + "source": [ + "### Exercise 5b - Control (\"Quantum If\")\n", + "The `control` operator is the conditional application of some operation, with the condition being that all control qubits are in the state |1>. This notion is generalized in QMOD to other control states, where the condition is specified as a comparison between a quantum numeric variable and a numeric value, similar to a classical `if` statement. Quantum numeric variables are declared with class `QNum`.\n", + "\n", + "See also [Numeric types](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/quantum-types/#syntax).\n", + "\n", + "In QMOD this generalization is available as a native statement - control.\n", + "\n", + "See also [control](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/statements/quantum-operators/).\n", + "\n", + "1. Declare a `QNum` output argument using `Output[QNum]` and name it `x`.\n", + "2. Use the `prepare_int` function to initialize it to `9`. Note that you don't need to specify the `QNum` attributes - size, sign, and fraction digits, as they are inferred at the point of initialization.\n", + "3. Execute the circuit and observe the results.\n", + "4. Declare another output argument of type `QBit` and perform a `control` such that under the condition that `x` is 9, the qubit is flipped. Execute the circuit and observe the results. Repeat for a different condition." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "IohNdRCA5_fi", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "c3d53156-d530-48b8-e31b-80990b06e66d" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/5d49551d-e463-4428-b4b4-e853839c0a74?version=0.41.0\n" + ] + } + ], + "source": [ + "from classiq import *\n", + "\n", + "# Your code here:\n", + "@qfunc\n", + "def main(x: Output[QNum], target: Output[QBit]) -> None:\n", + " prepare_int(9, x)\n", + " allocate(1, target)\n", + " control(x == 9, lambda: X(target))\n", + "\n", + "\n", + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.8" + }, + "colab": { + "provenance": [] + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file From 78c8cba737bd43dff63424db68bba1a97c8b8895 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Wed, 29 May 2024 01:04:02 +0200 Subject: [PATCH 02/83] Created using Colab --- .../HW2Yasir_Mansour_HW2_QClass2024.ipynb | 990 ++++++++++++++++++ 1 file changed, 990 insertions(+) create mode 100644 community/QClass_2024/Submissions/HW2Yasir_Mansour_HW2_QClass2024.ipynb diff --git a/community/QClass_2024/Submissions/HW2Yasir_Mansour_HW2_QClass2024.ipynb b/community/QClass_2024/Submissions/HW2Yasir_Mansour_HW2_QClass2024.ipynb new file mode 100644 index 00000000..5c2eb93f --- /dev/null +++ b/community/QClass_2024/Submissions/HW2Yasir_Mansour_HW2_QClass2024.ipynb @@ -0,0 +1,990 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "NbVeWUvUOPPN" + }, + "source": [ + "# The Qmod Workshop - Part 2: Higher-Level Concepts\n", + "\n", + "This is the second part of the Qmod workshop, covering exercises 6 through 10. Make sure to go through Part 1 before continuing with this notebook." + ] + }, + { + "cell_type": "code", + "source": [ + "!pip install classiq" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "collapsed": true, + "id": "CSoLXYc-P-zb", + "outputId": "32e4c151-5e82-4ff8-df53-e9ac710f2507" + }, + "execution_count": 1, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Collecting classiq\n", + " Downloading classiq-0.41.2-py3-none-any.whl (398 kB)\n", + "\u001b[?25l \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.0/398.1 kB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m\r\u001b[2K \u001b[91m━━━━━━━━━━━━━━\u001b[0m\u001b[90m╺\u001b[0m\u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m143.4/398.1 kB\u001b[0m \u001b[31m4.1 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m\r\u001b[2K \u001b[91m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[90m╺\u001b[0m \u001b[32m389.1/398.1 kB\u001b[0m \u001b[31m6.4 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m\r\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m398.1/398.1 kB\u001b[0m \u001b[31m5.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting ConfigArgParse<2.0.0,>=1.5.3 (from classiq)\n", + " Downloading ConfigArgParse-1.7-py3-none-any.whl (25 kB)\n", + "Collecting Pyomo<6.6,>=6.5 (from classiq)\n", + " Downloading Pyomo-6.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.7 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m10.7/10.7 MB\u001b[0m \u001b[31m28.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting black<25.0,>=24.0 (from classiq)\n", + " Downloading black-24.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.8 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.8/1.8 MB\u001b[0m \u001b[31m35.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting httpx<1,>=0.23.0 (from classiq)\n", + " Downloading httpx-0.27.0-py3-none-any.whl (75 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m75.6/75.6 kB\u001b[0m \u001b[31m5.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: keyring<24.0.0,>=23.5.0 in /usr/lib/python3/dist-packages (from classiq) (23.5.0)\n", + "Requirement already satisfied: matplotlib<4.0.0,>=3.4.3 in /usr/local/lib/python3.10/dist-packages (from classiq) (3.7.1)\n", + "Collecting networkx<3.0.0,>=2.5.1 (from classiq)\n", + " Downloading networkx-2.8.8-py3-none-any.whl (2.0 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.0/2.0 MB\u001b[0m \u001b[31m26.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: numexpr<3.0.0,>=2.7.3 in /usr/local/lib/python3.10/dist-packages (from classiq) (2.10.0)\n", + "Requirement already satisfied: numpy<2.0.0,>=1.20.1 in /usr/local/lib/python3.10/dist-packages (from classiq) (1.25.2)\n", + "Collecting packaging<23.0,>=22.0 (from classiq)\n", + " Downloading packaging-22.0-py3-none-any.whl (42 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m42.6/42.6 kB\u001b[0m \u001b[31m1.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: pandas<3.0.0,>=1.4.0 in /usr/local/lib/python3.10/dist-packages (from classiq) (2.0.3)\n", + "Requirement already satisfied: plotly<6.0.0,>=5.7.0 in /usr/local/lib/python3.10/dist-packages (from classiq) (5.15.0)\n", + "Collecting pydantic<2.0.0,>=1.9.1 (from classiq)\n", + " Downloading pydantic-1.10.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.1/3.1 MB\u001b[0m \u001b[31m16.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: scipy<2.0.0,>=1.10.1 in /usr/local/lib/python3.10/dist-packages (from classiq) (1.11.4)\n", + "Collecting sympy<1.11.0,>=1.9.0 (from classiq)\n", + " Downloading sympy-1.10.1-py3-none-any.whl (6.4 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m6.4/6.4 MB\u001b[0m \u001b[31m34.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: tabulate<1,>=0.8.9 in /usr/local/lib/python3.10/dist-packages (from classiq) (0.9.0)\n", + "Requirement already satisfied: click>=8.0.0 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (8.1.7)\n", + "Collecting mypy-extensions>=0.4.3 (from black<25.0,>=24.0->classiq)\n", + " Downloading mypy_extensions-1.0.0-py3-none-any.whl (4.7 kB)\n", + "Collecting pathspec>=0.9.0 (from black<25.0,>=24.0->classiq)\n", + " Downloading pathspec-0.12.1-py3-none-any.whl (31 kB)\n", + "Requirement already satisfied: platformdirs>=2 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (4.2.2)\n", + "Requirement already satisfied: tomli>=1.1.0 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (2.0.1)\n", + "Requirement already satisfied: typing-extensions>=4.0.1 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (4.11.0)\n", + "Requirement already satisfied: anyio in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (3.7.1)\n", + "Requirement already satisfied: certifi in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (2024.2.2)\n", + "Collecting httpcore==1.* (from httpx<1,>=0.23.0->classiq)\n", + " Downloading httpcore-1.0.5-py3-none-any.whl (77 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m77.9/77.9 kB\u001b[0m \u001b[31m8.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: idna in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (3.7)\n", + "Requirement already satisfied: sniffio in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (1.3.1)\n", + "Collecting h11<0.15,>=0.13 (from httpcore==1.*->httpx<1,>=0.23.0->classiq)\n", + " Downloading h11-0.14.0-py3-none-any.whl (58 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m58.3/58.3 kB\u001b[0m \u001b[31m6.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (1.2.1)\n", + "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (0.12.1)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (4.51.0)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (1.4.5)\n", + "Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (9.4.0)\n", + "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (3.1.2)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (2.8.2)\n", + "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas<3.0.0,>=1.4.0->classiq) (2023.4)\n", + "Requirement already satisfied: tzdata>=2022.1 in /usr/local/lib/python3.10/dist-packages (from pandas<3.0.0,>=1.4.0->classiq) (2024.1)\n", + "Requirement already satisfied: tenacity>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from plotly<6.0.0,>=5.7.0->classiq) (8.3.0)\n", + "Collecting ply (from Pyomo<6.6,>=6.5->classiq)\n", + " Downloading ply-3.11-py2.py3-none-any.whl (49 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m49.6/49.6 kB\u001b[0m \u001b[31m5.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: mpmath>=0.19 in /usr/local/lib/python3.10/dist-packages (from sympy<1.11.0,>=1.9.0->classiq) (1.3.0)\n", + "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.7->matplotlib<4.0.0,>=3.4.3->classiq) (1.16.0)\n", + "Requirement already satisfied: exceptiongroup in /usr/local/lib/python3.10/dist-packages (from anyio->httpx<1,>=0.23.0->classiq) (1.2.1)\n", + "Installing collected packages: ply, sympy, Pyomo, pydantic, pathspec, packaging, networkx, mypy-extensions, h11, ConfigArgParse, httpcore, black, httpx, classiq\n", + " Attempting uninstall: sympy\n", + " Found existing installation: sympy 1.12\n", + " Uninstalling sympy-1.12:\n", + " Successfully uninstalled sympy-1.12\n", + " Attempting uninstall: pydantic\n", + " Found existing installation: pydantic 2.7.1\n", + " Uninstalling pydantic-2.7.1:\n", + " Successfully uninstalled pydantic-2.7.1\n", + " Attempting uninstall: packaging\n", + " Found existing installation: packaging 24.0\n", + " Uninstalling packaging-24.0:\n", + " Successfully uninstalled packaging-24.0\n", + " Attempting uninstall: networkx\n", + " Found existing installation: networkx 3.3\n", + " Uninstalling networkx-3.3:\n", + " Successfully uninstalled networkx-3.3\n", + "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", + "torch 2.3.0+cu121 requires nvidia-cublas-cu12==12.1.3.1; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cuda-cupti-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cuda-nvrtc-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cuda-runtime-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cudnn-cu12==8.9.2.26; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cufft-cu12==11.0.2.54; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-curand-cu12==10.3.2.106; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cusolver-cu12==11.4.5.107; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cusparse-cu12==12.1.0.106; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-nccl-cu12==2.20.5; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-nvtx-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\u001b[0m\u001b[31m\n", + "\u001b[0mSuccessfully installed ConfigArgParse-1.7 Pyomo-6.5.0 black-24.4.2 classiq-0.41.2 h11-0.14.0 httpcore-1.0.5 httpx-0.27.0 mypy-extensions-1.0.0 networkx-2.8.8 packaging-22.0 pathspec-0.12.1 ply-3.11 pydantic-1.10.15 sympy-1.10.1\n" + ] + } + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "id": "yLmI64uHOPPX" + }, + "outputs": [], + "source": [ + "from classiq import *" + ] + }, + { + "cell_type": "code", + "source": [ + "import classiq\n", + "classiq.authenticate()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "Js5S3AMtP6LJ", + "outputId": "d3f334a9-6dcf-4e2a-f547-b68342d126ea" + }, + "execution_count": 3, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Your user code: PXGV-WPZJ\n", + "If a browser doesn't automatically open, please visit this URL from any trusted device: https://auth.classiq.io/activate?user_code=PXGV-WPZJ\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "DLFwpFN8OPPd" + }, + "source": [ + "### Exercise 6 - Exponentiation and Pauli Operators\n", + "\n", + "The Qmod language supports different classical types: scalars, arrays, and structs. Structs are objects with member variables, or fields.\n", + "\n", + "See also [Classical Types](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/classical-types/#structs).\n", + "\n", + "The builtin struct type `PauliTerm` is defined as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "id": "EEjNNhY3OPPe" + }, + "outputs": [], + "source": [ + "@struct\n", + "class PauliTerm:\n", + " pauli: CArray[Pauli]\n", + " coefficient: CReal" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "oOlb_yyJOPPg" + }, + "source": [ + "Note that `Pauli` is an enum for all the Pauli matrices (I, X, Y, Z).\n", + "\n", + "Pauli based hamiltonian can be represented as a list of `PauliTerm`s. A Pauli operator defined this way is the argument to a hamiltonian evolution functions.\n", + "\n", + "In this exercise we will use the Suzuki-Trotter function to find the evolution of `H=0.5XZXX + 0.25YIZI + 0.3 XIZY` (captured as a literal value for the pauli-operator), with the evolution coefficient being 3, the order being 2, and use 4 repetitions.\n", + "\n", + "The declaration of the `suzuki_trotter` function is:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "uO1d4ba3OPPi" + }, + "outputs": [], + "source": [ + "@qfunc(external=True)\n", + "def suzuki_trotter(\n", + " pauli_operator: CArray[PauliTerm],\n", + " evolution_coefficient: CReal,\n", + " order: CInt,\n", + " repetitions: CInt,\n", + " qbv: QArray[QBit],\n", + ") -> None:\n", + " pass" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "jGcQahGvOPPk" + }, + "source": [ + "Fill in the missing parts of the following code in order to complete this exercise:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "-ZPy2HjIOPPl", + "outputId": "fc91afc7-7cfc-4efe-b1d4-c3da484dfaeb" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/695d17a9-edaa-4811-8aea-04f575daf238?version=0.41.2\n" + ] + } + ], + "source": [ + "from classiq import *\n", + "\n", + "\n", + "@qfunc\n", + "def main(q: Output[QArray[QBit]]) -> None:\n", + " allocate(4, q)\n", + " suzuki_trotter(\n", + " [\n", + " PauliTerm(pauli=[Pauli.X, Pauli.Z, Pauli.X, Pauli.X], coefficient=0.5),\n", + " PauliTerm(pauli=[Pauli.Y, Pauli.I, Pauli.Z, Pauli.I], coefficient=0.25),\n", + " PauliTerm(pauli=[Pauli.X, Pauli.I, Pauli.Z, Pauli.Y], coefficient=0.3),\n", + " ],\n", + " #[0.5XZXX + 0.25YIZI + 0.3 XIZY],\n", + " evolution_coefficient=3,\n", + " repetitions=4,\n", + " order=2,\n", + " qbv=q,\n", + " )\n", + "\n", + "\n", + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + }, + { + "cell_type": "markdown", + "source": [], + "metadata": { + "id": "a2tiByHPVxIm" + } + }, + { + "cell_type": "markdown", + "metadata": { + "id": "YVauJN06OPPr" + }, + "source": [ + "### Exercise 7 - Basic Arithmetics\n", + "\n", + "#### Exercise 7a\n", + "In this exercise we will use quantum numeric variables and calculate expressions over them.\n", + "\n", + "See details on the syntax of numeric types under [Quantum types](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/quantum-types/#syntax).\n", + "See more on quantum expressions under [Numeric assignment](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/statements/numeric-assignment/)\n", + "\n", + "Create the following quantum programs:\n", + "1. Initialize variables `x=2`, `y=7` and computes `res = x + y`.\n", + "2. Initialize variables `x=2`, `y=7` and computes `res = x * y`.\n", + "3. Initialize variables `x=2`, `y=7`, `z=1` and computes `res = x * y - z`.\n", + "\n", + "Guidance:\n", + "* Use the operator `|=` to perform out-of-place assignment of arithmetic expression.\n", + "* To initialize the variables, use the function `prepare_int`.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "2Ad42tEjOPPt", + "outputId": "0e3c5195-3914-4296-b400-067df17efb67" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/f6ab280e-a2d2-4b4f-9fe6-6063ec883f5c?version=0.41.2\n" + ] + } + ], + "source": [ + "from classiq import *\n", + "\n", + "# Your code here:\n", + "@qfunc\n", + "def main(res1: Output[QNum], res2: Output[QNum], res3: Output[QNum], x: Output[QNum], y: Output[QNum], z: Output[QNum]):\n", + " prepare_int(2, x)\n", + " prepare_int(7, y)\n", + " prepare_int(1, z)\n", + " res1 |= x + y\n", + " res2 |= x * y\n", + " res3 |= x * y - z\n", + "\n", + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "oD9FFw0hOPPv" + }, + "source": [ + "#### Exercise 7b\n", + "Declare `x` to be a 2-qubit variable and `y` to be 3-qubit variable.\n", + "\n", + "We will perform an addition of two superposition states: `x` is an equal superposition of `0` and `2`, and `y` is an equal superposition of `1`, `2`, `3`, and `6`.\n", + "\n", + "1. Use `prepare_state` to initialize `x` and `y`. Note that `prepare_state` works with probabilities, not amplitudes.\n", + " The declaration of the `prepare_state` function is:\n", + " ```\n", + " @qfunc(external=True)\n", + " def prepare_state(\n", + " probabilities: CArray[CReal],\n", + " bound: CReal,\n", + " out: Output[QArray[QBit]],\n", + " ) -> None:\n", + " pass\n", + " ```\n", + " (Set the bound to 0 in your code)\n", + "2. Compute `res = x + y`. Execute the resulting circuit. What did you get?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "J5aQnWHEOPPx", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "ea1de78b-3848-4255-d430-b1ae0bcc7cd2" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/6ee76891-980f-4b54-8403-44cb5e8b590c?version=0.41.2\n" + ] + } + ], + "source": [ + "from classiq import *\n", + "\n", + "# Your code here:\n", + "@qfunc\n", + "def main(res: Output[QNum], x: Output[QNum], y: Output[QNum]):\n", + " prepare_state([0.5, 0, 0.5, 0], bound=0.01, out=x)\n", + " prepare_state([0, 0.25, 0.25, 0.25, 0, 0, 0.25, 0], bound=0.01, out=y)\n", + " res |= x + y\n", + "\n", + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "QguPlrPLOPPz" + }, + "source": [ + "### Exercise 8 - Within-Apply\n", + "\n", + "The within-apply statement applies the pattern `U_dagger V U` that appears frequently in quantum computing.\n", + "It allows you to compute some function `V` within the context of another function `U`, and afterward uncompute `U` in order to release auxiliary qubits storing intermediate results.\n", + "\n", + "See also [Within Apply](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/statements/within-apply/).\n", + "\n", + "#### Exercise 8a\n", + "\n", + "In this exercise, we will use within-apply to compute an arithmetic expression in steps.\n", + "\n", + "Use the `within_apply` operation to calculate `res = x + y + z` from a two-variable addition building block with the following steps:\n", + "1. Add `x` and `y`\n", + "2. Add the result to `z`\n", + "3. Uncompute the result of the first operation\n", + "\n", + "For simplicity, initialize the registers to simple integers: `x=3`, `y=5`, `z=2`.\n", + "\n", + "Hints:\n", + "\n", + "* Use a temporary variable.\n", + "* Wrap the arithmetic operation in a function.\n", + "\n", + "Execute the circuit and make sure you obtain the expected result." + ] + }, + { + "cell_type": "code", + "source": [], + "metadata": { + "id": "kvEu55w7Ssac" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "gOMBLIf7OPP1", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "ee6530e4-3fa1-4d46-d151-9862ee961b5e" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/b9d46036-f719-4772-8e97-7a41269e10c1?version=0.41.2\n" + ] + } + ], + "source": [ + "from classiq import *\n", + "\n", + "# Your code here:\n", + "@qfunc\n", + "def q_add(res: Output[QNum], a:QNum, b:QNum) -> None:\n", + " res |= a + b\n", + "\n", + "@qfunc\n", + "def main(res: Output[QNum], x: Output[QNum],\n", + " y: Output[QNum], z: Output[QNum]) -> None:\n", + " prepare_int(3, x)\n", + " prepare_int(5, y)\n", + " prepare_int(2, z)\n", + " aux = QNum('aux')\n", + " within_apply(compute = lambda: q_add(aux, x, y),\n", + " action = lambda: q_add(res, aux, z))\n", + "\n", + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)\n", + "#13 qbits" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "umMhnAelOPP2" + }, + "source": [ + "#### Exercise 8b\n", + "\n", + "Why should we use `within-apply` and not just write three concatenated functions?\n", + "To understand the motivation, we will create another arithmetic circuit.\n", + "This time, however, we will also set Classiq’s synthesis engine to optimize on the circuit’s number of qubits, i.e., its width.\n", + "\n", + "Setting constraints can be done via the `set_constraints` operation - see [here](https://docs.classiq.io/latest/user-guide/platform/synthesis/constraints/).\n", + "\n", + "Perform the operation `res = w + x + y + z`, where w is initialized to 4 and the rest as before:\n", + "\n", + "1. Add `x` and `y` (as part of the `within_apply` operation)\n", + "2. Add the result to `z` (as part of the within_apply operation)\n", + "3. Uncompute the result of the first operation (as part of the `within_apply` operation)\n", + "4. Add the result of the second operation to `w`. There’s no need to perform another uncomputation, as this brings our calculation to an end.\n", + "\n", + "Create the model, optimize on the circuit’s width, and run the circuit. Can you identify where qubits have been released and reused?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "ED1iDS1aOPP5", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "2260c2b1-d176-4c26-a83f-e0be9d1b6804" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/76b99051-ff09-4588-b522-435cd54c7223?version=0.41.2\n" + ] + } + ], + "source": [ + "from classiq import *\n", + "\n", + "# Your code here:\n", + "@qfunc\n", + "def q_add(res: Output[QNum], a:QNum, b:QNum) -> None:\n", + " res |= a + b\n", + "\n", + "@qfunc\n", + "def main(res: Output[QNum], x: Output[QNum],\n", + " y: Output[QNum], z: Output[QNum], w: Output[QNum]) -> None:\n", + " prepare_int(3, x)\n", + " prepare_int(5, y)\n", + " prepare_int(2, z)\n", + " prepare_int(4, w)\n", + " aux1 = QNum('aux1')\n", + " aux2 = QNum('aux2')\n", + " within_apply(compute = lambda: q_add(aux1, x, y),\n", + " action = lambda: q_add(aux2, aux1, z),)\n", + " res |= aux2 + w\n", + "\n", + "\n", + "\n", + "qmod = create_model(main)\n", + "qmod = set_constraints(qmod,\n", + " Constraints(optimization_parameter='width'))\n", + "qprog = synthesize(qmod)\n", + "show(qprog)\n", + "#16 qbits" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "pIBHrEOxOPP6" + }, + "source": [ + "#### Bonus: Use a Single Arithmetic Expression\n", + "\n", + "What happens when we don't manually decompose this expression?\n", + "\n", + "Use Classiq’s arithmetic engine to calculate `res |= x + y + z + w` and optimize for width.\n", + "Look at the resulting quantum program - can you identify the computation and uncomputation blocks? What else did you notice?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "ep-Efm_oOPP8", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "258d0b91-cb7a-4a25-b80d-0492e6557fe1" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/1b073d18-c8d5-4f19-8c2d-7e2f064a18bd?version=0.41.2\n" + ] + } + ], + "source": [ + "from classiq import *\n", + "\n", + "# Your code here:\n", + "@qfunc\n", + "def q_add(res: Output[QNum], a:QNum, b:QNum) -> None:\n", + " res |= a + b\n", + "\n", + "@qfunc\n", + "def main(res: Output[QNum], x: Output[QNum],\n", + " y: Output[QNum], z: Output[QNum], w: Output[QNum]) -> None:\n", + " prepare_int(3, x)\n", + " prepare_int(5, y)\n", + " prepare_int(2, z)\n", + " prepare_int(4, w)\n", + " res |= x + y + z + w\n", + "\n", + "qmod = create_model(main)\n", + "qmod = set_constraints(qmod,\n", + " Constraints(optimization_parameter='width'))\n", + "qprog = synthesize(qmod)\n", + "show(qprog)\n", + "#15 qbits" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ZV9OGqqROPP-" + }, + "source": [ + "### Exercise 9 - In-place Arithmetics\n", + "\n", + "For the following exercise we will use numeric quantum variables that represent fixed-point reals.\n", + "\n", + "Arithmetic expressions can be calculated in-place into a target variable, without allocating new qubits to store the result. This is done using the in-place-xor operator.\n", + "\n", + "See also [Numeric assignment](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/statements/numeric-assignment/#semantics).\n", + "\n", + "In-place assignment is often used to nest arithmetic expressions under quantum operators. Note that out-of-place assignment requires its left-value variable to be un-initialized, and therefore cannot be used under an operator if the variable is declared outside its scope. Applying operators to arithmetic expressions is required in many algorithms. One example is the piecewise evaluation of mathematical functions - calculating different expressions over `x` depending on the subdomain where `x` falls.\n", + "\n", + "For this exercise, replace the missing parts in the code snippet below to evaluate the result of:\n", + "\n", + "$$\n", + "f(x) = \\begin{cases}\n", + " 2x + 1 & \\text{ if } 0 \\leq x < 0.5 \\\\\n", + " x + 0.5 & \\text{ if } 0.5 \\leq x < 1\n", + " \\end{cases}\n", + "$$\n", + "\n", + "Notes:\n", + "- We cannot use `x` directly as the control variable in a `constrol` operator, because it also occurs in the nested scope. to determine if `x` is in the lower or higher half of the domain we duplicate the most significant bit onto a separate variable called `label`.\n", + "- In Python assignment operators cannot be used in lambda expressions, so the computation of the function needs to be factored out to a named Python function (but not necessarily a Qmod function).\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "P1AsWxksOPQA", + "outputId": "c56c759d-fb58-45d7-b8b6-fc801c611f11", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/d3fb232d-2ee5-4824-a49d-c7febcc4ff91?version=0.41.2\n" + ] + } + ], + "source": [ + "\n", + "from classiq import *\n", + "\n", + "\n", + "def linear_func(a: float, b: float, x: QNum, res: QNum) -> None:\n", + " res ^= a * x + b\n", + "\n", + "\n", + "@qfunc\n", + "def dup_msb(qba: QArray[QBit], msb: QBit) -> None:\n", + " CX(qba[qba.len - 1], msb)\n", + "\n", + "\n", + "@qfunc\n", + "def main(x: Output[QNum[3, False, 3]], res: Output[QNum[5, False, 3]]) -> None:\n", + " allocate(5, res)\n", + " allocate(3, x)\n", + " hadamard_transform(x)\n", + "\n", + " label = QArray(\"label\")\n", + " allocate(1, label)\n", + "\n", + " dup_msb(x, label)\n", + " control(label, lambda: linear_func(1.0, 0.5, x, res)) # 0.5 <= x < 1.0\n", + " X(label)\n", + " control(label, lambda: linear_func(2.0, 1.0, x, res)) # 0.0 <= x < 0.5\n", + "\n", + "\n", + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "OOvAn02QOPQC" + }, + "source": [ + "### Exercise 10 - State-preparation Algorithm using Quantum-if\n", + "\n", + "#### Binding\n", + "The `bind` operation allows to convert smoothly between different quantum types and split or slice bits when necessary. Here’s an example:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "id": "JCX6UMqROPQD", + "outputId": "6d35d8f5-4341-4560-b708-d70d443dab84", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/2e528279-8038-4233-b2e7-f4844d8dcaa3?version=0.41.2\n" + ] + } + ], + "source": [ + "from classiq import *\n", + "\n", + "\n", + "\n", + "from classiq import *\n", + "from math import pi\n", + "\n", + "\n", + "@qfunc\n", + "def main(res: Output[QArray[QBit]]) -> None:\n", + " x: QArray[QBit] = QArray(\"x\")\n", + " allocate(3, x)\n", + " hadamard_transform(x)\n", + "\n", + " lsb = QBit(\"lsb\")\n", + " msb = QNum(\"msb\", 2, False, 0)\n", + " bind(x, [lsb, msb])\n", + "\n", + " control(msb == 1, lambda: RY(pi / 3, lsb))\n", + " # msb==1 <==> bit1 bit2 == 01 (binary of decimal 1)\n", + "\n", + " bind([lsb, msb], res)\n", + "\n", + "model = create_model(main)\n", + "qprog = synthesize(model)\n", + "show(qprog)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "fc5-bUyKOPQF" + }, + "source": [ + "The first `bind` operation splits the 3-qubit register `x` into the 2-qubit and single-qubit registers `lsb` and `msb`, respectively.\n", + "\n", + "After the `bind` operation:\n", + "1. The registers `lsb` and `msb` can be operated on as separated registers.\n", + "2. The register`x` is consumed and can no longer be used.\n", + "\n", + "The second `bind` operation concatenates the registers to the output register `res`.\n", + "\n", + "For this exercise, fill in the missing code parts in the above snippet and use the `control` statement to manually generate the following lovely 3-qubit probability distribution: `[1/8, 1/8, 1/8, -sqrt(3)/16, 1/8 + sqrt(3)/16, 1/8, 1/8, 1/8, 1/8]`.\n", + "\n", + "The following series of gates generate it:\n", + "\n", + "Perform the Hadamard transform on all three qubits.\n", + "\n", + "Apply a rotation on the LSB (least-significant bit) conditioned by the MSB being |0> and the second to last MSB being |1>. How would you write this condition using a QNum?\n", + "\n", + "The following series of gates generate it:\n", + "1. Perform the Hadamard transform on all three qubits.\n", + "2. Apply a `pi/3` rotation on the LSB (least-significant bit) conditioned by the MSB being |0> and the second to last MSB being |1>. How would you write this condition using a QNum?\n", + "\n", + "If you want to validate your results without looking at the full solution, compare them to running using Classiq’s built-in `prepare_state` function.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "id": "nSjVMfP8OPQG", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "outputId": "5ca3382b-fcf8-4901-bf77-72eb916118a0" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/63674ff7-ef0f-4d21-8ffa-60b078c5de78?version=0.41.2\n" + ] + } + ], + "source": [ + "#version 1 with msb, lsb, H, RY\n", + "from classiq import *\n", + "from classiq.qmod.symbolic import sqrt\n", + "from math import pi\n", + "\n", + "prob_list= [\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8 - sqrt(3) / 16,\n", + " 1 / 8 + sqrt(3) / 16,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " ]\n", + "@qfunc\n", + "def pre_prepared_state(q: QArray[QBit]) -> None:\n", + " prepare_state(\n", + " [\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8 - sqrt(3) / 16,\n", + " 1 / 8 + sqrt(3) / 16,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " ],\n", + " 0.0,\n", + " q,\n", + " )\n", + "\n", + "@qfunc\n", + "def main(res: Output[QArray[QBit]]) -> None:\n", + " x: QArray[QBit] = QArray(\"x\")\n", + " allocate(3, x)\n", + " hadamard_transform(x)\n", + "\n", + " lsb = QBit(\"lsb\")\n", + " msb = QNum(\"msb\", 2, False, 0)\n", + " bind(x, [lsb, msb])\n", + "\n", + " control(msb == 1, lambda: RY(pi / 3, lsb))\n", + " # msb==1 <==> bit1 bit2 == 01 (binary of decimal 1)\n", + " bind([lsb, msb], res)\n", + "\n", + " #prepare_state(probabilities=prob_list, bound=0.0, out=res)\n", + "\n", + "model = create_model(main)\n", + "qprog = synthesize(model)\n", + "show(qprog)\n", + "\n", + "# Your code here:" + ] + }, + { + "cell_type": "code", + "source": [ + "#version 2 with prepare_state\n", + "from classiq import *\n", + "from classiq.qmod.symbolic import sqrt\n", + "from math import pi\n", + "\n", + "prob_list= [\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8 - sqrt(3) / 16,\n", + " 1 / 8 + sqrt(3) / 16,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " ]\n", + "@qfunc\n", + "def pre_prepared_state(q: Output[QArray[QBit]]) -> None:\n", + " prepare_state(\n", + " [\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8 - sqrt(3) / 16,\n", + " 1 / 8 + sqrt(3) / 16,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " ],\n", + " 0.0,\n", + " q,\n", + " )\n", + "\n", + "@qfunc\n", + "def main(res: Output[QArray[QBit]]) -> None:\n", + " prepare_state(probabilities=prob_list, bound=0.0, out=res)\n", + "\n", + "model = create_model(main)\n", + "qprog = synthesize(model)\n", + "show(qprog)\n", + "\n", + "# Your code here:" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "mp0cnm12XKjo", + "outputId": "c97473fc-1b10-4bc0-b9ec-2db111726a00" + }, + "execution_count": 29, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/ea88176e-2348-4b64-b56e-4ef2921eeb51?version=0.41.2\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [], + "metadata": { + "id": "-TDAFwWbXVeT" + } + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.8" + }, + "colab": { + "provenance": [], + "include_colab_link": true + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file From 3d6f52a6f44f5dcff18c36c386c0c9cc1eda674d Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Wed, 29 May 2024 01:05:31 +0200 Subject: [PATCH 03/83] Created using Colab --- .../HW2/Yasir_Mansour_HW2_QClass2024.ipynb | 990 ++++++++++++++++++ 1 file changed, 990 insertions(+) create mode 100644 community/QClass_2024/Submissions/HW2/Yasir_Mansour_HW2_QClass2024.ipynb diff --git a/community/QClass_2024/Submissions/HW2/Yasir_Mansour_HW2_QClass2024.ipynb b/community/QClass_2024/Submissions/HW2/Yasir_Mansour_HW2_QClass2024.ipynb new file mode 100644 index 00000000..783f1705 --- /dev/null +++ b/community/QClass_2024/Submissions/HW2/Yasir_Mansour_HW2_QClass2024.ipynb @@ -0,0 +1,990 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "NbVeWUvUOPPN" + }, + "source": [ + "# The Qmod Workshop - Part 2: Higher-Level Concepts\n", + "\n", + "This is the second part of the Qmod workshop, covering exercises 6 through 10. Make sure to go through Part 1 before continuing with this notebook." + ] + }, + { + "cell_type": "code", + "source": [ + "!pip install classiq" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "collapsed": true, + "id": "CSoLXYc-P-zb", + "outputId": "32e4c151-5e82-4ff8-df53-e9ac710f2507" + }, + "execution_count": 1, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Collecting classiq\n", + " Downloading classiq-0.41.2-py3-none-any.whl (398 kB)\n", + "\u001b[?25l \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.0/398.1 kB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m\r\u001b[2K \u001b[91m━━━━━━━━━━━━━━\u001b[0m\u001b[90m╺\u001b[0m\u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m143.4/398.1 kB\u001b[0m \u001b[31m4.1 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m\r\u001b[2K \u001b[91m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[90m╺\u001b[0m \u001b[32m389.1/398.1 kB\u001b[0m \u001b[31m6.4 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m\r\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m398.1/398.1 kB\u001b[0m \u001b[31m5.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting ConfigArgParse<2.0.0,>=1.5.3 (from classiq)\n", + " Downloading ConfigArgParse-1.7-py3-none-any.whl (25 kB)\n", + "Collecting Pyomo<6.6,>=6.5 (from classiq)\n", + " Downloading Pyomo-6.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.7 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m10.7/10.7 MB\u001b[0m \u001b[31m28.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting black<25.0,>=24.0 (from classiq)\n", + " Downloading black-24.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.8 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.8/1.8 MB\u001b[0m \u001b[31m35.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting httpx<1,>=0.23.0 (from classiq)\n", + " Downloading httpx-0.27.0-py3-none-any.whl (75 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m75.6/75.6 kB\u001b[0m \u001b[31m5.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: keyring<24.0.0,>=23.5.0 in /usr/lib/python3/dist-packages (from classiq) (23.5.0)\n", + "Requirement already satisfied: matplotlib<4.0.0,>=3.4.3 in /usr/local/lib/python3.10/dist-packages (from classiq) (3.7.1)\n", + "Collecting networkx<3.0.0,>=2.5.1 (from classiq)\n", + " Downloading networkx-2.8.8-py3-none-any.whl (2.0 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.0/2.0 MB\u001b[0m \u001b[31m26.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: numexpr<3.0.0,>=2.7.3 in /usr/local/lib/python3.10/dist-packages (from classiq) (2.10.0)\n", + "Requirement already satisfied: numpy<2.0.0,>=1.20.1 in /usr/local/lib/python3.10/dist-packages (from classiq) (1.25.2)\n", + "Collecting packaging<23.0,>=22.0 (from classiq)\n", + " Downloading packaging-22.0-py3-none-any.whl (42 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m42.6/42.6 kB\u001b[0m \u001b[31m1.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: pandas<3.0.0,>=1.4.0 in /usr/local/lib/python3.10/dist-packages (from classiq) (2.0.3)\n", + "Requirement already satisfied: plotly<6.0.0,>=5.7.0 in /usr/local/lib/python3.10/dist-packages (from classiq) (5.15.0)\n", + "Collecting pydantic<2.0.0,>=1.9.1 (from classiq)\n", + " Downloading pydantic-1.10.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.1/3.1 MB\u001b[0m \u001b[31m16.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: scipy<2.0.0,>=1.10.1 in /usr/local/lib/python3.10/dist-packages (from classiq) (1.11.4)\n", + "Collecting sympy<1.11.0,>=1.9.0 (from classiq)\n", + " Downloading sympy-1.10.1-py3-none-any.whl (6.4 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m6.4/6.4 MB\u001b[0m \u001b[31m34.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: tabulate<1,>=0.8.9 in /usr/local/lib/python3.10/dist-packages (from classiq) (0.9.0)\n", + "Requirement already satisfied: click>=8.0.0 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (8.1.7)\n", + "Collecting mypy-extensions>=0.4.3 (from black<25.0,>=24.0->classiq)\n", + " Downloading mypy_extensions-1.0.0-py3-none-any.whl (4.7 kB)\n", + "Collecting pathspec>=0.9.0 (from black<25.0,>=24.0->classiq)\n", + " Downloading pathspec-0.12.1-py3-none-any.whl (31 kB)\n", + "Requirement already satisfied: platformdirs>=2 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (4.2.2)\n", + "Requirement already satisfied: tomli>=1.1.0 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (2.0.1)\n", + "Requirement already satisfied: typing-extensions>=4.0.1 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (4.11.0)\n", + "Requirement already satisfied: anyio in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (3.7.1)\n", + "Requirement already satisfied: certifi in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (2024.2.2)\n", + "Collecting httpcore==1.* (from httpx<1,>=0.23.0->classiq)\n", + " Downloading httpcore-1.0.5-py3-none-any.whl (77 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m77.9/77.9 kB\u001b[0m \u001b[31m8.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: idna in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (3.7)\n", + "Requirement already satisfied: sniffio in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (1.3.1)\n", + "Collecting h11<0.15,>=0.13 (from httpcore==1.*->httpx<1,>=0.23.0->classiq)\n", + " Downloading h11-0.14.0-py3-none-any.whl (58 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m58.3/58.3 kB\u001b[0m \u001b[31m6.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (1.2.1)\n", + "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (0.12.1)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (4.51.0)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (1.4.5)\n", + "Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (9.4.0)\n", + "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (3.1.2)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (2.8.2)\n", + "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas<3.0.0,>=1.4.0->classiq) (2023.4)\n", + "Requirement already satisfied: tzdata>=2022.1 in /usr/local/lib/python3.10/dist-packages (from pandas<3.0.0,>=1.4.0->classiq) (2024.1)\n", + "Requirement already satisfied: tenacity>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from plotly<6.0.0,>=5.7.0->classiq) (8.3.0)\n", + "Collecting ply (from Pyomo<6.6,>=6.5->classiq)\n", + " Downloading ply-3.11-py2.py3-none-any.whl (49 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m49.6/49.6 kB\u001b[0m \u001b[31m5.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: mpmath>=0.19 in /usr/local/lib/python3.10/dist-packages (from sympy<1.11.0,>=1.9.0->classiq) (1.3.0)\n", + "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.7->matplotlib<4.0.0,>=3.4.3->classiq) (1.16.0)\n", + "Requirement already satisfied: exceptiongroup in /usr/local/lib/python3.10/dist-packages (from anyio->httpx<1,>=0.23.0->classiq) (1.2.1)\n", + "Installing collected packages: ply, sympy, Pyomo, pydantic, pathspec, packaging, networkx, mypy-extensions, h11, ConfigArgParse, httpcore, black, httpx, classiq\n", + " Attempting uninstall: sympy\n", + " Found existing installation: sympy 1.12\n", + " Uninstalling sympy-1.12:\n", + " Successfully uninstalled sympy-1.12\n", + " Attempting uninstall: pydantic\n", + " Found existing installation: pydantic 2.7.1\n", + " Uninstalling pydantic-2.7.1:\n", + " Successfully uninstalled pydantic-2.7.1\n", + " Attempting uninstall: packaging\n", + " Found existing installation: packaging 24.0\n", + " Uninstalling packaging-24.0:\n", + " Successfully uninstalled packaging-24.0\n", + " Attempting uninstall: networkx\n", + " Found existing installation: networkx 3.3\n", + " Uninstalling networkx-3.3:\n", + " Successfully uninstalled networkx-3.3\n", + "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", + "torch 2.3.0+cu121 requires nvidia-cublas-cu12==12.1.3.1; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cuda-cupti-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cuda-nvrtc-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cuda-runtime-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cudnn-cu12==8.9.2.26; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cufft-cu12==11.0.2.54; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-curand-cu12==10.3.2.106; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cusolver-cu12==11.4.5.107; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cusparse-cu12==12.1.0.106; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-nccl-cu12==2.20.5; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-nvtx-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\u001b[0m\u001b[31m\n", + "\u001b[0mSuccessfully installed ConfigArgParse-1.7 Pyomo-6.5.0 black-24.4.2 classiq-0.41.2 h11-0.14.0 httpcore-1.0.5 httpx-0.27.0 mypy-extensions-1.0.0 networkx-2.8.8 packaging-22.0 pathspec-0.12.1 ply-3.11 pydantic-1.10.15 sympy-1.10.1\n" + ] + } + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "id": "yLmI64uHOPPX" + }, + "outputs": [], + "source": [ + "from classiq import *" + ] + }, + { + "cell_type": "code", + "source": [ + "import classiq\n", + "classiq.authenticate()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "Js5S3AMtP6LJ", + "outputId": "d3f334a9-6dcf-4e2a-f547-b68342d126ea" + }, + "execution_count": 3, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Your user code: PXGV-WPZJ\n", + "If a browser doesn't automatically open, please visit this URL from any trusted device: https://auth.classiq.io/activate?user_code=PXGV-WPZJ\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "DLFwpFN8OPPd" + }, + "source": [ + "### Exercise 6 - Exponentiation and Pauli Operators\n", + "\n", + "The Qmod language supports different classical types: scalars, arrays, and structs. Structs are objects with member variables, or fields.\n", + "\n", + "See also [Classical Types](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/classical-types/#structs).\n", + "\n", + "The builtin struct type `PauliTerm` is defined as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "id": "EEjNNhY3OPPe" + }, + "outputs": [], + "source": [ + "@struct\n", + "class PauliTerm:\n", + " pauli: CArray[Pauli]\n", + " coefficient: CReal" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "oOlb_yyJOPPg" + }, + "source": [ + "Note that `Pauli` is an enum for all the Pauli matrices (I, X, Y, Z).\n", + "\n", + "Pauli based hamiltonian can be represented as a list of `PauliTerm`s. A Pauli operator defined this way is the argument to a hamiltonian evolution functions.\n", + "\n", + "In this exercise we will use the Suzuki-Trotter function to find the evolution of `H=0.5XZXX + 0.25YIZI + 0.3 XIZY` (captured as a literal value for the pauli-operator), with the evolution coefficient being 3, the order being 2, and use 4 repetitions.\n", + "\n", + "The declaration of the `suzuki_trotter` function is:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "uO1d4ba3OPPi" + }, + "outputs": [], + "source": [ + "@qfunc(external=True)\n", + "def suzuki_trotter(\n", + " pauli_operator: CArray[PauliTerm],\n", + " evolution_coefficient: CReal,\n", + " order: CInt,\n", + " repetitions: CInt,\n", + " qbv: QArray[QBit],\n", + ") -> None:\n", + " pass" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "jGcQahGvOPPk" + }, + "source": [ + "Fill in the missing parts of the following code in order to complete this exercise:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "-ZPy2HjIOPPl", + "outputId": "fc91afc7-7cfc-4efe-b1d4-c3da484dfaeb" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/695d17a9-edaa-4811-8aea-04f575daf238?version=0.41.2\n" + ] + } + ], + "source": [ + "from classiq import *\n", + "\n", + "\n", + "@qfunc\n", + "def main(q: Output[QArray[QBit]]) -> None:\n", + " allocate(4, q)\n", + " suzuki_trotter(\n", + " [\n", + " PauliTerm(pauli=[Pauli.X, Pauli.Z, Pauli.X, Pauli.X], coefficient=0.5),\n", + " PauliTerm(pauli=[Pauli.Y, Pauli.I, Pauli.Z, Pauli.I], coefficient=0.25),\n", + " PauliTerm(pauli=[Pauli.X, Pauli.I, Pauli.Z, Pauli.Y], coefficient=0.3),\n", + " ],\n", + " #[0.5XZXX + 0.25YIZI + 0.3 XIZY],\n", + " evolution_coefficient=3,\n", + " repetitions=4,\n", + " order=2,\n", + " qbv=q,\n", + " )\n", + "\n", + "\n", + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + }, + { + "cell_type": "markdown", + "source": [], + "metadata": { + "id": "a2tiByHPVxIm" + } + }, + { + "cell_type": "markdown", + "metadata": { + "id": "YVauJN06OPPr" + }, + "source": [ + "### Exercise 7 - Basic Arithmetics\n", + "\n", + "#### Exercise 7a\n", + "In this exercise we will use quantum numeric variables and calculate expressions over them.\n", + "\n", + "See details on the syntax of numeric types under [Quantum types](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/quantum-types/#syntax).\n", + "See more on quantum expressions under [Numeric assignment](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/statements/numeric-assignment/)\n", + "\n", + "Create the following quantum programs:\n", + "1. Initialize variables `x=2`, `y=7` and computes `res = x + y`.\n", + "2. Initialize variables `x=2`, `y=7` and computes `res = x * y`.\n", + "3. Initialize variables `x=2`, `y=7`, `z=1` and computes `res = x * y - z`.\n", + "\n", + "Guidance:\n", + "* Use the operator `|=` to perform out-of-place assignment of arithmetic expression.\n", + "* To initialize the variables, use the function `prepare_int`.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "2Ad42tEjOPPt", + "outputId": "0e3c5195-3914-4296-b400-067df17efb67" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/f6ab280e-a2d2-4b4f-9fe6-6063ec883f5c?version=0.41.2\n" + ] + } + ], + "source": [ + "from classiq import *\n", + "\n", + "# Your code here:\n", + "@qfunc\n", + "def main(res1: Output[QNum], res2: Output[QNum], res3: Output[QNum], x: Output[QNum], y: Output[QNum], z: Output[QNum]):\n", + " prepare_int(2, x)\n", + " prepare_int(7, y)\n", + " prepare_int(1, z)\n", + " res1 |= x + y\n", + " res2 |= x * y\n", + " res3 |= x * y - z\n", + "\n", + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "oD9FFw0hOPPv" + }, + "source": [ + "#### Exercise 7b\n", + "Declare `x` to be a 2-qubit variable and `y` to be 3-qubit variable.\n", + "\n", + "We will perform an addition of two superposition states: `x` is an equal superposition of `0` and `2`, and `y` is an equal superposition of `1`, `2`, `3`, and `6`.\n", + "\n", + "1. Use `prepare_state` to initialize `x` and `y`. Note that `prepare_state` works with probabilities, not amplitudes.\n", + " The declaration of the `prepare_state` function is:\n", + " ```\n", + " @qfunc(external=True)\n", + " def prepare_state(\n", + " probabilities: CArray[CReal],\n", + " bound: CReal,\n", + " out: Output[QArray[QBit]],\n", + " ) -> None:\n", + " pass\n", + " ```\n", + " (Set the bound to 0 in your code)\n", + "2. Compute `res = x + y`. Execute the resulting circuit. What did you get?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "J5aQnWHEOPPx", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "ea1de78b-3848-4255-d430-b1ae0bcc7cd2" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/6ee76891-980f-4b54-8403-44cb5e8b590c?version=0.41.2\n" + ] + } + ], + "source": [ + "from classiq import *\n", + "\n", + "# Your code here:\n", + "@qfunc\n", + "def main(res: Output[QNum], x: Output[QNum], y: Output[QNum]):\n", + " prepare_state([0.5, 0, 0.5, 0], bound=0.01, out=x)\n", + " prepare_state([0, 0.25, 0.25, 0.25, 0, 0, 0.25, 0], bound=0.01, out=y)\n", + " res |= x + y\n", + "\n", + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "QguPlrPLOPPz" + }, + "source": [ + "### Exercise 8 - Within-Apply\n", + "\n", + "The within-apply statement applies the pattern `U_dagger V U` that appears frequently in quantum computing.\n", + "It allows you to compute some function `V` within the context of another function `U`, and afterward uncompute `U` in order to release auxiliary qubits storing intermediate results.\n", + "\n", + "See also [Within Apply](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/statements/within-apply/).\n", + "\n", + "#### Exercise 8a\n", + "\n", + "In this exercise, we will use within-apply to compute an arithmetic expression in steps.\n", + "\n", + "Use the `within_apply` operation to calculate `res = x + y + z` from a two-variable addition building block with the following steps:\n", + "1. Add `x` and `y`\n", + "2. Add the result to `z`\n", + "3. Uncompute the result of the first operation\n", + "\n", + "For simplicity, initialize the registers to simple integers: `x=3`, `y=5`, `z=2`.\n", + "\n", + "Hints:\n", + "\n", + "* Use a temporary variable.\n", + "* Wrap the arithmetic operation in a function.\n", + "\n", + "Execute the circuit and make sure you obtain the expected result." + ] + }, + { + "cell_type": "code", + "source": [], + "metadata": { + "id": "kvEu55w7Ssac" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "gOMBLIf7OPP1", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "ee6530e4-3fa1-4d46-d151-9862ee961b5e" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/b9d46036-f719-4772-8e97-7a41269e10c1?version=0.41.2\n" + ] + } + ], + "source": [ + "from classiq import *\n", + "\n", + "# Your code here:\n", + "@qfunc\n", + "def q_add(res: Output[QNum], a:QNum, b:QNum) -> None:\n", + " res |= a + b\n", + "\n", + "@qfunc\n", + "def main(res: Output[QNum], x: Output[QNum],\n", + " y: Output[QNum], z: Output[QNum]) -> None:\n", + " prepare_int(3, x)\n", + " prepare_int(5, y)\n", + " prepare_int(2, z)\n", + " aux = QNum('aux')\n", + " within_apply(compute = lambda: q_add(aux, x, y),\n", + " action = lambda: q_add(res, aux, z))\n", + "\n", + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)\n", + "#13 qbits" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "umMhnAelOPP2" + }, + "source": [ + "#### Exercise 8b\n", + "\n", + "Why should we use `within-apply` and not just write three concatenated functions?\n", + "To understand the motivation, we will create another arithmetic circuit.\n", + "This time, however, we will also set Classiq’s synthesis engine to optimize on the circuit’s number of qubits, i.e., its width.\n", + "\n", + "Setting constraints can be done via the `set_constraints` operation - see [here](https://docs.classiq.io/latest/user-guide/platform/synthesis/constraints/).\n", + "\n", + "Perform the operation `res = w + x + y + z`, where w is initialized to 4 and the rest as before:\n", + "\n", + "1. Add `x` and `y` (as part of the `within_apply` operation)\n", + "2. Add the result to `z` (as part of the within_apply operation)\n", + "3. Uncompute the result of the first operation (as part of the `within_apply` operation)\n", + "4. Add the result of the second operation to `w`. There’s no need to perform another uncomputation, as this brings our calculation to an end.\n", + "\n", + "Create the model, optimize on the circuit’s width, and run the circuit. Can you identify where qubits have been released and reused?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "ED1iDS1aOPP5", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "2260c2b1-d176-4c26-a83f-e0be9d1b6804" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/76b99051-ff09-4588-b522-435cd54c7223?version=0.41.2\n" + ] + } + ], + "source": [ + "from classiq import *\n", + "\n", + "# Your code here:\n", + "@qfunc\n", + "def q_add(res: Output[QNum], a:QNum, b:QNum) -> None:\n", + " res |= a + b\n", + "\n", + "@qfunc\n", + "def main(res: Output[QNum], x: Output[QNum],\n", + " y: Output[QNum], z: Output[QNum], w: Output[QNum]) -> None:\n", + " prepare_int(3, x)\n", + " prepare_int(5, y)\n", + " prepare_int(2, z)\n", + " prepare_int(4, w)\n", + " aux1 = QNum('aux1')\n", + " aux2 = QNum('aux2')\n", + " within_apply(compute = lambda: q_add(aux1, x, y),\n", + " action = lambda: q_add(aux2, aux1, z),)\n", + " res |= aux2 + w\n", + "\n", + "\n", + "\n", + "qmod = create_model(main)\n", + "qmod = set_constraints(qmod,\n", + " Constraints(optimization_parameter='width'))\n", + "qprog = synthesize(qmod)\n", + "show(qprog)\n", + "#16 qbits" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "pIBHrEOxOPP6" + }, + "source": [ + "#### Bonus: Use a Single Arithmetic Expression\n", + "\n", + "What happens when we don't manually decompose this expression?\n", + "\n", + "Use Classiq’s arithmetic engine to calculate `res |= x + y + z + w` and optimize for width.\n", + "Look at the resulting quantum program - can you identify the computation and uncomputation blocks? What else did you notice?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "ep-Efm_oOPP8", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "258d0b91-cb7a-4a25-b80d-0492e6557fe1" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/1b073d18-c8d5-4f19-8c2d-7e2f064a18bd?version=0.41.2\n" + ] + } + ], + "source": [ + "from classiq import *\n", + "\n", + "# Your code here:\n", + "@qfunc\n", + "def q_add(res: Output[QNum], a:QNum, b:QNum) -> None:\n", + " res |= a + b\n", + "\n", + "@qfunc\n", + "def main(res: Output[QNum], x: Output[QNum],\n", + " y: Output[QNum], z: Output[QNum], w: Output[QNum]) -> None:\n", + " prepare_int(3, x)\n", + " prepare_int(5, y)\n", + " prepare_int(2, z)\n", + " prepare_int(4, w)\n", + " res |= x + y + z + w\n", + "\n", + "qmod = create_model(main)\n", + "qmod = set_constraints(qmod,\n", + " Constraints(optimization_parameter='width'))\n", + "qprog = synthesize(qmod)\n", + "show(qprog)\n", + "#15 qbits" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ZV9OGqqROPP-" + }, + "source": [ + "### Exercise 9 - In-place Arithmetics\n", + "\n", + "For the following exercise we will use numeric quantum variables that represent fixed-point reals.\n", + "\n", + "Arithmetic expressions can be calculated in-place into a target variable, without allocating new qubits to store the result. This is done using the in-place-xor operator.\n", + "\n", + "See also [Numeric assignment](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/statements/numeric-assignment/#semantics).\n", + "\n", + "In-place assignment is often used to nest arithmetic expressions under quantum operators. Note that out-of-place assignment requires its left-value variable to be un-initialized, and therefore cannot be used under an operator if the variable is declared outside its scope. Applying operators to arithmetic expressions is required in many algorithms. One example is the piecewise evaluation of mathematical functions - calculating different expressions over `x` depending on the subdomain where `x` falls.\n", + "\n", + "For this exercise, replace the missing parts in the code snippet below to evaluate the result of:\n", + "\n", + "$$\n", + "f(x) = \\begin{cases}\n", + " 2x + 1 & \\text{ if } 0 \\leq x < 0.5 \\\\\n", + " x + 0.5 & \\text{ if } 0.5 \\leq x < 1\n", + " \\end{cases}\n", + "$$\n", + "\n", + "Notes:\n", + "- We cannot use `x` directly as the control variable in a `constrol` operator, because it also occurs in the nested scope. to determine if `x` is in the lower or higher half of the domain we duplicate the most significant bit onto a separate variable called `label`.\n", + "- In Python assignment operators cannot be used in lambda expressions, so the computation of the function needs to be factored out to a named Python function (but not necessarily a Qmod function).\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "P1AsWxksOPQA", + "outputId": "c56c759d-fb58-45d7-b8b6-fc801c611f11", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/d3fb232d-2ee5-4824-a49d-c7febcc4ff91?version=0.41.2\n" + ] + } + ], + "source": [ + "\n", + "from classiq import *\n", + "\n", + "\n", + "def linear_func(a: float, b: float, x: QNum, res: QNum) -> None:\n", + " res ^= a * x + b\n", + "\n", + "\n", + "@qfunc\n", + "def dup_msb(qba: QArray[QBit], msb: QBit) -> None:\n", + " CX(qba[qba.len - 1], msb)\n", + "\n", + "\n", + "@qfunc\n", + "def main(x: Output[QNum[3, False, 3]], res: Output[QNum[5, False, 3]]) -> None:\n", + " allocate(5, res)\n", + " allocate(3, x)\n", + " hadamard_transform(x)\n", + "\n", + " label = QArray(\"label\")\n", + " allocate(1, label)\n", + "\n", + " dup_msb(x, label)\n", + " control(label, lambda: linear_func(1.0, 0.5, x, res)) # 0.5 <= x < 1.0\n", + " X(label)\n", + " control(label, lambda: linear_func(2.0, 1.0, x, res)) # 0.0 <= x < 0.5\n", + "\n", + "\n", + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "OOvAn02QOPQC" + }, + "source": [ + "### Exercise 10 - State-preparation Algorithm using Quantum-if\n", + "\n", + "#### Binding\n", + "The `bind` operation allows to convert smoothly between different quantum types and split or slice bits when necessary. Here’s an example:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "id": "JCX6UMqROPQD", + "outputId": "6d35d8f5-4341-4560-b708-d70d443dab84", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/2e528279-8038-4233-b2e7-f4844d8dcaa3?version=0.41.2\n" + ] + } + ], + "source": [ + "from classiq import *\n", + "\n", + "\n", + "\n", + "from classiq import *\n", + "from math import pi\n", + "\n", + "\n", + "@qfunc\n", + "def main(res: Output[QArray[QBit]]) -> None:\n", + " x: QArray[QBit] = QArray(\"x\")\n", + " allocate(3, x)\n", + " hadamard_transform(x)\n", + "\n", + " lsb = QBit(\"lsb\")\n", + " msb = QNum(\"msb\", 2, False, 0)\n", + " bind(x, [lsb, msb])\n", + "\n", + " control(msb == 1, lambda: RY(pi / 3, lsb))\n", + " # msb==1 <==> bit1 bit2 == 01 (binary of decimal 1)\n", + "\n", + " bind([lsb, msb], res)\n", + "\n", + "model = create_model(main)\n", + "qprog = synthesize(model)\n", + "show(qprog)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "fc5-bUyKOPQF" + }, + "source": [ + "The first `bind` operation splits the 3-qubit register `x` into the 2-qubit and single-qubit registers `lsb` and `msb`, respectively.\n", + "\n", + "After the `bind` operation:\n", + "1. The registers `lsb` and `msb` can be operated on as separated registers.\n", + "2. The register`x` is consumed and can no longer be used.\n", + "\n", + "The second `bind` operation concatenates the registers to the output register `res`.\n", + "\n", + "For this exercise, fill in the missing code parts in the above snippet and use the `control` statement to manually generate the following lovely 3-qubit probability distribution: `[1/8, 1/8, 1/8, -sqrt(3)/16, 1/8 + sqrt(3)/16, 1/8, 1/8, 1/8, 1/8]`.\n", + "\n", + "The following series of gates generate it:\n", + "\n", + "Perform the Hadamard transform on all three qubits.\n", + "\n", + "Apply a rotation on the LSB (least-significant bit) conditioned by the MSB being |0> and the second to last MSB being |1>. How would you write this condition using a QNum?\n", + "\n", + "The following series of gates generate it:\n", + "1. Perform the Hadamard transform on all three qubits.\n", + "2. Apply a `pi/3` rotation on the LSB (least-significant bit) conditioned by the MSB being |0> and the second to last MSB being |1>. How would you write this condition using a QNum?\n", + "\n", + "If you want to validate your results without looking at the full solution, compare them to running using Classiq’s built-in `prepare_state` function.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "id": "nSjVMfP8OPQG", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "outputId": "5ca3382b-fcf8-4901-bf77-72eb916118a0" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/63674ff7-ef0f-4d21-8ffa-60b078c5de78?version=0.41.2\n" + ] + } + ], + "source": [ + "#version 1 with msb, lsb, H, RY\n", + "from classiq import *\n", + "from classiq.qmod.symbolic import sqrt\n", + "from math import pi\n", + "\n", + "prob_list= [\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8 - sqrt(3) / 16,\n", + " 1 / 8 + sqrt(3) / 16,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " ]\n", + "@qfunc\n", + "def pre_prepared_state(q: QArray[QBit]) -> None:\n", + " prepare_state(\n", + " [\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8 - sqrt(3) / 16,\n", + " 1 / 8 + sqrt(3) / 16,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " ],\n", + " 0.0,\n", + " q,\n", + " )\n", + "\n", + "@qfunc\n", + "def main(res: Output[QArray[QBit]]) -> None:\n", + " x: QArray[QBit] = QArray(\"x\")\n", + " allocate(3, x)\n", + " hadamard_transform(x)\n", + "\n", + " lsb = QBit(\"lsb\")\n", + " msb = QNum(\"msb\", 2, False, 0)\n", + " bind(x, [lsb, msb])\n", + "\n", + " control(msb == 1, lambda: RY(pi / 3, lsb))\n", + " # msb==1 <==> bit1 bit2 == 01 (binary of decimal 1)\n", + " bind([lsb, msb], res)\n", + "\n", + " #prepare_state(probabilities=prob_list, bound=0.0, out=res)\n", + "\n", + "model = create_model(main)\n", + "qprog = synthesize(model)\n", + "show(qprog)\n", + "\n", + "# Your code here:" + ] + }, + { + "cell_type": "code", + "source": [ + "#version 2 with prepare_state\n", + "from classiq import *\n", + "from classiq.qmod.symbolic import sqrt\n", + "from math import pi\n", + "\n", + "prob_list= [\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8 - sqrt(3) / 16,\n", + " 1 / 8 + sqrt(3) / 16,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " ]\n", + "@qfunc\n", + "def pre_prepared_state(q: Output[QArray[QBit]]) -> None:\n", + " prepare_state(\n", + " [\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8 - sqrt(3) / 16,\n", + " 1 / 8 + sqrt(3) / 16,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " ],\n", + " 0.0,\n", + " q,\n", + " )\n", + "\n", + "@qfunc\n", + "def main(res: Output[QArray[QBit]]) -> None:\n", + " prepare_state(probabilities=prob_list, bound=0.0, out=res)\n", + "\n", + "model = create_model(main)\n", + "qprog = synthesize(model)\n", + "show(qprog)\n", + "\n", + "# Your code here:" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "mp0cnm12XKjo", + "outputId": "c97473fc-1b10-4bc0-b9ec-2db111726a00" + }, + "execution_count": 29, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/ea88176e-2348-4b64-b56e-4ef2921eeb51?version=0.41.2\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [], + "metadata": { + "id": "-TDAFwWbXVeT" + } + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.8" + }, + "colab": { + "provenance": [], + "include_colab_link": true + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file From 1f4103c907475aba910a6fb41aa94713e8ed7b53 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Wed, 29 May 2024 01:06:20 +0200 Subject: [PATCH 04/83] Delete community/QClass_2024/Submissions/HW2Yasir_Mansour_HW2_QClass2024.ipynb --- .../HW2Yasir_Mansour_HW2_QClass2024.ipynb | 990 ------------------ 1 file changed, 990 deletions(-) delete mode 100644 community/QClass_2024/Submissions/HW2Yasir_Mansour_HW2_QClass2024.ipynb diff --git a/community/QClass_2024/Submissions/HW2Yasir_Mansour_HW2_QClass2024.ipynb b/community/QClass_2024/Submissions/HW2Yasir_Mansour_HW2_QClass2024.ipynb deleted file mode 100644 index 5c2eb93f..00000000 --- a/community/QClass_2024/Submissions/HW2Yasir_Mansour_HW2_QClass2024.ipynb +++ /dev/null @@ -1,990 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "view-in-github", - "colab_type": "text" - }, - "source": [ - "\"Open" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "NbVeWUvUOPPN" - }, - "source": [ - "# The Qmod Workshop - Part 2: Higher-Level Concepts\n", - "\n", - "This is the second part of the Qmod workshop, covering exercises 6 through 10. Make sure to go through Part 1 before continuing with this notebook." - ] - }, - { - "cell_type": "code", - "source": [ - "!pip install classiq" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "collapsed": true, - "id": "CSoLXYc-P-zb", - "outputId": "32e4c151-5e82-4ff8-df53-e9ac710f2507" - }, - "execution_count": 1, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Collecting classiq\n", - " Downloading classiq-0.41.2-py3-none-any.whl (398 kB)\n", - "\u001b[?25l \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.0/398.1 kB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m\r\u001b[2K \u001b[91m━━━━━━━━━━━━━━\u001b[0m\u001b[90m╺\u001b[0m\u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m143.4/398.1 kB\u001b[0m \u001b[31m4.1 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m\r\u001b[2K \u001b[91m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[90m╺\u001b[0m \u001b[32m389.1/398.1 kB\u001b[0m \u001b[31m6.4 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m\r\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m398.1/398.1 kB\u001b[0m \u001b[31m5.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hCollecting ConfigArgParse<2.0.0,>=1.5.3 (from classiq)\n", - " Downloading ConfigArgParse-1.7-py3-none-any.whl (25 kB)\n", - "Collecting Pyomo<6.6,>=6.5 (from classiq)\n", - " Downloading Pyomo-6.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.7 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m10.7/10.7 MB\u001b[0m \u001b[31m28.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hCollecting black<25.0,>=24.0 (from classiq)\n", - " Downloading black-24.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.8 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.8/1.8 MB\u001b[0m \u001b[31m35.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hCollecting httpx<1,>=0.23.0 (from classiq)\n", - " Downloading httpx-0.27.0-py3-none-any.whl (75 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m75.6/75.6 kB\u001b[0m \u001b[31m5.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: keyring<24.0.0,>=23.5.0 in /usr/lib/python3/dist-packages (from classiq) (23.5.0)\n", - "Requirement already satisfied: matplotlib<4.0.0,>=3.4.3 in /usr/local/lib/python3.10/dist-packages (from classiq) (3.7.1)\n", - "Collecting networkx<3.0.0,>=2.5.1 (from classiq)\n", - " Downloading networkx-2.8.8-py3-none-any.whl (2.0 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.0/2.0 MB\u001b[0m \u001b[31m26.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: numexpr<3.0.0,>=2.7.3 in /usr/local/lib/python3.10/dist-packages (from classiq) (2.10.0)\n", - "Requirement already satisfied: numpy<2.0.0,>=1.20.1 in /usr/local/lib/python3.10/dist-packages (from classiq) (1.25.2)\n", - "Collecting packaging<23.0,>=22.0 (from classiq)\n", - " Downloading packaging-22.0-py3-none-any.whl (42 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m42.6/42.6 kB\u001b[0m \u001b[31m1.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: pandas<3.0.0,>=1.4.0 in /usr/local/lib/python3.10/dist-packages (from classiq) (2.0.3)\n", - "Requirement already satisfied: plotly<6.0.0,>=5.7.0 in /usr/local/lib/python3.10/dist-packages (from classiq) (5.15.0)\n", - "Collecting pydantic<2.0.0,>=1.9.1 (from classiq)\n", - " Downloading pydantic-1.10.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.1/3.1 MB\u001b[0m \u001b[31m16.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: scipy<2.0.0,>=1.10.1 in /usr/local/lib/python3.10/dist-packages (from classiq) (1.11.4)\n", - "Collecting sympy<1.11.0,>=1.9.0 (from classiq)\n", - " Downloading sympy-1.10.1-py3-none-any.whl (6.4 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m6.4/6.4 MB\u001b[0m \u001b[31m34.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: tabulate<1,>=0.8.9 in /usr/local/lib/python3.10/dist-packages (from classiq) (0.9.0)\n", - "Requirement already satisfied: click>=8.0.0 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (8.1.7)\n", - "Collecting mypy-extensions>=0.4.3 (from black<25.0,>=24.0->classiq)\n", - " Downloading mypy_extensions-1.0.0-py3-none-any.whl (4.7 kB)\n", - "Collecting pathspec>=0.9.0 (from black<25.0,>=24.0->classiq)\n", - " Downloading pathspec-0.12.1-py3-none-any.whl (31 kB)\n", - "Requirement already satisfied: platformdirs>=2 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (4.2.2)\n", - "Requirement already satisfied: tomli>=1.1.0 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (2.0.1)\n", - "Requirement already satisfied: typing-extensions>=4.0.1 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (4.11.0)\n", - "Requirement already satisfied: anyio in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (3.7.1)\n", - "Requirement already satisfied: certifi in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (2024.2.2)\n", - "Collecting httpcore==1.* (from httpx<1,>=0.23.0->classiq)\n", - " Downloading httpcore-1.0.5-py3-none-any.whl (77 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m77.9/77.9 kB\u001b[0m \u001b[31m8.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: idna in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (3.7)\n", - "Requirement already satisfied: sniffio in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (1.3.1)\n", - "Collecting h11<0.15,>=0.13 (from httpcore==1.*->httpx<1,>=0.23.0->classiq)\n", - " Downloading h11-0.14.0-py3-none-any.whl (58 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m58.3/58.3 kB\u001b[0m \u001b[31m6.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (1.2.1)\n", - "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (0.12.1)\n", - "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (4.51.0)\n", - "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (1.4.5)\n", - "Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (9.4.0)\n", - "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (3.1.2)\n", - "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (2.8.2)\n", - "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas<3.0.0,>=1.4.0->classiq) (2023.4)\n", - "Requirement already satisfied: tzdata>=2022.1 in /usr/local/lib/python3.10/dist-packages (from pandas<3.0.0,>=1.4.0->classiq) (2024.1)\n", - "Requirement already satisfied: tenacity>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from plotly<6.0.0,>=5.7.0->classiq) (8.3.0)\n", - "Collecting ply (from Pyomo<6.6,>=6.5->classiq)\n", - " Downloading ply-3.11-py2.py3-none-any.whl (49 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m49.6/49.6 kB\u001b[0m \u001b[31m5.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: mpmath>=0.19 in /usr/local/lib/python3.10/dist-packages (from sympy<1.11.0,>=1.9.0->classiq) (1.3.0)\n", - "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.7->matplotlib<4.0.0,>=3.4.3->classiq) (1.16.0)\n", - "Requirement already satisfied: exceptiongroup in /usr/local/lib/python3.10/dist-packages (from anyio->httpx<1,>=0.23.0->classiq) (1.2.1)\n", - "Installing collected packages: ply, sympy, Pyomo, pydantic, pathspec, packaging, networkx, mypy-extensions, h11, ConfigArgParse, httpcore, black, httpx, classiq\n", - " Attempting uninstall: sympy\n", - " Found existing installation: sympy 1.12\n", - " Uninstalling sympy-1.12:\n", - " Successfully uninstalled sympy-1.12\n", - " Attempting uninstall: pydantic\n", - " Found existing installation: pydantic 2.7.1\n", - " Uninstalling pydantic-2.7.1:\n", - " Successfully uninstalled pydantic-2.7.1\n", - " Attempting uninstall: packaging\n", - " Found existing installation: packaging 24.0\n", - " Uninstalling packaging-24.0:\n", - " Successfully uninstalled packaging-24.0\n", - " Attempting uninstall: networkx\n", - " Found existing installation: networkx 3.3\n", - " Uninstalling networkx-3.3:\n", - " Successfully uninstalled networkx-3.3\n", - "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", - "torch 2.3.0+cu121 requires nvidia-cublas-cu12==12.1.3.1; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cuda-cupti-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cuda-nvrtc-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cuda-runtime-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cudnn-cu12==8.9.2.26; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cufft-cu12==11.0.2.54; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-curand-cu12==10.3.2.106; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cusolver-cu12==11.4.5.107; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cusparse-cu12==12.1.0.106; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-nccl-cu12==2.20.5; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-nvtx-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\u001b[0m\u001b[31m\n", - "\u001b[0mSuccessfully installed ConfigArgParse-1.7 Pyomo-6.5.0 black-24.4.2 classiq-0.41.2 h11-0.14.0 httpcore-1.0.5 httpx-0.27.0 mypy-extensions-1.0.0 networkx-2.8.8 packaging-22.0 pathspec-0.12.1 ply-3.11 pydantic-1.10.15 sympy-1.10.1\n" - ] - } - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "id": "yLmI64uHOPPX" - }, - "outputs": [], - "source": [ - "from classiq import *" - ] - }, - { - "cell_type": "code", - "source": [ - "import classiq\n", - "classiq.authenticate()" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "id": "Js5S3AMtP6LJ", - "outputId": "d3f334a9-6dcf-4e2a-f547-b68342d126ea" - }, - "execution_count": 3, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Your user code: PXGV-WPZJ\n", - "If a browser doesn't automatically open, please visit this URL from any trusted device: https://auth.classiq.io/activate?user_code=PXGV-WPZJ\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "DLFwpFN8OPPd" - }, - "source": [ - "### Exercise 6 - Exponentiation and Pauli Operators\n", - "\n", - "The Qmod language supports different classical types: scalars, arrays, and structs. Structs are objects with member variables, or fields.\n", - "\n", - "See also [Classical Types](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/classical-types/#structs).\n", - "\n", - "The builtin struct type `PauliTerm` is defined as follows:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "id": "EEjNNhY3OPPe" - }, - "outputs": [], - "source": [ - "@struct\n", - "class PauliTerm:\n", - " pauli: CArray[Pauli]\n", - " coefficient: CReal" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "oOlb_yyJOPPg" - }, - "source": [ - "Note that `Pauli` is an enum for all the Pauli matrices (I, X, Y, Z).\n", - "\n", - "Pauli based hamiltonian can be represented as a list of `PauliTerm`s. A Pauli operator defined this way is the argument to a hamiltonian evolution functions.\n", - "\n", - "In this exercise we will use the Suzuki-Trotter function to find the evolution of `H=0.5XZXX + 0.25YIZI + 0.3 XIZY` (captured as a literal value for the pauli-operator), with the evolution coefficient being 3, the order being 2, and use 4 repetitions.\n", - "\n", - "The declaration of the `suzuki_trotter` function is:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "uO1d4ba3OPPi" - }, - "outputs": [], - "source": [ - "@qfunc(external=True)\n", - "def suzuki_trotter(\n", - " pauli_operator: CArray[PauliTerm],\n", - " evolution_coefficient: CReal,\n", - " order: CInt,\n", - " repetitions: CInt,\n", - " qbv: QArray[QBit],\n", - ") -> None:\n", - " pass" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "jGcQahGvOPPk" - }, - "source": [ - "Fill in the missing parts of the following code in order to complete this exercise:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "-ZPy2HjIOPPl", - "outputId": "fc91afc7-7cfc-4efe-b1d4-c3da484dfaeb" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/695d17a9-edaa-4811-8aea-04f575daf238?version=0.41.2\n" - ] - } - ], - "source": [ - "from classiq import *\n", - "\n", - "\n", - "@qfunc\n", - "def main(q: Output[QArray[QBit]]) -> None:\n", - " allocate(4, q)\n", - " suzuki_trotter(\n", - " [\n", - " PauliTerm(pauli=[Pauli.X, Pauli.Z, Pauli.X, Pauli.X], coefficient=0.5),\n", - " PauliTerm(pauli=[Pauli.Y, Pauli.I, Pauli.Z, Pauli.I], coefficient=0.25),\n", - " PauliTerm(pauli=[Pauli.X, Pauli.I, Pauli.Z, Pauli.Y], coefficient=0.3),\n", - " ],\n", - " #[0.5XZXX + 0.25YIZI + 0.3 XIZY],\n", - " evolution_coefficient=3,\n", - " repetitions=4,\n", - " order=2,\n", - " qbv=q,\n", - " )\n", - "\n", - "\n", - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "show(qprog)" - ] - }, - { - "cell_type": "markdown", - "source": [], - "metadata": { - "id": "a2tiByHPVxIm" - } - }, - { - "cell_type": "markdown", - "metadata": { - "id": "YVauJN06OPPr" - }, - "source": [ - "### Exercise 7 - Basic Arithmetics\n", - "\n", - "#### Exercise 7a\n", - "In this exercise we will use quantum numeric variables and calculate expressions over them.\n", - "\n", - "See details on the syntax of numeric types under [Quantum types](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/quantum-types/#syntax).\n", - "See more on quantum expressions under [Numeric assignment](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/statements/numeric-assignment/)\n", - "\n", - "Create the following quantum programs:\n", - "1. Initialize variables `x=2`, `y=7` and computes `res = x + y`.\n", - "2. Initialize variables `x=2`, `y=7` and computes `res = x * y`.\n", - "3. Initialize variables `x=2`, `y=7`, `z=1` and computes `res = x * y - z`.\n", - "\n", - "Guidance:\n", - "* Use the operator `|=` to perform out-of-place assignment of arithmetic expression.\n", - "* To initialize the variables, use the function `prepare_int`.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "2Ad42tEjOPPt", - "outputId": "0e3c5195-3914-4296-b400-067df17efb67" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/f6ab280e-a2d2-4b4f-9fe6-6063ec883f5c?version=0.41.2\n" - ] - } - ], - "source": [ - "from classiq import *\n", - "\n", - "# Your code here:\n", - "@qfunc\n", - "def main(res1: Output[QNum], res2: Output[QNum], res3: Output[QNum], x: Output[QNum], y: Output[QNum], z: Output[QNum]):\n", - " prepare_int(2, x)\n", - " prepare_int(7, y)\n", - " prepare_int(1, z)\n", - " res1 |= x + y\n", - " res2 |= x * y\n", - " res3 |= x * y - z\n", - "\n", - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "show(qprog)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "oD9FFw0hOPPv" - }, - "source": [ - "#### Exercise 7b\n", - "Declare `x` to be a 2-qubit variable and `y` to be 3-qubit variable.\n", - "\n", - "We will perform an addition of two superposition states: `x` is an equal superposition of `0` and `2`, and `y` is an equal superposition of `1`, `2`, `3`, and `6`.\n", - "\n", - "1. Use `prepare_state` to initialize `x` and `y`. Note that `prepare_state` works with probabilities, not amplitudes.\n", - " The declaration of the `prepare_state` function is:\n", - " ```\n", - " @qfunc(external=True)\n", - " def prepare_state(\n", - " probabilities: CArray[CReal],\n", - " bound: CReal,\n", - " out: Output[QArray[QBit]],\n", - " ) -> None:\n", - " pass\n", - " ```\n", - " (Set the bound to 0 in your code)\n", - "2. Compute `res = x + y`. Execute the resulting circuit. What did you get?" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "J5aQnWHEOPPx", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "ea1de78b-3848-4255-d430-b1ae0bcc7cd2" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/6ee76891-980f-4b54-8403-44cb5e8b590c?version=0.41.2\n" - ] - } - ], - "source": [ - "from classiq import *\n", - "\n", - "# Your code here:\n", - "@qfunc\n", - "def main(res: Output[QNum], x: Output[QNum], y: Output[QNum]):\n", - " prepare_state([0.5, 0, 0.5, 0], bound=0.01, out=x)\n", - " prepare_state([0, 0.25, 0.25, 0.25, 0, 0, 0.25, 0], bound=0.01, out=y)\n", - " res |= x + y\n", - "\n", - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "show(qprog)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "QguPlrPLOPPz" - }, - "source": [ - "### Exercise 8 - Within-Apply\n", - "\n", - "The within-apply statement applies the pattern `U_dagger V U` that appears frequently in quantum computing.\n", - "It allows you to compute some function `V` within the context of another function `U`, and afterward uncompute `U` in order to release auxiliary qubits storing intermediate results.\n", - "\n", - "See also [Within Apply](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/statements/within-apply/).\n", - "\n", - "#### Exercise 8a\n", - "\n", - "In this exercise, we will use within-apply to compute an arithmetic expression in steps.\n", - "\n", - "Use the `within_apply` operation to calculate `res = x + y + z` from a two-variable addition building block with the following steps:\n", - "1. Add `x` and `y`\n", - "2. Add the result to `z`\n", - "3. Uncompute the result of the first operation\n", - "\n", - "For simplicity, initialize the registers to simple integers: `x=3`, `y=5`, `z=2`.\n", - "\n", - "Hints:\n", - "\n", - "* Use a temporary variable.\n", - "* Wrap the arithmetic operation in a function.\n", - "\n", - "Execute the circuit and make sure you obtain the expected result." - ] - }, - { - "cell_type": "code", - "source": [], - "metadata": { - "id": "kvEu55w7Ssac" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "gOMBLIf7OPP1", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "ee6530e4-3fa1-4d46-d151-9862ee961b5e" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/b9d46036-f719-4772-8e97-7a41269e10c1?version=0.41.2\n" - ] - } - ], - "source": [ - "from classiq import *\n", - "\n", - "# Your code here:\n", - "@qfunc\n", - "def q_add(res: Output[QNum], a:QNum, b:QNum) -> None:\n", - " res |= a + b\n", - "\n", - "@qfunc\n", - "def main(res: Output[QNum], x: Output[QNum],\n", - " y: Output[QNum], z: Output[QNum]) -> None:\n", - " prepare_int(3, x)\n", - " prepare_int(5, y)\n", - " prepare_int(2, z)\n", - " aux = QNum('aux')\n", - " within_apply(compute = lambda: q_add(aux, x, y),\n", - " action = lambda: q_add(res, aux, z))\n", - "\n", - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "show(qprog)\n", - "#13 qbits" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "umMhnAelOPP2" - }, - "source": [ - "#### Exercise 8b\n", - "\n", - "Why should we use `within-apply` and not just write three concatenated functions?\n", - "To understand the motivation, we will create another arithmetic circuit.\n", - "This time, however, we will also set Classiq’s synthesis engine to optimize on the circuit’s number of qubits, i.e., its width.\n", - "\n", - "Setting constraints can be done via the `set_constraints` operation - see [here](https://docs.classiq.io/latest/user-guide/platform/synthesis/constraints/).\n", - "\n", - "Perform the operation `res = w + x + y + z`, where w is initialized to 4 and the rest as before:\n", - "\n", - "1. Add `x` and `y` (as part of the `within_apply` operation)\n", - "2. Add the result to `z` (as part of the within_apply operation)\n", - "3. Uncompute the result of the first operation (as part of the `within_apply` operation)\n", - "4. Add the result of the second operation to `w`. There’s no need to perform another uncomputation, as this brings our calculation to an end.\n", - "\n", - "Create the model, optimize on the circuit’s width, and run the circuit. Can you identify where qubits have been released and reused?" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "ED1iDS1aOPP5", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "2260c2b1-d176-4c26-a83f-e0be9d1b6804" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/76b99051-ff09-4588-b522-435cd54c7223?version=0.41.2\n" - ] - } - ], - "source": [ - "from classiq import *\n", - "\n", - "# Your code here:\n", - "@qfunc\n", - "def q_add(res: Output[QNum], a:QNum, b:QNum) -> None:\n", - " res |= a + b\n", - "\n", - "@qfunc\n", - "def main(res: Output[QNum], x: Output[QNum],\n", - " y: Output[QNum], z: Output[QNum], w: Output[QNum]) -> None:\n", - " prepare_int(3, x)\n", - " prepare_int(5, y)\n", - " prepare_int(2, z)\n", - " prepare_int(4, w)\n", - " aux1 = QNum('aux1')\n", - " aux2 = QNum('aux2')\n", - " within_apply(compute = lambda: q_add(aux1, x, y),\n", - " action = lambda: q_add(aux2, aux1, z),)\n", - " res |= aux2 + w\n", - "\n", - "\n", - "\n", - "qmod = create_model(main)\n", - "qmod = set_constraints(qmod,\n", - " Constraints(optimization_parameter='width'))\n", - "qprog = synthesize(qmod)\n", - "show(qprog)\n", - "#16 qbits" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "pIBHrEOxOPP6" - }, - "source": [ - "#### Bonus: Use a Single Arithmetic Expression\n", - "\n", - "What happens when we don't manually decompose this expression?\n", - "\n", - "Use Classiq’s arithmetic engine to calculate `res |= x + y + z + w` and optimize for width.\n", - "Look at the resulting quantum program - can you identify the computation and uncomputation blocks? What else did you notice?" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "ep-Efm_oOPP8", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "258d0b91-cb7a-4a25-b80d-0492e6557fe1" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/1b073d18-c8d5-4f19-8c2d-7e2f064a18bd?version=0.41.2\n" - ] - } - ], - "source": [ - "from classiq import *\n", - "\n", - "# Your code here:\n", - "@qfunc\n", - "def q_add(res: Output[QNum], a:QNum, b:QNum) -> None:\n", - " res |= a + b\n", - "\n", - "@qfunc\n", - "def main(res: Output[QNum], x: Output[QNum],\n", - " y: Output[QNum], z: Output[QNum], w: Output[QNum]) -> None:\n", - " prepare_int(3, x)\n", - " prepare_int(5, y)\n", - " prepare_int(2, z)\n", - " prepare_int(4, w)\n", - " res |= x + y + z + w\n", - "\n", - "qmod = create_model(main)\n", - "qmod = set_constraints(qmod,\n", - " Constraints(optimization_parameter='width'))\n", - "qprog = synthesize(qmod)\n", - "show(qprog)\n", - "#15 qbits" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "ZV9OGqqROPP-" - }, - "source": [ - "### Exercise 9 - In-place Arithmetics\n", - "\n", - "For the following exercise we will use numeric quantum variables that represent fixed-point reals.\n", - "\n", - "Arithmetic expressions can be calculated in-place into a target variable, without allocating new qubits to store the result. This is done using the in-place-xor operator.\n", - "\n", - "See also [Numeric assignment](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/statements/numeric-assignment/#semantics).\n", - "\n", - "In-place assignment is often used to nest arithmetic expressions under quantum operators. Note that out-of-place assignment requires its left-value variable to be un-initialized, and therefore cannot be used under an operator if the variable is declared outside its scope. Applying operators to arithmetic expressions is required in many algorithms. One example is the piecewise evaluation of mathematical functions - calculating different expressions over `x` depending on the subdomain where `x` falls.\n", - "\n", - "For this exercise, replace the missing parts in the code snippet below to evaluate the result of:\n", - "\n", - "$$\n", - "f(x) = \\begin{cases}\n", - " 2x + 1 & \\text{ if } 0 \\leq x < 0.5 \\\\\n", - " x + 0.5 & \\text{ if } 0.5 \\leq x < 1\n", - " \\end{cases}\n", - "$$\n", - "\n", - "Notes:\n", - "- We cannot use `x` directly as the control variable in a `constrol` operator, because it also occurs in the nested scope. to determine if `x` is in the lower or higher half of the domain we duplicate the most significant bit onto a separate variable called `label`.\n", - "- In Python assignment operators cannot be used in lambda expressions, so the computation of the function needs to be factored out to a named Python function (but not necessarily a Qmod function).\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "P1AsWxksOPQA", - "outputId": "c56c759d-fb58-45d7-b8b6-fc801c611f11", - "colab": { - "base_uri": "https://localhost:8080/" - } - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/d3fb232d-2ee5-4824-a49d-c7febcc4ff91?version=0.41.2\n" - ] - } - ], - "source": [ - "\n", - "from classiq import *\n", - "\n", - "\n", - "def linear_func(a: float, b: float, x: QNum, res: QNum) -> None:\n", - " res ^= a * x + b\n", - "\n", - "\n", - "@qfunc\n", - "def dup_msb(qba: QArray[QBit], msb: QBit) -> None:\n", - " CX(qba[qba.len - 1], msb)\n", - "\n", - "\n", - "@qfunc\n", - "def main(x: Output[QNum[3, False, 3]], res: Output[QNum[5, False, 3]]) -> None:\n", - " allocate(5, res)\n", - " allocate(3, x)\n", - " hadamard_transform(x)\n", - "\n", - " label = QArray(\"label\")\n", - " allocate(1, label)\n", - "\n", - " dup_msb(x, label)\n", - " control(label, lambda: linear_func(1.0, 0.5, x, res)) # 0.5 <= x < 1.0\n", - " X(label)\n", - " control(label, lambda: linear_func(2.0, 1.0, x, res)) # 0.0 <= x < 0.5\n", - "\n", - "\n", - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "show(qprog)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "OOvAn02QOPQC" - }, - "source": [ - "### Exercise 10 - State-preparation Algorithm using Quantum-if\n", - "\n", - "#### Binding\n", - "The `bind` operation allows to convert smoothly between different quantum types and split or slice bits when necessary. Here’s an example:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "id": "JCX6UMqROPQD", - "outputId": "6d35d8f5-4341-4560-b708-d70d443dab84", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - } - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/2e528279-8038-4233-b2e7-f4844d8dcaa3?version=0.41.2\n" - ] - } - ], - "source": [ - "from classiq import *\n", - "\n", - "\n", - "\n", - "from classiq import *\n", - "from math import pi\n", - "\n", - "\n", - "@qfunc\n", - "def main(res: Output[QArray[QBit]]) -> None:\n", - " x: QArray[QBit] = QArray(\"x\")\n", - " allocate(3, x)\n", - " hadamard_transform(x)\n", - "\n", - " lsb = QBit(\"lsb\")\n", - " msb = QNum(\"msb\", 2, False, 0)\n", - " bind(x, [lsb, msb])\n", - "\n", - " control(msb == 1, lambda: RY(pi / 3, lsb))\n", - " # msb==1 <==> bit1 bit2 == 01 (binary of decimal 1)\n", - "\n", - " bind([lsb, msb], res)\n", - "\n", - "model = create_model(main)\n", - "qprog = synthesize(model)\n", - "show(qprog)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "fc5-bUyKOPQF" - }, - "source": [ - "The first `bind` operation splits the 3-qubit register `x` into the 2-qubit and single-qubit registers `lsb` and `msb`, respectively.\n", - "\n", - "After the `bind` operation:\n", - "1. The registers `lsb` and `msb` can be operated on as separated registers.\n", - "2. The register`x` is consumed and can no longer be used.\n", - "\n", - "The second `bind` operation concatenates the registers to the output register `res`.\n", - "\n", - "For this exercise, fill in the missing code parts in the above snippet and use the `control` statement to manually generate the following lovely 3-qubit probability distribution: `[1/8, 1/8, 1/8, -sqrt(3)/16, 1/8 + sqrt(3)/16, 1/8, 1/8, 1/8, 1/8]`.\n", - "\n", - "The following series of gates generate it:\n", - "\n", - "Perform the Hadamard transform on all three qubits.\n", - "\n", - "Apply a rotation on the LSB (least-significant bit) conditioned by the MSB being |0> and the second to last MSB being |1>. How would you write this condition using a QNum?\n", - "\n", - "The following series of gates generate it:\n", - "1. Perform the Hadamard transform on all three qubits.\n", - "2. Apply a `pi/3` rotation on the LSB (least-significant bit) conditioned by the MSB being |0> and the second to last MSB being |1>. How would you write this condition using a QNum?\n", - "\n", - "If you want to validate your results without looking at the full solution, compare them to running using Classiq’s built-in `prepare_state` function.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": { - "id": "nSjVMfP8OPQG", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "outputId": "5ca3382b-fcf8-4901-bf77-72eb916118a0" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/63674ff7-ef0f-4d21-8ffa-60b078c5de78?version=0.41.2\n" - ] - } - ], - "source": [ - "#version 1 with msb, lsb, H, RY\n", - "from classiq import *\n", - "from classiq.qmod.symbolic import sqrt\n", - "from math import pi\n", - "\n", - "prob_list= [\n", - " 1 / 8,\n", - " 1 / 8,\n", - " 1 / 8 - sqrt(3) / 16,\n", - " 1 / 8 + sqrt(3) / 16,\n", - " 1 / 8,\n", - " 1 / 8,\n", - " 1 / 8,\n", - " 1 / 8,\n", - " ]\n", - "@qfunc\n", - "def pre_prepared_state(q: QArray[QBit]) -> None:\n", - " prepare_state(\n", - " [\n", - " 1 / 8,\n", - " 1 / 8,\n", - " 1 / 8 - sqrt(3) / 16,\n", - " 1 / 8 + sqrt(3) / 16,\n", - " 1 / 8,\n", - " 1 / 8,\n", - " 1 / 8,\n", - " 1 / 8,\n", - " ],\n", - " 0.0,\n", - " q,\n", - " )\n", - "\n", - "@qfunc\n", - "def main(res: Output[QArray[QBit]]) -> None:\n", - " x: QArray[QBit] = QArray(\"x\")\n", - " allocate(3, x)\n", - " hadamard_transform(x)\n", - "\n", - " lsb = QBit(\"lsb\")\n", - " msb = QNum(\"msb\", 2, False, 0)\n", - " bind(x, [lsb, msb])\n", - "\n", - " control(msb == 1, lambda: RY(pi / 3, lsb))\n", - " # msb==1 <==> bit1 bit2 == 01 (binary of decimal 1)\n", - " bind([lsb, msb], res)\n", - "\n", - " #prepare_state(probabilities=prob_list, bound=0.0, out=res)\n", - "\n", - "model = create_model(main)\n", - "qprog = synthesize(model)\n", - "show(qprog)\n", - "\n", - "# Your code here:" - ] - }, - { - "cell_type": "code", - "source": [ - "#version 2 with prepare_state\n", - "from classiq import *\n", - "from classiq.qmod.symbolic import sqrt\n", - "from math import pi\n", - "\n", - "prob_list= [\n", - " 1 / 8,\n", - " 1 / 8,\n", - " 1 / 8 - sqrt(3) / 16,\n", - " 1 / 8 + sqrt(3) / 16,\n", - " 1 / 8,\n", - " 1 / 8,\n", - " 1 / 8,\n", - " 1 / 8,\n", - " ]\n", - "@qfunc\n", - "def pre_prepared_state(q: Output[QArray[QBit]]) -> None:\n", - " prepare_state(\n", - " [\n", - " 1 / 8,\n", - " 1 / 8,\n", - " 1 / 8 - sqrt(3) / 16,\n", - " 1 / 8 + sqrt(3) / 16,\n", - " 1 / 8,\n", - " 1 / 8,\n", - " 1 / 8,\n", - " 1 / 8,\n", - " ],\n", - " 0.0,\n", - " q,\n", - " )\n", - "\n", - "@qfunc\n", - "def main(res: Output[QArray[QBit]]) -> None:\n", - " prepare_state(probabilities=prob_list, bound=0.0, out=res)\n", - "\n", - "model = create_model(main)\n", - "qprog = synthesize(model)\n", - "show(qprog)\n", - "\n", - "# Your code here:" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "id": "mp0cnm12XKjo", - "outputId": "c97473fc-1b10-4bc0-b9ec-2db111726a00" - }, - "execution_count": 29, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/ea88176e-2348-4b64-b56e-4ef2921eeb51?version=0.41.2\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "source": [], - "metadata": { - "id": "-TDAFwWbXVeT" - } - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.8" - }, - "colab": { - "provenance": [], - "include_colab_link": true - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} \ No newline at end of file From d15758b42003e0c4f51d06dc4b0e531fcd31351d Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Wed, 29 May 2024 01:23:14 +0200 Subject: [PATCH 05/83] Created using Colab --- Yasir_Mansour_HW2_QClass2024.ipynb | 990 +++++++++++++++++++++++++++++ 1 file changed, 990 insertions(+) create mode 100644 Yasir_Mansour_HW2_QClass2024.ipynb diff --git a/Yasir_Mansour_HW2_QClass2024.ipynb b/Yasir_Mansour_HW2_QClass2024.ipynb new file mode 100644 index 00000000..dc828df7 --- /dev/null +++ b/Yasir_Mansour_HW2_QClass2024.ipynb @@ -0,0 +1,990 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "NbVeWUvUOPPN" + }, + "source": [ + "# The Qmod Workshop - Part 2: Higher-Level Concepts\n", + "\n", + "This is the second part of the Qmod workshop, covering exercises 6 through 10. Make sure to go through Part 1 before continuing with this notebook." + ] + }, + { + "cell_type": "code", + "source": [ + "!pip install classiq" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "collapsed": true, + "id": "CSoLXYc-P-zb", + "outputId": "32e4c151-5e82-4ff8-df53-e9ac710f2507" + }, + "execution_count": 1, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Collecting classiq\n", + " Downloading classiq-0.41.2-py3-none-any.whl (398 kB)\n", + "\u001b[?25l \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.0/398.1 kB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m\r\u001b[2K \u001b[91m━━━━━━━━━━━━━━\u001b[0m\u001b[90m╺\u001b[0m\u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m143.4/398.1 kB\u001b[0m \u001b[31m4.1 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m\r\u001b[2K \u001b[91m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[90m╺\u001b[0m \u001b[32m389.1/398.1 kB\u001b[0m \u001b[31m6.4 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m\r\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m398.1/398.1 kB\u001b[0m \u001b[31m5.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting ConfigArgParse<2.0.0,>=1.5.3 (from classiq)\n", + " Downloading ConfigArgParse-1.7-py3-none-any.whl (25 kB)\n", + "Collecting Pyomo<6.6,>=6.5 (from classiq)\n", + " Downloading Pyomo-6.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.7 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m10.7/10.7 MB\u001b[0m \u001b[31m28.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting black<25.0,>=24.0 (from classiq)\n", + " Downloading black-24.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.8 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.8/1.8 MB\u001b[0m \u001b[31m35.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting httpx<1,>=0.23.0 (from classiq)\n", + " Downloading httpx-0.27.0-py3-none-any.whl (75 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m75.6/75.6 kB\u001b[0m \u001b[31m5.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: keyring<24.0.0,>=23.5.0 in /usr/lib/python3/dist-packages (from classiq) (23.5.0)\n", + "Requirement already satisfied: matplotlib<4.0.0,>=3.4.3 in /usr/local/lib/python3.10/dist-packages (from classiq) (3.7.1)\n", + "Collecting networkx<3.0.0,>=2.5.1 (from classiq)\n", + " Downloading networkx-2.8.8-py3-none-any.whl (2.0 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.0/2.0 MB\u001b[0m \u001b[31m26.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: numexpr<3.0.0,>=2.7.3 in /usr/local/lib/python3.10/dist-packages (from classiq) (2.10.0)\n", + "Requirement already satisfied: numpy<2.0.0,>=1.20.1 in /usr/local/lib/python3.10/dist-packages (from classiq) (1.25.2)\n", + "Collecting packaging<23.0,>=22.0 (from classiq)\n", + " Downloading packaging-22.0-py3-none-any.whl (42 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m42.6/42.6 kB\u001b[0m \u001b[31m1.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: pandas<3.0.0,>=1.4.0 in /usr/local/lib/python3.10/dist-packages (from classiq) (2.0.3)\n", + "Requirement already satisfied: plotly<6.0.0,>=5.7.0 in /usr/local/lib/python3.10/dist-packages (from classiq) (5.15.0)\n", + "Collecting pydantic<2.0.0,>=1.9.1 (from classiq)\n", + " Downloading pydantic-1.10.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.1/3.1 MB\u001b[0m \u001b[31m16.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: scipy<2.0.0,>=1.10.1 in /usr/local/lib/python3.10/dist-packages (from classiq) (1.11.4)\n", + "Collecting sympy<1.11.0,>=1.9.0 (from classiq)\n", + " Downloading sympy-1.10.1-py3-none-any.whl (6.4 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m6.4/6.4 MB\u001b[0m \u001b[31m34.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: tabulate<1,>=0.8.9 in /usr/local/lib/python3.10/dist-packages (from classiq) (0.9.0)\n", + "Requirement already satisfied: click>=8.0.0 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (8.1.7)\n", + "Collecting mypy-extensions>=0.4.3 (from black<25.0,>=24.0->classiq)\n", + " Downloading mypy_extensions-1.0.0-py3-none-any.whl (4.7 kB)\n", + "Collecting pathspec>=0.9.0 (from black<25.0,>=24.0->classiq)\n", + " Downloading pathspec-0.12.1-py3-none-any.whl (31 kB)\n", + "Requirement already satisfied: platformdirs>=2 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (4.2.2)\n", + "Requirement already satisfied: tomli>=1.1.0 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (2.0.1)\n", + "Requirement already satisfied: typing-extensions>=4.0.1 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (4.11.0)\n", + "Requirement already satisfied: anyio in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (3.7.1)\n", + "Requirement already satisfied: certifi in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (2024.2.2)\n", + "Collecting httpcore==1.* (from httpx<1,>=0.23.0->classiq)\n", + " Downloading httpcore-1.0.5-py3-none-any.whl (77 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m77.9/77.9 kB\u001b[0m \u001b[31m8.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: idna in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (3.7)\n", + "Requirement already satisfied: sniffio in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (1.3.1)\n", + "Collecting h11<0.15,>=0.13 (from httpcore==1.*->httpx<1,>=0.23.0->classiq)\n", + " Downloading h11-0.14.0-py3-none-any.whl (58 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m58.3/58.3 kB\u001b[0m \u001b[31m6.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (1.2.1)\n", + "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (0.12.1)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (4.51.0)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (1.4.5)\n", + "Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (9.4.0)\n", + "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (3.1.2)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (2.8.2)\n", + "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas<3.0.0,>=1.4.0->classiq) (2023.4)\n", + "Requirement already satisfied: tzdata>=2022.1 in /usr/local/lib/python3.10/dist-packages (from pandas<3.0.0,>=1.4.0->classiq) (2024.1)\n", + "Requirement already satisfied: tenacity>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from plotly<6.0.0,>=5.7.0->classiq) (8.3.0)\n", + "Collecting ply (from Pyomo<6.6,>=6.5->classiq)\n", + " Downloading ply-3.11-py2.py3-none-any.whl (49 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m49.6/49.6 kB\u001b[0m \u001b[31m5.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: mpmath>=0.19 in /usr/local/lib/python3.10/dist-packages (from sympy<1.11.0,>=1.9.0->classiq) (1.3.0)\n", + "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.7->matplotlib<4.0.0,>=3.4.3->classiq) (1.16.0)\n", + "Requirement already satisfied: exceptiongroup in /usr/local/lib/python3.10/dist-packages (from anyio->httpx<1,>=0.23.0->classiq) (1.2.1)\n", + "Installing collected packages: ply, sympy, Pyomo, pydantic, pathspec, packaging, networkx, mypy-extensions, h11, ConfigArgParse, httpcore, black, httpx, classiq\n", + " Attempting uninstall: sympy\n", + " Found existing installation: sympy 1.12\n", + " Uninstalling sympy-1.12:\n", + " Successfully uninstalled sympy-1.12\n", + " Attempting uninstall: pydantic\n", + " Found existing installation: pydantic 2.7.1\n", + " Uninstalling pydantic-2.7.1:\n", + " Successfully uninstalled pydantic-2.7.1\n", + " Attempting uninstall: packaging\n", + " Found existing installation: packaging 24.0\n", + " Uninstalling packaging-24.0:\n", + " Successfully uninstalled packaging-24.0\n", + " Attempting uninstall: networkx\n", + " Found existing installation: networkx 3.3\n", + " Uninstalling networkx-3.3:\n", + " Successfully uninstalled networkx-3.3\n", + "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", + "torch 2.3.0+cu121 requires nvidia-cublas-cu12==12.1.3.1; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cuda-cupti-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cuda-nvrtc-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cuda-runtime-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cudnn-cu12==8.9.2.26; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cufft-cu12==11.0.2.54; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-curand-cu12==10.3.2.106; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cusolver-cu12==11.4.5.107; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cusparse-cu12==12.1.0.106; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-nccl-cu12==2.20.5; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-nvtx-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\u001b[0m\u001b[31m\n", + "\u001b[0mSuccessfully installed ConfigArgParse-1.7 Pyomo-6.5.0 black-24.4.2 classiq-0.41.2 h11-0.14.0 httpcore-1.0.5 httpx-0.27.0 mypy-extensions-1.0.0 networkx-2.8.8 packaging-22.0 pathspec-0.12.1 ply-3.11 pydantic-1.10.15 sympy-1.10.1\n" + ] + } + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "id": "yLmI64uHOPPX" + }, + "outputs": [], + "source": [ + "from classiq import *" + ] + }, + { + "cell_type": "code", + "source": [ + "import classiq\n", + "classiq.authenticate()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "Js5S3AMtP6LJ", + "outputId": "d3f334a9-6dcf-4e2a-f547-b68342d126ea" + }, + "execution_count": 3, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Your user code: PXGV-WPZJ\n", + "If a browser doesn't automatically open, please visit this URL from any trusted device: https://auth.classiq.io/activate?user_code=PXGV-WPZJ\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "DLFwpFN8OPPd" + }, + "source": [ + "### Exercise 6 - Exponentiation and Pauli Operators\n", + "\n", + "The Qmod language supports different classical types: scalars, arrays, and structs. Structs are objects with member variables, or fields.\n", + "\n", + "See also [Classical Types](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/classical-types/#structs).\n", + "\n", + "The builtin struct type `PauliTerm` is defined as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "id": "EEjNNhY3OPPe" + }, + "outputs": [], + "source": [ + "@struct\n", + "class PauliTerm:\n", + " pauli: CArray[Pauli]\n", + " coefficient: CReal" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "oOlb_yyJOPPg" + }, + "source": [ + "Note that `Pauli` is an enum for all the Pauli matrices (I, X, Y, Z).\n", + "\n", + "Pauli based hamiltonian can be represented as a list of `PauliTerm`s. A Pauli operator defined this way is the argument to a hamiltonian evolution functions.\n", + "\n", + "In this exercise we will use the Suzuki-Trotter function to find the evolution of `H=0.5XZXX + 0.25YIZI + 0.3 XIZY` (captured as a literal value for the pauli-operator), with the evolution coefficient being 3, the order being 2, and use 4 repetitions.\n", + "\n", + "The declaration of the `suzuki_trotter` function is:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "uO1d4ba3OPPi" + }, + "outputs": [], + "source": [ + "@qfunc(external=True)\n", + "def suzuki_trotter(\n", + " pauli_operator: CArray[PauliTerm],\n", + " evolution_coefficient: CReal,\n", + " order: CInt,\n", + " repetitions: CInt,\n", + " qbv: QArray[QBit],\n", + ") -> None:\n", + " pass" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "jGcQahGvOPPk" + }, + "source": [ + "Fill in the missing parts of the following code in order to complete this exercise:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "-ZPy2HjIOPPl", + "outputId": "fc91afc7-7cfc-4efe-b1d4-c3da484dfaeb" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/695d17a9-edaa-4811-8aea-04f575daf238?version=0.41.2\n" + ] + } + ], + "source": [ + "from classiq import *\n", + "\n", + "\n", + "@qfunc\n", + "def main(q: Output[QArray[QBit]]) -> None:\n", + " allocate(4, q)\n", + " suzuki_trotter(\n", + " [\n", + " PauliTerm(pauli=[Pauli.X, Pauli.Z, Pauli.X, Pauli.X], coefficient=0.5),\n", + " PauliTerm(pauli=[Pauli.Y, Pauli.I, Pauli.Z, Pauli.I], coefficient=0.25),\n", + " PauliTerm(pauli=[Pauli.X, Pauli.I, Pauli.Z, Pauli.Y], coefficient=0.3),\n", + " ],\n", + " #[0.5XZXX + 0.25YIZI + 0.3 XIZY],\n", + " evolution_coefficient=3,\n", + " repetitions=4,\n", + " order=2,\n", + " qbv=q,\n", + " )\n", + "\n", + "\n", + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + }, + { + "cell_type": "markdown", + "source": [], + "metadata": { + "id": "a2tiByHPVxIm" + } + }, + { + "cell_type": "markdown", + "metadata": { + "id": "YVauJN06OPPr" + }, + "source": [ + "### Exercise 7 - Basic Arithmetics\n", + "\n", + "#### Exercise 7a\n", + "In this exercise we will use quantum numeric variables and calculate expressions over them.\n", + "\n", + "See details on the syntax of numeric types under [Quantum types](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/quantum-types/#syntax).\n", + "See more on quantum expressions under [Numeric assignment](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/statements/numeric-assignment/)\n", + "\n", + "Create the following quantum programs:\n", + "1. Initialize variables `x=2`, `y=7` and computes `res = x + y`.\n", + "2. Initialize variables `x=2`, `y=7` and computes `res = x * y`.\n", + "3. Initialize variables `x=2`, `y=7`, `z=1` and computes `res = x * y - z`.\n", + "\n", + "Guidance:\n", + "* Use the operator `|=` to perform out-of-place assignment of arithmetic expression.\n", + "* To initialize the variables, use the function `prepare_int`.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "2Ad42tEjOPPt", + "outputId": "0e3c5195-3914-4296-b400-067df17efb67" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/f6ab280e-a2d2-4b4f-9fe6-6063ec883f5c?version=0.41.2\n" + ] + } + ], + "source": [ + "from classiq import *\n", + "\n", + "# Your code here:\n", + "@qfunc\n", + "def main(res1: Output[QNum], res2: Output[QNum], res3: Output[QNum], x: Output[QNum], y: Output[QNum], z: Output[QNum]):\n", + " prepare_int(2, x)\n", + " prepare_int(7, y)\n", + " prepare_int(1, z)\n", + " res1 |= x + y\n", + " res2 |= x * y\n", + " res3 |= x * y - z\n", + "\n", + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "oD9FFw0hOPPv" + }, + "source": [ + "#### Exercise 7b\n", + "Declare `x` to be a 2-qubit variable and `y` to be 3-qubit variable.\n", + "\n", + "We will perform an addition of two superposition states: `x` is an equal superposition of `0` and `2`, and `y` is an equal superposition of `1`, `2`, `3`, and `6`.\n", + "\n", + "1. Use `prepare_state` to initialize `x` and `y`. Note that `prepare_state` works with probabilities, not amplitudes.\n", + " The declaration of the `prepare_state` function is:\n", + " ```\n", + " @qfunc(external=True)\n", + " def prepare_state(\n", + " probabilities: CArray[CReal],\n", + " bound: CReal,\n", + " out: Output[QArray[QBit]],\n", + " ) -> None:\n", + " pass\n", + " ```\n", + " (Set the bound to 0 in your code)\n", + "2. Compute `res = x + y`. Execute the resulting circuit. What did you get?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "J5aQnWHEOPPx", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "ea1de78b-3848-4255-d430-b1ae0bcc7cd2" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/6ee76891-980f-4b54-8403-44cb5e8b590c?version=0.41.2\n" + ] + } + ], + "source": [ + "from classiq import *\n", + "\n", + "# Your code here:\n", + "@qfunc\n", + "def main(res: Output[QNum], x: Output[QNum], y: Output[QNum]):\n", + " prepare_state([0.5, 0, 0.5, 0], bound=0.01, out=x)\n", + " prepare_state([0, 0.25, 0.25, 0.25, 0, 0, 0.25, 0], bound=0.01, out=y)\n", + " res |= x + y\n", + "\n", + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "QguPlrPLOPPz" + }, + "source": [ + "### Exercise 8 - Within-Apply\n", + "\n", + "The within-apply statement applies the pattern `U_dagger V U` that appears frequently in quantum computing.\n", + "It allows you to compute some function `V` within the context of another function `U`, and afterward uncompute `U` in order to release auxiliary qubits storing intermediate results.\n", + "\n", + "See also [Within Apply](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/statements/within-apply/).\n", + "\n", + "#### Exercise 8a\n", + "\n", + "In this exercise, we will use within-apply to compute an arithmetic expression in steps.\n", + "\n", + "Use the `within_apply` operation to calculate `res = x + y + z` from a two-variable addition building block with the following steps:\n", + "1. Add `x` and `y`\n", + "2. Add the result to `z`\n", + "3. Uncompute the result of the first operation\n", + "\n", + "For simplicity, initialize the registers to simple integers: `x=3`, `y=5`, `z=2`.\n", + "\n", + "Hints:\n", + "\n", + "* Use a temporary variable.\n", + "* Wrap the arithmetic operation in a function.\n", + "\n", + "Execute the circuit and make sure you obtain the expected result." + ] + }, + { + "cell_type": "code", + "source": [], + "metadata": { + "id": "kvEu55w7Ssac" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "gOMBLIf7OPP1", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "ee6530e4-3fa1-4d46-d151-9862ee961b5e" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/b9d46036-f719-4772-8e97-7a41269e10c1?version=0.41.2\n" + ] + } + ], + "source": [ + "from classiq import *\n", + "\n", + "# Your code here:\n", + "@qfunc\n", + "def q_add(res: Output[QNum], a:QNum, b:QNum) -> None:\n", + " res |= a + b\n", + "\n", + "@qfunc\n", + "def main(res: Output[QNum], x: Output[QNum],\n", + " y: Output[QNum], z: Output[QNum]) -> None:\n", + " prepare_int(3, x)\n", + " prepare_int(5, y)\n", + " prepare_int(2, z)\n", + " aux = QNum('aux')\n", + " within_apply(compute = lambda: q_add(aux, x, y),\n", + " action = lambda: q_add(res, aux, z))\n", + "\n", + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)\n", + "#13 qbits" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "umMhnAelOPP2" + }, + "source": [ + "#### Exercise 8b\n", + "\n", + "Why should we use `within-apply` and not just write three concatenated functions?\n", + "To understand the motivation, we will create another arithmetic circuit.\n", + "This time, however, we will also set Classiq’s synthesis engine to optimize on the circuit’s number of qubits, i.e., its width.\n", + "\n", + "Setting constraints can be done via the `set_constraints` operation - see [here](https://docs.classiq.io/latest/user-guide/platform/synthesis/constraints/).\n", + "\n", + "Perform the operation `res = w + x + y + z`, where w is initialized to 4 and the rest as before:\n", + "\n", + "1. Add `x` and `y` (as part of the `within_apply` operation)\n", + "2. Add the result to `z` (as part of the within_apply operation)\n", + "3. Uncompute the result of the first operation (as part of the `within_apply` operation)\n", + "4. Add the result of the second operation to `w`. There’s no need to perform another uncomputation, as this brings our calculation to an end.\n", + "\n", + "Create the model, optimize on the circuit’s width, and run the circuit. Can you identify where qubits have been released and reused?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "ED1iDS1aOPP5", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "2260c2b1-d176-4c26-a83f-e0be9d1b6804" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/76b99051-ff09-4588-b522-435cd54c7223?version=0.41.2\n" + ] + } + ], + "source": [ + "from classiq import *\n", + "\n", + "# Your code here:\n", + "@qfunc\n", + "def q_add(res: Output[QNum], a:QNum, b:QNum) -> None:\n", + " res |= a + b\n", + "\n", + "@qfunc\n", + "def main(res: Output[QNum], x: Output[QNum],\n", + " y: Output[QNum], z: Output[QNum], w: Output[QNum]) -> None:\n", + " prepare_int(3, x)\n", + " prepare_int(5, y)\n", + " prepare_int(2, z)\n", + " prepare_int(4, w)\n", + " aux1 = QNum('aux1')\n", + " aux2 = QNum('aux2')\n", + " within_apply(compute = lambda: q_add(aux1, x, y),\n", + " action = lambda: q_add(aux2, aux1, z),)\n", + " res |= aux2 + w\n", + "\n", + "\n", + "\n", + "qmod = create_model(main)\n", + "qmod = set_constraints(qmod,\n", + " Constraints(optimization_parameter='width'))\n", + "qprog = synthesize(qmod)\n", + "show(qprog)\n", + "#16 qbits" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "pIBHrEOxOPP6" + }, + "source": [ + "#### Bonus: Use a Single Arithmetic Expression\n", + "\n", + "What happens when we don't manually decompose this expression?\n", + "\n", + "Use Classiq’s arithmetic engine to calculate `res |= x + y + z + w` and optimize for width.\n", + "Look at the resulting quantum program - can you identify the computation and uncomputation blocks? What else did you notice?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "ep-Efm_oOPP8", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "258d0b91-cb7a-4a25-b80d-0492e6557fe1" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/1b073d18-c8d5-4f19-8c2d-7e2f064a18bd?version=0.41.2\n" + ] + } + ], + "source": [ + "from classiq import *\n", + "\n", + "# Your code here:\n", + "@qfunc\n", + "def q_add(res: Output[QNum], a:QNum, b:QNum) -> None:\n", + " res |= a + b\n", + "\n", + "@qfunc\n", + "def main(res: Output[QNum], x: Output[QNum],\n", + " y: Output[QNum], z: Output[QNum], w: Output[QNum]) -> None:\n", + " prepare_int(3, x)\n", + " prepare_int(5, y)\n", + " prepare_int(2, z)\n", + " prepare_int(4, w)\n", + " res |= x + y + z + w\n", + "\n", + "qmod = create_model(main)\n", + "qmod = set_constraints(qmod,\n", + " Constraints(optimization_parameter='width'))\n", + "qprog = synthesize(qmod)\n", + "show(qprog)\n", + "#15 qbits" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ZV9OGqqROPP-" + }, + "source": [ + "### Exercise 9 - In-place Arithmetics\n", + "\n", + "For the following exercise we will use numeric quantum variables that represent fixed-point reals.\n", + "\n", + "Arithmetic expressions can be calculated in-place into a target variable, without allocating new qubits to store the result. This is done using the in-place-xor operator.\n", + "\n", + "See also [Numeric assignment](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/statements/numeric-assignment/#semantics).\n", + "\n", + "In-place assignment is often used to nest arithmetic expressions under quantum operators. Note that out-of-place assignment requires its left-value variable to be un-initialized, and therefore cannot be used under an operator if the variable is declared outside its scope. Applying operators to arithmetic expressions is required in many algorithms. One example is the piecewise evaluation of mathematical functions - calculating different expressions over `x` depending on the subdomain where `x` falls.\n", + "\n", + "For this exercise, replace the missing parts in the code snippet below to evaluate the result of:\n", + "\n", + "$$\n", + "f(x) = \\begin{cases}\n", + " 2x + 1 & \\text{ if } 0 \\leq x < 0.5 \\\\\n", + " x + 0.5 & \\text{ if } 0.5 \\leq x < 1\n", + " \\end{cases}\n", + "$$\n", + "\n", + "Notes:\n", + "- We cannot use `x` directly as the control variable in a `constrol` operator, because it also occurs in the nested scope. to determine if `x` is in the lower or higher half of the domain we duplicate the most significant bit onto a separate variable called `label`.\n", + "- In Python assignment operators cannot be used in lambda expressions, so the computation of the function needs to be factored out to a named Python function (but not necessarily a Qmod function).\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "P1AsWxksOPQA", + "outputId": "c56c759d-fb58-45d7-b8b6-fc801c611f11", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/d3fb232d-2ee5-4824-a49d-c7febcc4ff91?version=0.41.2\n" + ] + } + ], + "source": [ + "\n", + "from classiq import *\n", + "\n", + "\n", + "def linear_func(a: float, b: float, x: QNum, res: QNum) -> None:\n", + " res ^= a * x + b\n", + "\n", + "\n", + "@qfunc\n", + "def dup_msb(qba: QArray[QBit], msb: QBit) -> None:\n", + " CX(qba[qba.len - 1], msb)\n", + "\n", + "\n", + "@qfunc\n", + "def main(x: Output[QNum[3, False, 3]], res: Output[QNum[5, False, 3]]) -> None:\n", + " allocate(5, res)\n", + " allocate(3, x)\n", + " hadamard_transform(x)\n", + "\n", + " label = QArray(\"label\")\n", + " allocate(1, label)\n", + "\n", + " dup_msb(x, label)\n", + " control(label, lambda: linear_func(1.0, 0.5, x, res)) # 0.5 <= x < 1.0\n", + " X(label)\n", + " control(label, lambda: linear_func(2.0, 1.0, x, res)) # 0.0 <= x < 0.5\n", + "\n", + "\n", + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "OOvAn02QOPQC" + }, + "source": [ + "### Exercise 10 - State-preparation Algorithm using Quantum-if\n", + "\n", + "#### Binding\n", + "The `bind` operation allows to convert smoothly between different quantum types and split or slice bits when necessary. Here’s an example:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "id": "JCX6UMqROPQD", + "outputId": "6d35d8f5-4341-4560-b708-d70d443dab84", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/2e528279-8038-4233-b2e7-f4844d8dcaa3?version=0.41.2\n" + ] + } + ], + "source": [ + "from classiq import *\n", + "\n", + "\n", + "\n", + "from classiq import *\n", + "from math import pi\n", + "\n", + "\n", + "@qfunc\n", + "def main(res: Output[QArray[QBit]]) -> None:\n", + " x: QArray[QBit] = QArray(\"x\")\n", + " allocate(3, x)\n", + " hadamard_transform(x)\n", + "\n", + " lsb = QBit(\"lsb\")\n", + " msb = QNum(\"msb\", 2, False, 0)\n", + " bind(x, [lsb, msb])\n", + "\n", + " control(msb == 1, lambda: RY(pi / 3, lsb))\n", + " # msb==1 <==> bit1 bit2 == 01 (binary of decimal 1)\n", + "\n", + " bind([lsb, msb], res)\n", + "\n", + "model = create_model(main)\n", + "qprog = synthesize(model)\n", + "show(qprog)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "fc5-bUyKOPQF" + }, + "source": [ + "The first `bind` operation splits the 3-qubit register `x` into the 2-qubit and single-qubit registers `lsb` and `msb`, respectively.\n", + "\n", + "After the `bind` operation:\n", + "1. The registers `lsb` and `msb` can be operated on as separated registers.\n", + "2. The register`x` is consumed and can no longer be used.\n", + "\n", + "The second `bind` operation concatenates the registers to the output register `res`.\n", + "\n", + "For this exercise, fill in the missing code parts in the above snippet and use the `control` statement to manually generate the following lovely 3-qubit probability distribution: `[1/8, 1/8, 1/8, -sqrt(3)/16, 1/8 + sqrt(3)/16, 1/8, 1/8, 1/8, 1/8]`.\n", + "\n", + "The following series of gates generate it:\n", + "\n", + "Perform the Hadamard transform on all three qubits.\n", + "\n", + "Apply a rotation on the LSB (least-significant bit) conditioned by the MSB being |0> and the second to last MSB being |1>. How would you write this condition using a QNum?\n", + "\n", + "The following series of gates generate it:\n", + "1. Perform the Hadamard transform on all three qubits.\n", + "2. Apply a `pi/3` rotation on the LSB (least-significant bit) conditioned by the MSB being |0> and the second to last MSB being |1>. How would you write this condition using a QNum?\n", + "\n", + "If you want to validate your results without looking at the full solution, compare them to running using Classiq’s built-in `prepare_state` function.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "id": "nSjVMfP8OPQG", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "outputId": "5ca3382b-fcf8-4901-bf77-72eb916118a0" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/63674ff7-ef0f-4d21-8ffa-60b078c5de78?version=0.41.2\n" + ] + } + ], + "source": [ + "#version 1 with msb, lsb, H, RY\n", + "from classiq import *\n", + "from classiq.qmod.symbolic import sqrt\n", + "from math import pi\n", + "\n", + "prob_list= [\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8 - sqrt(3) / 16,\n", + " 1 / 8 + sqrt(3) / 16,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " ]\n", + "@qfunc\n", + "def pre_prepared_state(q: QArray[QBit]) -> None:\n", + " prepare_state(\n", + " [\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8 - sqrt(3) / 16,\n", + " 1 / 8 + sqrt(3) / 16,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " ],\n", + " 0.0,\n", + " q,\n", + " )\n", + "\n", + "@qfunc\n", + "def main(res: Output[QArray[QBit]]) -> None:\n", + " x: QArray[QBit] = QArray(\"x\")\n", + " allocate(3, x)\n", + " hadamard_transform(x)\n", + "\n", + " lsb = QBit(\"lsb\")\n", + " msb = QNum(\"msb\", 2, False, 0)\n", + " bind(x, [lsb, msb])\n", + "\n", + " control(msb == 1, lambda: RY(pi / 3, lsb))\n", + " # msb==1 <==> bit1 bit2 == 01 (binary of decimal 1)\n", + " bind([lsb, msb], res)\n", + "\n", + " #prepare_state(probabilities=prob_list, bound=0.0, out=res)\n", + "\n", + "model = create_model(main)\n", + "qprog = synthesize(model)\n", + "show(qprog)\n", + "\n", + "# Your code here:" + ] + }, + { + "cell_type": "code", + "source": [ + "#version 2 with prepare_state\n", + "from classiq import *\n", + "from classiq.qmod.symbolic import sqrt\n", + "from math import pi\n", + "\n", + "prob_list= [\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8 - sqrt(3) / 16,\n", + " 1 / 8 + sqrt(3) / 16,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " ]\n", + "@qfunc\n", + "def pre_prepared_state(q: Output[QArray[QBit]]) -> None:\n", + " prepare_state(\n", + " [\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8 - sqrt(3) / 16,\n", + " 1 / 8 + sqrt(3) / 16,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " ],\n", + " 0.0,\n", + " q,\n", + " )\n", + "\n", + "@qfunc\n", + "def main(res: Output[QArray[QBit]]) -> None:\n", + " prepare_state(probabilities=prob_list, bound=0.0, out=res)\n", + "\n", + "model = create_model(main)\n", + "qprog = synthesize(model)\n", + "show(qprog)\n", + "\n", + "# Your code here:" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "mp0cnm12XKjo", + "outputId": "c97473fc-1b10-4bc0-b9ec-2db111726a00" + }, + "execution_count": 29, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/ea88176e-2348-4b64-b56e-4ef2921eeb51?version=0.41.2\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [], + "metadata": { + "id": "-TDAFwWbXVeT" + } + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.8" + }, + "colab": { + "provenance": [], + "include_colab_link": true + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file From 83f7f61b7d3d9980d97004671dd8abb075a410e5 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Wed, 29 May 2024 01:32:43 +0200 Subject: [PATCH 06/83] Delete Yasir_Mansour_HW2_QClass2024.ipynb --- Yasir_Mansour_HW2_QClass2024.ipynb | 990 ----------------------------- 1 file changed, 990 deletions(-) delete mode 100644 Yasir_Mansour_HW2_QClass2024.ipynb diff --git a/Yasir_Mansour_HW2_QClass2024.ipynb b/Yasir_Mansour_HW2_QClass2024.ipynb deleted file mode 100644 index dc828df7..00000000 --- a/Yasir_Mansour_HW2_QClass2024.ipynb +++ /dev/null @@ -1,990 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "view-in-github", - "colab_type": "text" - }, - "source": [ - "\"Open" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "NbVeWUvUOPPN" - }, - "source": [ - "# The Qmod Workshop - Part 2: Higher-Level Concepts\n", - "\n", - "This is the second part of the Qmod workshop, covering exercises 6 through 10. Make sure to go through Part 1 before continuing with this notebook." - ] - }, - { - "cell_type": "code", - "source": [ - "!pip install classiq" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "collapsed": true, - "id": "CSoLXYc-P-zb", - "outputId": "32e4c151-5e82-4ff8-df53-e9ac710f2507" - }, - "execution_count": 1, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Collecting classiq\n", - " Downloading classiq-0.41.2-py3-none-any.whl (398 kB)\n", - "\u001b[?25l \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.0/398.1 kB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m\r\u001b[2K \u001b[91m━━━━━━━━━━━━━━\u001b[0m\u001b[90m╺\u001b[0m\u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m143.4/398.1 kB\u001b[0m \u001b[31m4.1 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m\r\u001b[2K \u001b[91m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[90m╺\u001b[0m \u001b[32m389.1/398.1 kB\u001b[0m \u001b[31m6.4 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m\r\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m398.1/398.1 kB\u001b[0m \u001b[31m5.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hCollecting ConfigArgParse<2.0.0,>=1.5.3 (from classiq)\n", - " Downloading ConfigArgParse-1.7-py3-none-any.whl (25 kB)\n", - "Collecting Pyomo<6.6,>=6.5 (from classiq)\n", - " Downloading Pyomo-6.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.7 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m10.7/10.7 MB\u001b[0m \u001b[31m28.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hCollecting black<25.0,>=24.0 (from classiq)\n", - " Downloading black-24.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.8 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.8/1.8 MB\u001b[0m \u001b[31m35.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hCollecting httpx<1,>=0.23.0 (from classiq)\n", - " Downloading httpx-0.27.0-py3-none-any.whl (75 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m75.6/75.6 kB\u001b[0m \u001b[31m5.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: keyring<24.0.0,>=23.5.0 in /usr/lib/python3/dist-packages (from classiq) (23.5.0)\n", - "Requirement already satisfied: matplotlib<4.0.0,>=3.4.3 in /usr/local/lib/python3.10/dist-packages (from classiq) (3.7.1)\n", - "Collecting networkx<3.0.0,>=2.5.1 (from classiq)\n", - " Downloading networkx-2.8.8-py3-none-any.whl (2.0 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.0/2.0 MB\u001b[0m \u001b[31m26.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: numexpr<3.0.0,>=2.7.3 in /usr/local/lib/python3.10/dist-packages (from classiq) (2.10.0)\n", - "Requirement already satisfied: numpy<2.0.0,>=1.20.1 in /usr/local/lib/python3.10/dist-packages (from classiq) (1.25.2)\n", - "Collecting packaging<23.0,>=22.0 (from classiq)\n", - " Downloading packaging-22.0-py3-none-any.whl (42 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m42.6/42.6 kB\u001b[0m \u001b[31m1.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: pandas<3.0.0,>=1.4.0 in /usr/local/lib/python3.10/dist-packages (from classiq) (2.0.3)\n", - "Requirement already satisfied: plotly<6.0.0,>=5.7.0 in /usr/local/lib/python3.10/dist-packages (from classiq) (5.15.0)\n", - "Collecting pydantic<2.0.0,>=1.9.1 (from classiq)\n", - " Downloading pydantic-1.10.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.1/3.1 MB\u001b[0m \u001b[31m16.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: scipy<2.0.0,>=1.10.1 in /usr/local/lib/python3.10/dist-packages (from classiq) (1.11.4)\n", - "Collecting sympy<1.11.0,>=1.9.0 (from classiq)\n", - " Downloading sympy-1.10.1-py3-none-any.whl (6.4 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m6.4/6.4 MB\u001b[0m \u001b[31m34.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: tabulate<1,>=0.8.9 in /usr/local/lib/python3.10/dist-packages (from classiq) (0.9.0)\n", - "Requirement already satisfied: click>=8.0.0 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (8.1.7)\n", - "Collecting mypy-extensions>=0.4.3 (from black<25.0,>=24.0->classiq)\n", - " Downloading mypy_extensions-1.0.0-py3-none-any.whl (4.7 kB)\n", - "Collecting pathspec>=0.9.0 (from black<25.0,>=24.0->classiq)\n", - " Downloading pathspec-0.12.1-py3-none-any.whl (31 kB)\n", - "Requirement already satisfied: platformdirs>=2 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (4.2.2)\n", - "Requirement already satisfied: tomli>=1.1.0 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (2.0.1)\n", - "Requirement already satisfied: typing-extensions>=4.0.1 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (4.11.0)\n", - "Requirement already satisfied: anyio in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (3.7.1)\n", - "Requirement already satisfied: certifi in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (2024.2.2)\n", - "Collecting httpcore==1.* (from httpx<1,>=0.23.0->classiq)\n", - " Downloading httpcore-1.0.5-py3-none-any.whl (77 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m77.9/77.9 kB\u001b[0m \u001b[31m8.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: idna in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (3.7)\n", - "Requirement already satisfied: sniffio in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (1.3.1)\n", - "Collecting h11<0.15,>=0.13 (from httpcore==1.*->httpx<1,>=0.23.0->classiq)\n", - " Downloading h11-0.14.0-py3-none-any.whl (58 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m58.3/58.3 kB\u001b[0m \u001b[31m6.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (1.2.1)\n", - "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (0.12.1)\n", - "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (4.51.0)\n", - "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (1.4.5)\n", - "Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (9.4.0)\n", - "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (3.1.2)\n", - "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (2.8.2)\n", - "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas<3.0.0,>=1.4.0->classiq) (2023.4)\n", - "Requirement already satisfied: tzdata>=2022.1 in /usr/local/lib/python3.10/dist-packages (from pandas<3.0.0,>=1.4.0->classiq) (2024.1)\n", - "Requirement already satisfied: tenacity>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from plotly<6.0.0,>=5.7.0->classiq) (8.3.0)\n", - "Collecting ply (from Pyomo<6.6,>=6.5->classiq)\n", - " Downloading ply-3.11-py2.py3-none-any.whl (49 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m49.6/49.6 kB\u001b[0m \u001b[31m5.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: mpmath>=0.19 in /usr/local/lib/python3.10/dist-packages (from sympy<1.11.0,>=1.9.0->classiq) (1.3.0)\n", - "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.7->matplotlib<4.0.0,>=3.4.3->classiq) (1.16.0)\n", - "Requirement already satisfied: exceptiongroup in /usr/local/lib/python3.10/dist-packages (from anyio->httpx<1,>=0.23.0->classiq) (1.2.1)\n", - "Installing collected packages: ply, sympy, Pyomo, pydantic, pathspec, packaging, networkx, mypy-extensions, h11, ConfigArgParse, httpcore, black, httpx, classiq\n", - " Attempting uninstall: sympy\n", - " Found existing installation: sympy 1.12\n", - " Uninstalling sympy-1.12:\n", - " Successfully uninstalled sympy-1.12\n", - " Attempting uninstall: pydantic\n", - " Found existing installation: pydantic 2.7.1\n", - " Uninstalling pydantic-2.7.1:\n", - " Successfully uninstalled pydantic-2.7.1\n", - " Attempting uninstall: packaging\n", - " Found existing installation: packaging 24.0\n", - " Uninstalling packaging-24.0:\n", - " Successfully uninstalled packaging-24.0\n", - " Attempting uninstall: networkx\n", - " Found existing installation: networkx 3.3\n", - " Uninstalling networkx-3.3:\n", - " Successfully uninstalled networkx-3.3\n", - "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", - "torch 2.3.0+cu121 requires nvidia-cublas-cu12==12.1.3.1; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cuda-cupti-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cuda-nvrtc-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cuda-runtime-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cudnn-cu12==8.9.2.26; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cufft-cu12==11.0.2.54; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-curand-cu12==10.3.2.106; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cusolver-cu12==11.4.5.107; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cusparse-cu12==12.1.0.106; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-nccl-cu12==2.20.5; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-nvtx-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\u001b[0m\u001b[31m\n", - "\u001b[0mSuccessfully installed ConfigArgParse-1.7 Pyomo-6.5.0 black-24.4.2 classiq-0.41.2 h11-0.14.0 httpcore-1.0.5 httpx-0.27.0 mypy-extensions-1.0.0 networkx-2.8.8 packaging-22.0 pathspec-0.12.1 ply-3.11 pydantic-1.10.15 sympy-1.10.1\n" - ] - } - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "id": "yLmI64uHOPPX" - }, - "outputs": [], - "source": [ - "from classiq import *" - ] - }, - { - "cell_type": "code", - "source": [ - "import classiq\n", - "classiq.authenticate()" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "id": "Js5S3AMtP6LJ", - "outputId": "d3f334a9-6dcf-4e2a-f547-b68342d126ea" - }, - "execution_count": 3, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Your user code: PXGV-WPZJ\n", - "If a browser doesn't automatically open, please visit this URL from any trusted device: https://auth.classiq.io/activate?user_code=PXGV-WPZJ\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "DLFwpFN8OPPd" - }, - "source": [ - "### Exercise 6 - Exponentiation and Pauli Operators\n", - "\n", - "The Qmod language supports different classical types: scalars, arrays, and structs. Structs are objects with member variables, or fields.\n", - "\n", - "See also [Classical Types](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/classical-types/#structs).\n", - "\n", - "The builtin struct type `PauliTerm` is defined as follows:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "id": "EEjNNhY3OPPe" - }, - "outputs": [], - "source": [ - "@struct\n", - "class PauliTerm:\n", - " pauli: CArray[Pauli]\n", - " coefficient: CReal" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "oOlb_yyJOPPg" - }, - "source": [ - "Note that `Pauli` is an enum for all the Pauli matrices (I, X, Y, Z).\n", - "\n", - "Pauli based hamiltonian can be represented as a list of `PauliTerm`s. A Pauli operator defined this way is the argument to a hamiltonian evolution functions.\n", - "\n", - "In this exercise we will use the Suzuki-Trotter function to find the evolution of `H=0.5XZXX + 0.25YIZI + 0.3 XIZY` (captured as a literal value for the pauli-operator), with the evolution coefficient being 3, the order being 2, and use 4 repetitions.\n", - "\n", - "The declaration of the `suzuki_trotter` function is:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "uO1d4ba3OPPi" - }, - "outputs": [], - "source": [ - "@qfunc(external=True)\n", - "def suzuki_trotter(\n", - " pauli_operator: CArray[PauliTerm],\n", - " evolution_coefficient: CReal,\n", - " order: CInt,\n", - " repetitions: CInt,\n", - " qbv: QArray[QBit],\n", - ") -> None:\n", - " pass" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "jGcQahGvOPPk" - }, - "source": [ - "Fill in the missing parts of the following code in order to complete this exercise:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "-ZPy2HjIOPPl", - "outputId": "fc91afc7-7cfc-4efe-b1d4-c3da484dfaeb" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/695d17a9-edaa-4811-8aea-04f575daf238?version=0.41.2\n" - ] - } - ], - "source": [ - "from classiq import *\n", - "\n", - "\n", - "@qfunc\n", - "def main(q: Output[QArray[QBit]]) -> None:\n", - " allocate(4, q)\n", - " suzuki_trotter(\n", - " [\n", - " PauliTerm(pauli=[Pauli.X, Pauli.Z, Pauli.X, Pauli.X], coefficient=0.5),\n", - " PauliTerm(pauli=[Pauli.Y, Pauli.I, Pauli.Z, Pauli.I], coefficient=0.25),\n", - " PauliTerm(pauli=[Pauli.X, Pauli.I, Pauli.Z, Pauli.Y], coefficient=0.3),\n", - " ],\n", - " #[0.5XZXX + 0.25YIZI + 0.3 XIZY],\n", - " evolution_coefficient=3,\n", - " repetitions=4,\n", - " order=2,\n", - " qbv=q,\n", - " )\n", - "\n", - "\n", - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "show(qprog)" - ] - }, - { - "cell_type": "markdown", - "source": [], - "metadata": { - "id": "a2tiByHPVxIm" - } - }, - { - "cell_type": "markdown", - "metadata": { - "id": "YVauJN06OPPr" - }, - "source": [ - "### Exercise 7 - Basic Arithmetics\n", - "\n", - "#### Exercise 7a\n", - "In this exercise we will use quantum numeric variables and calculate expressions over them.\n", - "\n", - "See details on the syntax of numeric types under [Quantum types](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/quantum-types/#syntax).\n", - "See more on quantum expressions under [Numeric assignment](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/statements/numeric-assignment/)\n", - "\n", - "Create the following quantum programs:\n", - "1. Initialize variables `x=2`, `y=7` and computes `res = x + y`.\n", - "2. Initialize variables `x=2`, `y=7` and computes `res = x * y`.\n", - "3. Initialize variables `x=2`, `y=7`, `z=1` and computes `res = x * y - z`.\n", - "\n", - "Guidance:\n", - "* Use the operator `|=` to perform out-of-place assignment of arithmetic expression.\n", - "* To initialize the variables, use the function `prepare_int`.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "2Ad42tEjOPPt", - "outputId": "0e3c5195-3914-4296-b400-067df17efb67" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/f6ab280e-a2d2-4b4f-9fe6-6063ec883f5c?version=0.41.2\n" - ] - } - ], - "source": [ - "from classiq import *\n", - "\n", - "# Your code here:\n", - "@qfunc\n", - "def main(res1: Output[QNum], res2: Output[QNum], res3: Output[QNum], x: Output[QNum], y: Output[QNum], z: Output[QNum]):\n", - " prepare_int(2, x)\n", - " prepare_int(7, y)\n", - " prepare_int(1, z)\n", - " res1 |= x + y\n", - " res2 |= x * y\n", - " res3 |= x * y - z\n", - "\n", - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "show(qprog)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "oD9FFw0hOPPv" - }, - "source": [ - "#### Exercise 7b\n", - "Declare `x` to be a 2-qubit variable and `y` to be 3-qubit variable.\n", - "\n", - "We will perform an addition of two superposition states: `x` is an equal superposition of `0` and `2`, and `y` is an equal superposition of `1`, `2`, `3`, and `6`.\n", - "\n", - "1. Use `prepare_state` to initialize `x` and `y`. Note that `prepare_state` works with probabilities, not amplitudes.\n", - " The declaration of the `prepare_state` function is:\n", - " ```\n", - " @qfunc(external=True)\n", - " def prepare_state(\n", - " probabilities: CArray[CReal],\n", - " bound: CReal,\n", - " out: Output[QArray[QBit]],\n", - " ) -> None:\n", - " pass\n", - " ```\n", - " (Set the bound to 0 in your code)\n", - "2. Compute `res = x + y`. Execute the resulting circuit. What did you get?" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "J5aQnWHEOPPx", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "ea1de78b-3848-4255-d430-b1ae0bcc7cd2" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/6ee76891-980f-4b54-8403-44cb5e8b590c?version=0.41.2\n" - ] - } - ], - "source": [ - "from classiq import *\n", - "\n", - "# Your code here:\n", - "@qfunc\n", - "def main(res: Output[QNum], x: Output[QNum], y: Output[QNum]):\n", - " prepare_state([0.5, 0, 0.5, 0], bound=0.01, out=x)\n", - " prepare_state([0, 0.25, 0.25, 0.25, 0, 0, 0.25, 0], bound=0.01, out=y)\n", - " res |= x + y\n", - "\n", - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "show(qprog)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "QguPlrPLOPPz" - }, - "source": [ - "### Exercise 8 - Within-Apply\n", - "\n", - "The within-apply statement applies the pattern `U_dagger V U` that appears frequently in quantum computing.\n", - "It allows you to compute some function `V` within the context of another function `U`, and afterward uncompute `U` in order to release auxiliary qubits storing intermediate results.\n", - "\n", - "See also [Within Apply](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/statements/within-apply/).\n", - "\n", - "#### Exercise 8a\n", - "\n", - "In this exercise, we will use within-apply to compute an arithmetic expression in steps.\n", - "\n", - "Use the `within_apply` operation to calculate `res = x + y + z` from a two-variable addition building block with the following steps:\n", - "1. Add `x` and `y`\n", - "2. Add the result to `z`\n", - "3. Uncompute the result of the first operation\n", - "\n", - "For simplicity, initialize the registers to simple integers: `x=3`, `y=5`, `z=2`.\n", - "\n", - "Hints:\n", - "\n", - "* Use a temporary variable.\n", - "* Wrap the arithmetic operation in a function.\n", - "\n", - "Execute the circuit and make sure you obtain the expected result." - ] - }, - { - "cell_type": "code", - "source": [], - "metadata": { - "id": "kvEu55w7Ssac" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "gOMBLIf7OPP1", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "ee6530e4-3fa1-4d46-d151-9862ee961b5e" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/b9d46036-f719-4772-8e97-7a41269e10c1?version=0.41.2\n" - ] - } - ], - "source": [ - "from classiq import *\n", - "\n", - "# Your code here:\n", - "@qfunc\n", - "def q_add(res: Output[QNum], a:QNum, b:QNum) -> None:\n", - " res |= a + b\n", - "\n", - "@qfunc\n", - "def main(res: Output[QNum], x: Output[QNum],\n", - " y: Output[QNum], z: Output[QNum]) -> None:\n", - " prepare_int(3, x)\n", - " prepare_int(5, y)\n", - " prepare_int(2, z)\n", - " aux = QNum('aux')\n", - " within_apply(compute = lambda: q_add(aux, x, y),\n", - " action = lambda: q_add(res, aux, z))\n", - "\n", - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "show(qprog)\n", - "#13 qbits" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "umMhnAelOPP2" - }, - "source": [ - "#### Exercise 8b\n", - "\n", - "Why should we use `within-apply` and not just write three concatenated functions?\n", - "To understand the motivation, we will create another arithmetic circuit.\n", - "This time, however, we will also set Classiq’s synthesis engine to optimize on the circuit’s number of qubits, i.e., its width.\n", - "\n", - "Setting constraints can be done via the `set_constraints` operation - see [here](https://docs.classiq.io/latest/user-guide/platform/synthesis/constraints/).\n", - "\n", - "Perform the operation `res = w + x + y + z`, where w is initialized to 4 and the rest as before:\n", - "\n", - "1. Add `x` and `y` (as part of the `within_apply` operation)\n", - "2. Add the result to `z` (as part of the within_apply operation)\n", - "3. Uncompute the result of the first operation (as part of the `within_apply` operation)\n", - "4. Add the result of the second operation to `w`. There’s no need to perform another uncomputation, as this brings our calculation to an end.\n", - "\n", - "Create the model, optimize on the circuit’s width, and run the circuit. Can you identify where qubits have been released and reused?" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "ED1iDS1aOPP5", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "2260c2b1-d176-4c26-a83f-e0be9d1b6804" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/76b99051-ff09-4588-b522-435cd54c7223?version=0.41.2\n" - ] - } - ], - "source": [ - "from classiq import *\n", - "\n", - "# Your code here:\n", - "@qfunc\n", - "def q_add(res: Output[QNum], a:QNum, b:QNum) -> None:\n", - " res |= a + b\n", - "\n", - "@qfunc\n", - "def main(res: Output[QNum], x: Output[QNum],\n", - " y: Output[QNum], z: Output[QNum], w: Output[QNum]) -> None:\n", - " prepare_int(3, x)\n", - " prepare_int(5, y)\n", - " prepare_int(2, z)\n", - " prepare_int(4, w)\n", - " aux1 = QNum('aux1')\n", - " aux2 = QNum('aux2')\n", - " within_apply(compute = lambda: q_add(aux1, x, y),\n", - " action = lambda: q_add(aux2, aux1, z),)\n", - " res |= aux2 + w\n", - "\n", - "\n", - "\n", - "qmod = create_model(main)\n", - "qmod = set_constraints(qmod,\n", - " Constraints(optimization_parameter='width'))\n", - "qprog = synthesize(qmod)\n", - "show(qprog)\n", - "#16 qbits" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "pIBHrEOxOPP6" - }, - "source": [ - "#### Bonus: Use a Single Arithmetic Expression\n", - "\n", - "What happens when we don't manually decompose this expression?\n", - "\n", - "Use Classiq’s arithmetic engine to calculate `res |= x + y + z + w` and optimize for width.\n", - "Look at the resulting quantum program - can you identify the computation and uncomputation blocks? What else did you notice?" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "ep-Efm_oOPP8", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "258d0b91-cb7a-4a25-b80d-0492e6557fe1" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/1b073d18-c8d5-4f19-8c2d-7e2f064a18bd?version=0.41.2\n" - ] - } - ], - "source": [ - "from classiq import *\n", - "\n", - "# Your code here:\n", - "@qfunc\n", - "def q_add(res: Output[QNum], a:QNum, b:QNum) -> None:\n", - " res |= a + b\n", - "\n", - "@qfunc\n", - "def main(res: Output[QNum], x: Output[QNum],\n", - " y: Output[QNum], z: Output[QNum], w: Output[QNum]) -> None:\n", - " prepare_int(3, x)\n", - " prepare_int(5, y)\n", - " prepare_int(2, z)\n", - " prepare_int(4, w)\n", - " res |= x + y + z + w\n", - "\n", - "qmod = create_model(main)\n", - "qmod = set_constraints(qmod,\n", - " Constraints(optimization_parameter='width'))\n", - "qprog = synthesize(qmod)\n", - "show(qprog)\n", - "#15 qbits" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "ZV9OGqqROPP-" - }, - "source": [ - "### Exercise 9 - In-place Arithmetics\n", - "\n", - "For the following exercise we will use numeric quantum variables that represent fixed-point reals.\n", - "\n", - "Arithmetic expressions can be calculated in-place into a target variable, without allocating new qubits to store the result. This is done using the in-place-xor operator.\n", - "\n", - "See also [Numeric assignment](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/statements/numeric-assignment/#semantics).\n", - "\n", - "In-place assignment is often used to nest arithmetic expressions under quantum operators. Note that out-of-place assignment requires its left-value variable to be un-initialized, and therefore cannot be used under an operator if the variable is declared outside its scope. Applying operators to arithmetic expressions is required in many algorithms. One example is the piecewise evaluation of mathematical functions - calculating different expressions over `x` depending on the subdomain where `x` falls.\n", - "\n", - "For this exercise, replace the missing parts in the code snippet below to evaluate the result of:\n", - "\n", - "$$\n", - "f(x) = \\begin{cases}\n", - " 2x + 1 & \\text{ if } 0 \\leq x < 0.5 \\\\\n", - " x + 0.5 & \\text{ if } 0.5 \\leq x < 1\n", - " \\end{cases}\n", - "$$\n", - "\n", - "Notes:\n", - "- We cannot use `x` directly as the control variable in a `constrol` operator, because it also occurs in the nested scope. to determine if `x` is in the lower or higher half of the domain we duplicate the most significant bit onto a separate variable called `label`.\n", - "- In Python assignment operators cannot be used in lambda expressions, so the computation of the function needs to be factored out to a named Python function (but not necessarily a Qmod function).\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "P1AsWxksOPQA", - "outputId": "c56c759d-fb58-45d7-b8b6-fc801c611f11", - "colab": { - "base_uri": "https://localhost:8080/" - } - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/d3fb232d-2ee5-4824-a49d-c7febcc4ff91?version=0.41.2\n" - ] - } - ], - "source": [ - "\n", - "from classiq import *\n", - "\n", - "\n", - "def linear_func(a: float, b: float, x: QNum, res: QNum) -> None:\n", - " res ^= a * x + b\n", - "\n", - "\n", - "@qfunc\n", - "def dup_msb(qba: QArray[QBit], msb: QBit) -> None:\n", - " CX(qba[qba.len - 1], msb)\n", - "\n", - "\n", - "@qfunc\n", - "def main(x: Output[QNum[3, False, 3]], res: Output[QNum[5, False, 3]]) -> None:\n", - " allocate(5, res)\n", - " allocate(3, x)\n", - " hadamard_transform(x)\n", - "\n", - " label = QArray(\"label\")\n", - " allocate(1, label)\n", - "\n", - " dup_msb(x, label)\n", - " control(label, lambda: linear_func(1.0, 0.5, x, res)) # 0.5 <= x < 1.0\n", - " X(label)\n", - " control(label, lambda: linear_func(2.0, 1.0, x, res)) # 0.0 <= x < 0.5\n", - "\n", - "\n", - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "show(qprog)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "OOvAn02QOPQC" - }, - "source": [ - "### Exercise 10 - State-preparation Algorithm using Quantum-if\n", - "\n", - "#### Binding\n", - "The `bind` operation allows to convert smoothly between different quantum types and split or slice bits when necessary. Here’s an example:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "id": "JCX6UMqROPQD", - "outputId": "6d35d8f5-4341-4560-b708-d70d443dab84", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - } - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/2e528279-8038-4233-b2e7-f4844d8dcaa3?version=0.41.2\n" - ] - } - ], - "source": [ - "from classiq import *\n", - "\n", - "\n", - "\n", - "from classiq import *\n", - "from math import pi\n", - "\n", - "\n", - "@qfunc\n", - "def main(res: Output[QArray[QBit]]) -> None:\n", - " x: QArray[QBit] = QArray(\"x\")\n", - " allocate(3, x)\n", - " hadamard_transform(x)\n", - "\n", - " lsb = QBit(\"lsb\")\n", - " msb = QNum(\"msb\", 2, False, 0)\n", - " bind(x, [lsb, msb])\n", - "\n", - " control(msb == 1, lambda: RY(pi / 3, lsb))\n", - " # msb==1 <==> bit1 bit2 == 01 (binary of decimal 1)\n", - "\n", - " bind([lsb, msb], res)\n", - "\n", - "model = create_model(main)\n", - "qprog = synthesize(model)\n", - "show(qprog)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "fc5-bUyKOPQF" - }, - "source": [ - "The first `bind` operation splits the 3-qubit register `x` into the 2-qubit and single-qubit registers `lsb` and `msb`, respectively.\n", - "\n", - "After the `bind` operation:\n", - "1. The registers `lsb` and `msb` can be operated on as separated registers.\n", - "2. The register`x` is consumed and can no longer be used.\n", - "\n", - "The second `bind` operation concatenates the registers to the output register `res`.\n", - "\n", - "For this exercise, fill in the missing code parts in the above snippet and use the `control` statement to manually generate the following lovely 3-qubit probability distribution: `[1/8, 1/8, 1/8, -sqrt(3)/16, 1/8 + sqrt(3)/16, 1/8, 1/8, 1/8, 1/8]`.\n", - "\n", - "The following series of gates generate it:\n", - "\n", - "Perform the Hadamard transform on all three qubits.\n", - "\n", - "Apply a rotation on the LSB (least-significant bit) conditioned by the MSB being |0> and the second to last MSB being |1>. How would you write this condition using a QNum?\n", - "\n", - "The following series of gates generate it:\n", - "1. Perform the Hadamard transform on all three qubits.\n", - "2. Apply a `pi/3` rotation on the LSB (least-significant bit) conditioned by the MSB being |0> and the second to last MSB being |1>. How would you write this condition using a QNum?\n", - "\n", - "If you want to validate your results without looking at the full solution, compare them to running using Classiq’s built-in `prepare_state` function.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": { - "id": "nSjVMfP8OPQG", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "outputId": "5ca3382b-fcf8-4901-bf77-72eb916118a0" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/63674ff7-ef0f-4d21-8ffa-60b078c5de78?version=0.41.2\n" - ] - } - ], - "source": [ - "#version 1 with msb, lsb, H, RY\n", - "from classiq import *\n", - "from classiq.qmod.symbolic import sqrt\n", - "from math import pi\n", - "\n", - "prob_list= [\n", - " 1 / 8,\n", - " 1 / 8,\n", - " 1 / 8 - sqrt(3) / 16,\n", - " 1 / 8 + sqrt(3) / 16,\n", - " 1 / 8,\n", - " 1 / 8,\n", - " 1 / 8,\n", - " 1 / 8,\n", - " ]\n", - "@qfunc\n", - "def pre_prepared_state(q: QArray[QBit]) -> None:\n", - " prepare_state(\n", - " [\n", - " 1 / 8,\n", - " 1 / 8,\n", - " 1 / 8 - sqrt(3) / 16,\n", - " 1 / 8 + sqrt(3) / 16,\n", - " 1 / 8,\n", - " 1 / 8,\n", - " 1 / 8,\n", - " 1 / 8,\n", - " ],\n", - " 0.0,\n", - " q,\n", - " )\n", - "\n", - "@qfunc\n", - "def main(res: Output[QArray[QBit]]) -> None:\n", - " x: QArray[QBit] = QArray(\"x\")\n", - " allocate(3, x)\n", - " hadamard_transform(x)\n", - "\n", - " lsb = QBit(\"lsb\")\n", - " msb = QNum(\"msb\", 2, False, 0)\n", - " bind(x, [lsb, msb])\n", - "\n", - " control(msb == 1, lambda: RY(pi / 3, lsb))\n", - " # msb==1 <==> bit1 bit2 == 01 (binary of decimal 1)\n", - " bind([lsb, msb], res)\n", - "\n", - " #prepare_state(probabilities=prob_list, bound=0.0, out=res)\n", - "\n", - "model = create_model(main)\n", - "qprog = synthesize(model)\n", - "show(qprog)\n", - "\n", - "# Your code here:" - ] - }, - { - "cell_type": "code", - "source": [ - "#version 2 with prepare_state\n", - "from classiq import *\n", - "from classiq.qmod.symbolic import sqrt\n", - "from math import pi\n", - "\n", - "prob_list= [\n", - " 1 / 8,\n", - " 1 / 8,\n", - " 1 / 8 - sqrt(3) / 16,\n", - " 1 / 8 + sqrt(3) / 16,\n", - " 1 / 8,\n", - " 1 / 8,\n", - " 1 / 8,\n", - " 1 / 8,\n", - " ]\n", - "@qfunc\n", - "def pre_prepared_state(q: Output[QArray[QBit]]) -> None:\n", - " prepare_state(\n", - " [\n", - " 1 / 8,\n", - " 1 / 8,\n", - " 1 / 8 - sqrt(3) / 16,\n", - " 1 / 8 + sqrt(3) / 16,\n", - " 1 / 8,\n", - " 1 / 8,\n", - " 1 / 8,\n", - " 1 / 8,\n", - " ],\n", - " 0.0,\n", - " q,\n", - " )\n", - "\n", - "@qfunc\n", - "def main(res: Output[QArray[QBit]]) -> None:\n", - " prepare_state(probabilities=prob_list, bound=0.0, out=res)\n", - "\n", - "model = create_model(main)\n", - "qprog = synthesize(model)\n", - "show(qprog)\n", - "\n", - "# Your code here:" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "id": "mp0cnm12XKjo", - "outputId": "c97473fc-1b10-4bc0-b9ec-2db111726a00" - }, - "execution_count": 29, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/ea88176e-2348-4b64-b56e-4ef2921eeb51?version=0.41.2\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "source": [], - "metadata": { - "id": "-TDAFwWbXVeT" - } - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.8" - }, - "colab": { - "provenance": [], - "include_colab_link": true - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} \ No newline at end of file From a71db8197ec4734343d97f1958137c48efc9e5f9 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Mon, 3 Jun 2024 04:10:31 +0200 Subject: [PATCH 07/83] Created using Colab --- .../Submissions/Yasir_Mansour_HW3_VQE.ipynb | 576 ++++++++++++++++++ 1 file changed, 576 insertions(+) create mode 100644 community/QClass_2024/Submissions/Yasir_Mansour_HW3_VQE.ipynb diff --git a/community/QClass_2024/Submissions/Yasir_Mansour_HW3_VQE.ipynb b/community/QClass_2024/Submissions/Yasir_Mansour_HW3_VQE.ipynb new file mode 100644 index 00000000..a221f018 --- /dev/null +++ b/community/QClass_2024/Submissions/Yasir_Mansour_HW3_VQE.ipynb @@ -0,0 +1,576 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "id": "fc72d98f-8993-4bd4-a545-23d122f3df71", + "metadata": { + "id": "fc72d98f-8993-4bd4-a545-23d122f3df71" + }, + "source": [ + "# H₂ Molecule Homework Assignment\n", + "### Quantum Software Development Journey: From Theory to Application with Classiq - Part 3\n", + "\n", + "- Similarly to what we have done in class, in this exercise we will implement the VQE on H2 molecule.\n", + "- This time instead of using the built-in methods and functions (such as `Molecule` and `MoleculeProblem`) to difne and solve the problem, you will be provided with a two qubits Hamiltonian." + ] + }, + { + "cell_type": "markdown", + "id": "56eda6d8-76c4-4862-b914-0c4598d67274", + "metadata": { + "id": "56eda6d8-76c4-4862-b914-0c4598d67274" + }, + "source": [ + "## Submission\n", + "- Submit the completed Jupyter notebook and report via GitHub. Ensure all files are correctly named and organized.\n", + "- Use the Typeform link provided in the submission folder to confirm your submission.\n", + "\n", + "## Additional Resources\n", + "- [Classiq Documentation](https://docs.classiq.io/latest/)\n", + "- The notebook from live session #3\n", + "\n", + "## Important Dates\n", + "- **Assignment Release:** 22.5.2024\n", + "- **Submission Deadline:** 3.6.2024 (7 A.M GMT+3)\n", + "\n", + "---\n", + "\n", + "Happy coding and good luck!" + ] + }, + { + "cell_type": "markdown", + "id": "d41e969d-f6a7-4ff7-9660-19ce6c97ba6b", + "metadata": { + "id": "d41e969d-f6a7-4ff7-9660-19ce6c97ba6b" + }, + "source": [ + "### Part 1" + ] + }, + { + "cell_type": "markdown", + "id": "f710d6f4-d40b-42d5-b524-c6acb8059fe2", + "metadata": { + "id": "f710d6f4-d40b-42d5-b524-c6acb8059fe2" + }, + "source": [ + "Given the following Hamiltonian:" + ] + }, + { + "cell_type": "markdown", + "id": "6ba8a6f1-3259-4492-a1ca-3abde7530cd4", + "metadata": { + "id": "6ba8a6f1-3259-4492-a1ca-3abde7530cd4" + }, + "source": [ + "$$\n", + "\\hat{H} = -1.0523 \\cdot (I \\otimes I) + 0.3979 \\cdot (I \\otimes Z) - 0.3979 \\cdot (Z \\otimes I) - 0.0112 \\cdot (Z \\otimes Z) + 0.1809 \\cdot (X \\otimes X)\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "736d275c-9a5a-4c08-b891-3078430dc6c1", + "metadata": { + "id": "736d275c-9a5a-4c08-b891-3078430dc6c1" + }, + "source": [ + "Complete the following code" + ] + }, + { + "cell_type": "code", + "source": [ + "!pip install classiq" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "collapsed": true, + "id": "DQOxbZxjrN5r", + "outputId": "7ffed65a-717f-4f7a-d969-d999a1fa6611" + }, + "id": "DQOxbZxjrN5r", + "execution_count": 1, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Collecting classiq\n", + " Downloading classiq-0.42.0-py3-none-any.whl (401 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m401.5/401.5 kB\u001b[0m \u001b[31m2.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting ConfigArgParse<2.0.0,>=1.5.3 (from classiq)\n", + " Downloading ConfigArgParse-1.7-py3-none-any.whl (25 kB)\n", + "Collecting Pyomo<6.6,>=6.5 (from classiq)\n", + " Downloading Pyomo-6.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.7 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m10.7/10.7 MB\u001b[0m \u001b[31m24.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting black<25.0,>=24.0 (from classiq)\n", + " Downloading black-24.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.8 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.8/1.8 MB\u001b[0m \u001b[31m14.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting httpx<1,>=0.23.0 (from classiq)\n", + " Downloading httpx-0.27.0-py3-none-any.whl (75 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m75.6/75.6 kB\u001b[0m \u001b[31m3.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: keyring<24.0.0,>=23.5.0 in /usr/lib/python3/dist-packages (from classiq) (23.5.0)\n", + "Requirement already satisfied: matplotlib<4.0.0,>=3.4.3 in /usr/local/lib/python3.10/dist-packages (from classiq) (3.7.1)\n", + "Collecting networkx<3.0.0,>=2.5.1 (from classiq)\n", + " Downloading networkx-2.8.8-py3-none-any.whl (2.0 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.0/2.0 MB\u001b[0m \u001b[31m51.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: numexpr<3.0.0,>=2.7.3 in /usr/local/lib/python3.10/dist-packages (from classiq) (2.10.0)\n", + "Requirement already satisfied: numpy<2.0.0,>=1.20.1 in /usr/local/lib/python3.10/dist-packages (from classiq) (1.25.2)\n", + "Collecting packaging<23.0,>=22.0 (from classiq)\n", + " Downloading packaging-22.0-py3-none-any.whl (42 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m42.6/42.6 kB\u001b[0m \u001b[31m2.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: pandas<3.0.0,>=1.4.0 in /usr/local/lib/python3.10/dist-packages (from classiq) (2.0.3)\n", + "Requirement already satisfied: plotly<6.0.0,>=5.7.0 in /usr/local/lib/python3.10/dist-packages (from classiq) (5.15.0)\n", + "Collecting pydantic<2.0.0,>=1.9.1 (from classiq)\n", + " Downloading pydantic-1.10.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.1/3.1 MB\u001b[0m \u001b[31m36.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: scipy<2.0.0,>=1.10.1 in /usr/local/lib/python3.10/dist-packages (from classiq) (1.11.4)\n", + "Collecting sympy<1.11.0,>=1.9.0 (from classiq)\n", + " Downloading sympy-1.10.1-py3-none-any.whl (6.4 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m6.4/6.4 MB\u001b[0m \u001b[31m51.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: tabulate<1,>=0.8.9 in /usr/local/lib/python3.10/dist-packages (from classiq) (0.9.0)\n", + "Requirement already satisfied: click>=8.0.0 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (8.1.7)\n", + "Collecting mypy-extensions>=0.4.3 (from black<25.0,>=24.0->classiq)\n", + " Downloading mypy_extensions-1.0.0-py3-none-any.whl (4.7 kB)\n", + "Collecting pathspec>=0.9.0 (from black<25.0,>=24.0->classiq)\n", + " Downloading pathspec-0.12.1-py3-none-any.whl (31 kB)\n", + "Requirement already satisfied: platformdirs>=2 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (4.2.2)\n", + "Requirement already satisfied: tomli>=1.1.0 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (2.0.1)\n", + "Requirement already satisfied: typing-extensions>=4.0.1 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (4.11.0)\n", + "Requirement already satisfied: anyio in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (3.7.1)\n", + "Requirement already satisfied: certifi in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (2024.2.2)\n", + "Collecting httpcore==1.* (from httpx<1,>=0.23.0->classiq)\n", + " Downloading httpcore-1.0.5-py3-none-any.whl (77 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m77.9/77.9 kB\u001b[0m \u001b[31m1.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: idna in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (3.7)\n", + "Requirement already satisfied: sniffio in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (1.3.1)\n", + "Collecting h11<0.15,>=0.13 (from httpcore==1.*->httpx<1,>=0.23.0->classiq)\n", + " Downloading h11-0.14.0-py3-none-any.whl (58 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m58.3/58.3 kB\u001b[0m \u001b[31m4.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (1.2.1)\n", + "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (0.12.1)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (4.51.0)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (1.4.5)\n", + "Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (9.4.0)\n", + "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (3.1.2)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (2.8.2)\n", + "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas<3.0.0,>=1.4.0->classiq) (2023.4)\n", + "Requirement already satisfied: tzdata>=2022.1 in /usr/local/lib/python3.10/dist-packages (from pandas<3.0.0,>=1.4.0->classiq) (2024.1)\n", + "Requirement already satisfied: tenacity>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from plotly<6.0.0,>=5.7.0->classiq) (8.3.0)\n", + "Collecting ply (from Pyomo<6.6,>=6.5->classiq)\n", + " Downloading ply-3.11-py2.py3-none-any.whl (49 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m49.6/49.6 kB\u001b[0m \u001b[31m4.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: mpmath>=0.19 in /usr/local/lib/python3.10/dist-packages (from sympy<1.11.0,>=1.9.0->classiq) (1.3.0)\n", + "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.7->matplotlib<4.0.0,>=3.4.3->classiq) (1.16.0)\n", + "Requirement already satisfied: exceptiongroup in /usr/local/lib/python3.10/dist-packages (from anyio->httpx<1,>=0.23.0->classiq) (1.2.1)\n", + "Installing collected packages: ply, sympy, Pyomo, pydantic, pathspec, packaging, networkx, mypy-extensions, h11, ConfigArgParse, httpcore, black, httpx, classiq\n", + " Attempting uninstall: sympy\n", + " Found existing installation: sympy 1.12\n", + " Uninstalling sympy-1.12:\n", + " Successfully uninstalled sympy-1.12\n", + " Attempting uninstall: pydantic\n", + " Found existing installation: pydantic 2.7.1\n", + " Uninstalling pydantic-2.7.1:\n", + " Successfully uninstalled pydantic-2.7.1\n", + " Attempting uninstall: packaging\n", + " Found existing installation: packaging 24.0\n", + " Uninstalling packaging-24.0:\n", + " Successfully uninstalled packaging-24.0\n", + " Attempting uninstall: networkx\n", + " Found existing installation: networkx 3.3\n", + " Uninstalling networkx-3.3:\n", + " Successfully uninstalled networkx-3.3\n", + "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", + "torch 2.3.0+cu121 requires nvidia-cublas-cu12==12.1.3.1; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cuda-cupti-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cuda-nvrtc-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cuda-runtime-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cudnn-cu12==8.9.2.26; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cufft-cu12==11.0.2.54; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-curand-cu12==10.3.2.106; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cusolver-cu12==11.4.5.107; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cusparse-cu12==12.1.0.106; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-nccl-cu12==2.20.5; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-nvtx-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\u001b[0m\u001b[31m\n", + "\u001b[0mSuccessfully installed ConfigArgParse-1.7 Pyomo-6.5.0 black-24.4.2 classiq-0.42.0 h11-0.14.0 httpcore-1.0.5 httpx-0.27.0 mypy-extensions-1.0.0 networkx-2.8.8 packaging-22.0 pathspec-0.12.1 ply-3.11 pydantic-1.10.15 sympy-1.10.1\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "import classiq" + ], + "metadata": { + "id": "o13wIglSeo7y" + }, + "id": "o13wIglSeo7y", + "execution_count": 2, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "classiq.authenticate()" + ], + "metadata": { + "id": "jLanwByIe4eJ", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "6dec848a-472c-4dc6-8104-d8d00fbbb8e6" + }, + "id": "jLanwByIe4eJ", + "execution_count": 3, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Your user code: PXSB-NCBB\n", + "If a browser doesn't automatically open, please visit this URL from any trusted device: https://auth.classiq.io/activate?user_code=PXSB-NCBB\n" + ] + } + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "19266c11-6acc-4edb-910f-2d0dfe80a6c8", + "metadata": { + "id": "19266c11-6acc-4edb-910f-2d0dfe80a6c8" + }, + "outputs": [], + "source": [ + "from typing import List, cast\n", + "from classiq import *\n", + "from classiq import Pauli, PauliTerm\n", + "\n", + "#TODO: Complete Hamiltonian\n", + "HAMILTONIAN = QConstant(\"HAMILTONIAN\", List[PauliTerm], [\n", + " PauliTerm([Pauli.I, Pauli.I], -1.0523),\n", + " PauliTerm([Pauli.I, Pauli.Z], 0.3979),\n", + " PauliTerm([Pauli.Z, Pauli.I], -0.3979),\n", + " PauliTerm([Pauli.Z, Pauli.Z], -0.0112),\n", + " PauliTerm([Pauli.X, Pauli.X], 0.1809),\n", + "])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "0bb68899-2076-45c0-8868-131f38aa3b78", + "metadata": { + "id": "0bb68899-2076-45c0-8868-131f38aa3b78" + }, + "outputs": [], + "source": [ + "@qfunc\n", + "def main(q: Output[QArray[QBit]], angles: CArray[CReal, 3]) -> None:\n", + " # TODO: Create an ansatz which allows each qubit to have\n", + " # arbitrary rotation\n", + "\n", + " allocate(2, q)\n", + " U(angles[0], angles[1], angles[2], 0, q[0])\n", + " U(angles[0], angles[1], angles[2], 0, q[1])\n", + " #CX(q[0], q[1])\n", + "\n", + "@cfunc\n", + "def cmain() -> None:\n", + " res = vqe(\n", + " hamiltonian=HAMILTONIAN,\n", + " maximize=False,\n", + " initial_point=[],\n", + " optimizer=Optimizer.COBYLA,\n", + " max_iteration=1000,\n", + " tolerance=0.001,\n", + " step_size=0,\n", + " skip_compute_variance=False,\n", + " alpha_cvar=1.0,\n", + " )\n", + " save({\"result\": res})\n", + "\n", + "qmod = create_model(main, classical_execution_function=cmain)\n", + "#TODO: complete the line, use classical_execution_function\n", + "qprog = synthesize(qmod)\n", + "# show(qprog)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "0563c1a8-7aec-4da9-9105-6b16c5c24382", + "metadata": { + "id": "0563c1a8-7aec-4da9-9105-6b16c5c24382" + }, + "outputs": [], + "source": [ + "execution = execute(qprog)\n", + "res = execution.result()\n", + "# execution.open_in_ide()\n", + "vqe_result = res[0].value\n", + " #TODO: complete the line" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "de17cfc0-8e64-4493-b4c2-4a97fc9797a0", + "metadata": { + "scrolled": true, + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "de17cfc0-8e64-4493-b4c2-4a97fc9797a0", + "outputId": "67a7bccc-f67c-4dfc-aad2-7011fc51905c" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Optimal energy: -1.0711231445312501\n", + "Optimal parameters: {'angles_0': -3.0914206855935538, 'angles_1': -0.23729943557563232, 'angles_2': -2.5756826635214636}\n", + "Eigenstate: {'01': (0.02209708691207961+0j), '11': (0.9997558295653994+0j)}\n" + ] + } + ], + "source": [ + "print(f\"Optimal energy: {vqe_result.energy}\")\n", + "print(f\"Optimal parameters: {vqe_result.optimal_parameters}\")\n", + "print(f\"Eigenstate: {vqe_result.eigenstate}\")" + ] + }, + { + "cell_type": "markdown", + "source": [ + "Optimal energy: -1.0711231445312501\n", + "Optimal parameters:\n", + "{'angles_0': -3.0914206855935538, 'angles_1': -0.23729943557563232, 'angles_2': -2.5756826635214636}\n", + "Eigenstate:\n", + "{'01': (0.02209708691207961+0j),\n", + "'11': (0.9997558295653994+0j)}" + ], + "metadata": { + "id": "Yy49RbSEytVl" + }, + "id": "Yy49RbSEytVl" + }, + { + "cell_type": "markdown", + "id": "5df11dfc-3e3a-4191-bd47-d522ca3dcbfa", + "metadata": { + "id": "5df11dfc-3e3a-4191-bd47-d522ca3dcbfa" + }, + "source": [ + "Does it similar to the `optimal energy` we calculated in class? \\\n", + "Does it similar to the `total energy` we calculated in class?" + ] + }, + { + "cell_type": "code", + "source": [], + "metadata": { + "id": "29J60aKnzkKl" + }, + "id": "29J60aKnzkKl", + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "id": "4f0e0bea-b12f-43ad-94e8-100fedf2b57f", + "metadata": { + "id": "4f0e0bea-b12f-43ad-94e8-100fedf2b57f" + }, + "source": [ + "### Part 2" + ] + }, + { + "cell_type": "markdown", + "id": "66882248-de08-4a6e-b33c-647f015f7d79", + "metadata": { + "id": "66882248-de08-4a6e-b33c-647f015f7d79" + }, + "source": [ + "**Now, we want to have a more interesting ansatz in our `main`.** \n", + "Add **one** line of code to the `main` function you created in Part 1 that creates **entanglement** between the two qubits. \n", + "Which gate should you use?" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "bb39be9e-4994-44e5-84d8-c99bc8b77145", + "metadata": { + "id": "bb39be9e-4994-44e5-84d8-c99bc8b77145" + }, + "outputs": [], + "source": [ + "@qfunc\n", + "def main(q: Output[QArray[QBit]], angles: CArray[CReal, 3]) -> None:\n", + " # TODO: Create an ansatz which allows each qubit to have\n", + " # arbitrary rotation\n", + "\n", + " allocate(2, q)\n", + " U(angles[0], angles[1], angles[2], 0, q[0])\n", + " U(angles[0], angles[1], angles[2], 0, q[1])\n", + " CX(q[0], q[1])\n", + " #H(q[0])\n", + " #X(q[1])\n", + " #CX(q[0], q[1])\n", + "\n", + "\n", + "@cfunc\n", + "def cmain() -> None:\n", + " res = vqe(\n", + " HAMILTONIAN, # TODO: complete the missing argument\n", + " False,\n", + " [],\n", + " optimizer=Optimizer.COBYLA,\n", + " max_iteration=1000,\n", + " tolerance=0.001,\n", + " step_size=0,\n", + " skip_compute_variance=False,\n", + " alpha_cvar=1.0,\n", + " )\n", + " save({\"result\": res})\n", + "\n", + "qmod = create_model(main, classical_execution_function=cmain)\n", + "#TODO: complete the line, use classical_execution_function\n", + "qprog = synthesize(qmod)\n", + "# show(qprog)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "112a1590-283c-4f79-8035-72936561102d", + "metadata": { + "id": "112a1590-283c-4f79-8035-72936561102d" + }, + "outputs": [], + "source": [ + "execution = execute(qprog)\n", + "res = execution.result()\n", + "# execution.open_in_ide()\n", + "vqe_result = res[0].value\n", + "#TODO: complete the line" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "06500e4c-a04b-4cfa-a84d-41f96a0c68eb", + "metadata": { + "jupyter": { + "outputs_hidden": true + }, + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "06500e4c-a04b-4cfa-a84d-41f96a0c68eb", + "outputId": "dcaccb41-a8ff-4e1d-eb1e-8f110ed93820" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Optimal energy: -1.8452896484374999\n", + "Optimal parameters: {'angles_0': -2.9812026284028255, 'angles_1': 0.8040137892002661, 'angles_2': 5.77426479151465}\n", + "Eigenstate: {'11': (0.08267972847076846+0j), '10': (0.07967217989988726+0j), '01': (0.9933863328282708+0j)}\n" + ] + } + ], + "source": [ + "print(f\"Optimal energy: {vqe_result.energy}\")\n", + "print(f\"Optimal parameters: {vqe_result.optimal_parameters}\")\n", + "print(f\"Eigenstate: {vqe_result.eigenstate}\")" + ] + }, + { + "cell_type": "markdown", + "source": [ + "Optimal energy: -1.8452896484374999\n", + "Optimal parameters:\n", + "{'angles_0': -2.9812026284028255, 'angles_1': 0.8040137892002661, 'angles_2': 5.77426479151465}\n", + "\n", + "Eigenstate:\n", + "{'11': (0.08267972847076846+0j),\n", + "'10': (0.07967217989988726+0j),\n", + "'01': (0.9933863328282708+0j)}\n" + ], + "metadata": { + "id": "-7V3qnVRzFmJ" + }, + "id": "-7V3qnVRzFmJ" + }, + { + "cell_type": "markdown", + "id": "30a635d7-2f15-4c94-a94b-f4270f17aed8", + "metadata": { + "id": "30a635d7-2f15-4c94-a94b-f4270f17aed8" + }, + "source": [ + "Does it similar to the `optimal energy` we calculated in class? \\\n", + "Does it similar to the `total energy` we calculated in class? \\\n", + "What can we learn about the provided form this result Hamiltonian?\n", + "\n", + "With entanglement one gets better results." + ] + }, + { + "cell_type": "code", + "source": [], + "metadata": { + "id": "726uVxmDzYXE" + }, + "id": "726uVxmDzYXE", + "execution_count": null, + "outputs": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + }, + "colab": { + "provenance": [], + "include_colab_link": true + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file From d9618bbc87f3b8bc270d0ad21344af7aee87bce4 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Mon, 3 Jun 2024 04:26:33 +0200 Subject: [PATCH 08/83] Create a.txt --- community/QClass_2024/Submissions/HW3/a.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 community/QClass_2024/Submissions/HW3/a.txt diff --git a/community/QClass_2024/Submissions/HW3/a.txt b/community/QClass_2024/Submissions/HW3/a.txt new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/community/QClass_2024/Submissions/HW3/a.txt @@ -0,0 +1 @@ + From 02baed7881373e0153128da38c19bce80f93423a Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Mon, 3 Jun 2024 04:28:51 +0200 Subject: [PATCH 09/83] Delete community/QClass_2024/Submissions/HW3/a.txt --- community/QClass_2024/Submissions/HW3/a.txt | 1 - 1 file changed, 1 deletion(-) delete mode 100644 community/QClass_2024/Submissions/HW3/a.txt diff --git a/community/QClass_2024/Submissions/HW3/a.txt b/community/QClass_2024/Submissions/HW3/a.txt deleted file mode 100644 index 8b137891..00000000 --- a/community/QClass_2024/Submissions/HW3/a.txt +++ /dev/null @@ -1 +0,0 @@ - From c2470d767b69b7f9870875f37c058a467392f0d7 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Mon, 3 Jun 2024 04:29:36 +0200 Subject: [PATCH 10/83] Create b.txt --- community/QClass_2024/Submissions/HW3/b.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 community/QClass_2024/Submissions/HW3/b.txt diff --git a/community/QClass_2024/Submissions/HW3/b.txt b/community/QClass_2024/Submissions/HW3/b.txt new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/community/QClass_2024/Submissions/HW3/b.txt @@ -0,0 +1 @@ + From 1f3ce9511a9b966103ed37e1dcfad7ac85b04602 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Mon, 3 Jun 2024 04:30:33 +0200 Subject: [PATCH 11/83] Created using Colab --- .../HW3/Yasir_Mansour_HW3_VQE.ipynb | 576 ++++++++++++++++++ 1 file changed, 576 insertions(+) create mode 100644 community/QClass_2024/Submissions/HW3/Yasir_Mansour_HW3_VQE.ipynb diff --git a/community/QClass_2024/Submissions/HW3/Yasir_Mansour_HW3_VQE.ipynb b/community/QClass_2024/Submissions/HW3/Yasir_Mansour_HW3_VQE.ipynb new file mode 100644 index 00000000..3c3f1a50 --- /dev/null +++ b/community/QClass_2024/Submissions/HW3/Yasir_Mansour_HW3_VQE.ipynb @@ -0,0 +1,576 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "id": "fc72d98f-8993-4bd4-a545-23d122f3df71", + "metadata": { + "id": "fc72d98f-8993-4bd4-a545-23d122f3df71" + }, + "source": [ + "# H₂ Molecule Homework Assignment\n", + "### Quantum Software Development Journey: From Theory to Application with Classiq - Part 3\n", + "\n", + "- Similarly to what we have done in class, in this exercise we will implement the VQE on H2 molecule.\n", + "- This time instead of using the built-in methods and functions (such as `Molecule` and `MoleculeProblem`) to difne and solve the problem, you will be provided with a two qubits Hamiltonian." + ] + }, + { + "cell_type": "markdown", + "id": "56eda6d8-76c4-4862-b914-0c4598d67274", + "metadata": { + "id": "56eda6d8-76c4-4862-b914-0c4598d67274" + }, + "source": [ + "## Submission\n", + "- Submit the completed Jupyter notebook and report via GitHub. Ensure all files are correctly named and organized.\n", + "- Use the Typeform link provided in the submission folder to confirm your submission.\n", + "\n", + "## Additional Resources\n", + "- [Classiq Documentation](https://docs.classiq.io/latest/)\n", + "- The notebook from live session #3\n", + "\n", + "## Important Dates\n", + "- **Assignment Release:** 22.5.2024\n", + "- **Submission Deadline:** 3.6.2024 (7 A.M GMT+3)\n", + "\n", + "---\n", + "\n", + "Happy coding and good luck!" + ] + }, + { + "cell_type": "markdown", + "id": "d41e969d-f6a7-4ff7-9660-19ce6c97ba6b", + "metadata": { + "id": "d41e969d-f6a7-4ff7-9660-19ce6c97ba6b" + }, + "source": [ + "### Part 1" + ] + }, + { + "cell_type": "markdown", + "id": "f710d6f4-d40b-42d5-b524-c6acb8059fe2", + "metadata": { + "id": "f710d6f4-d40b-42d5-b524-c6acb8059fe2" + }, + "source": [ + "Given the following Hamiltonian:" + ] + }, + { + "cell_type": "markdown", + "id": "6ba8a6f1-3259-4492-a1ca-3abde7530cd4", + "metadata": { + "id": "6ba8a6f1-3259-4492-a1ca-3abde7530cd4" + }, + "source": [ + "$$\n", + "\\hat{H} = -1.0523 \\cdot (I \\otimes I) + 0.3979 \\cdot (I \\otimes Z) - 0.3979 \\cdot (Z \\otimes I) - 0.0112 \\cdot (Z \\otimes Z) + 0.1809 \\cdot (X \\otimes X)\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "736d275c-9a5a-4c08-b891-3078430dc6c1", + "metadata": { + "id": "736d275c-9a5a-4c08-b891-3078430dc6c1" + }, + "source": [ + "Complete the following code" + ] + }, + { + "cell_type": "code", + "source": [ + "!pip install classiq" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "collapsed": true, + "id": "DQOxbZxjrN5r", + "outputId": "7ffed65a-717f-4f7a-d969-d999a1fa6611" + }, + "id": "DQOxbZxjrN5r", + "execution_count": 1, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Collecting classiq\n", + " Downloading classiq-0.42.0-py3-none-any.whl (401 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m401.5/401.5 kB\u001b[0m \u001b[31m2.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting ConfigArgParse<2.0.0,>=1.5.3 (from classiq)\n", + " Downloading ConfigArgParse-1.7-py3-none-any.whl (25 kB)\n", + "Collecting Pyomo<6.6,>=6.5 (from classiq)\n", + " Downloading Pyomo-6.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.7 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m10.7/10.7 MB\u001b[0m \u001b[31m24.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting black<25.0,>=24.0 (from classiq)\n", + " Downloading black-24.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.8 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.8/1.8 MB\u001b[0m \u001b[31m14.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting httpx<1,>=0.23.0 (from classiq)\n", + " Downloading httpx-0.27.0-py3-none-any.whl (75 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m75.6/75.6 kB\u001b[0m \u001b[31m3.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: keyring<24.0.0,>=23.5.0 in /usr/lib/python3/dist-packages (from classiq) (23.5.0)\n", + "Requirement already satisfied: matplotlib<4.0.0,>=3.4.3 in /usr/local/lib/python3.10/dist-packages (from classiq) (3.7.1)\n", + "Collecting networkx<3.0.0,>=2.5.1 (from classiq)\n", + " Downloading networkx-2.8.8-py3-none-any.whl (2.0 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.0/2.0 MB\u001b[0m \u001b[31m51.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: numexpr<3.0.0,>=2.7.3 in /usr/local/lib/python3.10/dist-packages (from classiq) (2.10.0)\n", + "Requirement already satisfied: numpy<2.0.0,>=1.20.1 in /usr/local/lib/python3.10/dist-packages (from classiq) (1.25.2)\n", + "Collecting packaging<23.0,>=22.0 (from classiq)\n", + " Downloading packaging-22.0-py3-none-any.whl (42 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m42.6/42.6 kB\u001b[0m \u001b[31m2.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: pandas<3.0.0,>=1.4.0 in /usr/local/lib/python3.10/dist-packages (from classiq) (2.0.3)\n", + "Requirement already satisfied: plotly<6.0.0,>=5.7.0 in /usr/local/lib/python3.10/dist-packages (from classiq) (5.15.0)\n", + "Collecting pydantic<2.0.0,>=1.9.1 (from classiq)\n", + " Downloading pydantic-1.10.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.1/3.1 MB\u001b[0m \u001b[31m36.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: scipy<2.0.0,>=1.10.1 in /usr/local/lib/python3.10/dist-packages (from classiq) (1.11.4)\n", + "Collecting sympy<1.11.0,>=1.9.0 (from classiq)\n", + " Downloading sympy-1.10.1-py3-none-any.whl (6.4 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m6.4/6.4 MB\u001b[0m \u001b[31m51.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: tabulate<1,>=0.8.9 in /usr/local/lib/python3.10/dist-packages (from classiq) (0.9.0)\n", + "Requirement already satisfied: click>=8.0.0 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (8.1.7)\n", + "Collecting mypy-extensions>=0.4.3 (from black<25.0,>=24.0->classiq)\n", + " Downloading mypy_extensions-1.0.0-py3-none-any.whl (4.7 kB)\n", + "Collecting pathspec>=0.9.0 (from black<25.0,>=24.0->classiq)\n", + " Downloading pathspec-0.12.1-py3-none-any.whl (31 kB)\n", + "Requirement already satisfied: platformdirs>=2 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (4.2.2)\n", + "Requirement already satisfied: tomli>=1.1.0 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (2.0.1)\n", + "Requirement already satisfied: typing-extensions>=4.0.1 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (4.11.0)\n", + "Requirement already satisfied: anyio in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (3.7.1)\n", + "Requirement already satisfied: certifi in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (2024.2.2)\n", + "Collecting httpcore==1.* (from httpx<1,>=0.23.0->classiq)\n", + " Downloading httpcore-1.0.5-py3-none-any.whl (77 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m77.9/77.9 kB\u001b[0m \u001b[31m1.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: idna in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (3.7)\n", + "Requirement already satisfied: sniffio in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (1.3.1)\n", + "Collecting h11<0.15,>=0.13 (from httpcore==1.*->httpx<1,>=0.23.0->classiq)\n", + " Downloading h11-0.14.0-py3-none-any.whl (58 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m58.3/58.3 kB\u001b[0m \u001b[31m4.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (1.2.1)\n", + "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (0.12.1)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (4.51.0)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (1.4.5)\n", + "Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (9.4.0)\n", + "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (3.1.2)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (2.8.2)\n", + "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas<3.0.0,>=1.4.0->classiq) (2023.4)\n", + "Requirement already satisfied: tzdata>=2022.1 in /usr/local/lib/python3.10/dist-packages (from pandas<3.0.0,>=1.4.0->classiq) (2024.1)\n", + "Requirement already satisfied: tenacity>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from plotly<6.0.0,>=5.7.0->classiq) (8.3.0)\n", + "Collecting ply (from Pyomo<6.6,>=6.5->classiq)\n", + " Downloading ply-3.11-py2.py3-none-any.whl (49 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m49.6/49.6 kB\u001b[0m \u001b[31m4.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: mpmath>=0.19 in /usr/local/lib/python3.10/dist-packages (from sympy<1.11.0,>=1.9.0->classiq) (1.3.0)\n", + "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.7->matplotlib<4.0.0,>=3.4.3->classiq) (1.16.0)\n", + "Requirement already satisfied: exceptiongroup in /usr/local/lib/python3.10/dist-packages (from anyio->httpx<1,>=0.23.0->classiq) (1.2.1)\n", + "Installing collected packages: ply, sympy, Pyomo, pydantic, pathspec, packaging, networkx, mypy-extensions, h11, ConfigArgParse, httpcore, black, httpx, classiq\n", + " Attempting uninstall: sympy\n", + " Found existing installation: sympy 1.12\n", + " Uninstalling sympy-1.12:\n", + " Successfully uninstalled sympy-1.12\n", + " Attempting uninstall: pydantic\n", + " Found existing installation: pydantic 2.7.1\n", + " Uninstalling pydantic-2.7.1:\n", + " Successfully uninstalled pydantic-2.7.1\n", + " Attempting uninstall: packaging\n", + " Found existing installation: packaging 24.0\n", + " Uninstalling packaging-24.0:\n", + " Successfully uninstalled packaging-24.0\n", + " Attempting uninstall: networkx\n", + " Found existing installation: networkx 3.3\n", + " Uninstalling networkx-3.3:\n", + " Successfully uninstalled networkx-3.3\n", + "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", + "torch 2.3.0+cu121 requires nvidia-cublas-cu12==12.1.3.1; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cuda-cupti-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cuda-nvrtc-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cuda-runtime-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cudnn-cu12==8.9.2.26; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cufft-cu12==11.0.2.54; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-curand-cu12==10.3.2.106; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cusolver-cu12==11.4.5.107; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cusparse-cu12==12.1.0.106; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-nccl-cu12==2.20.5; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-nvtx-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\u001b[0m\u001b[31m\n", + "\u001b[0mSuccessfully installed ConfigArgParse-1.7 Pyomo-6.5.0 black-24.4.2 classiq-0.42.0 h11-0.14.0 httpcore-1.0.5 httpx-0.27.0 mypy-extensions-1.0.0 networkx-2.8.8 packaging-22.0 pathspec-0.12.1 ply-3.11 pydantic-1.10.15 sympy-1.10.1\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "import classiq" + ], + "metadata": { + "id": "o13wIglSeo7y" + }, + "id": "o13wIglSeo7y", + "execution_count": 2, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "classiq.authenticate()" + ], + "metadata": { + "id": "jLanwByIe4eJ", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "6dec848a-472c-4dc6-8104-d8d00fbbb8e6" + }, + "id": "jLanwByIe4eJ", + "execution_count": 3, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Your user code: PXSB-NCBB\n", + "If a browser doesn't automatically open, please visit this URL from any trusted device: https://auth.classiq.io/activate?user_code=PXSB-NCBB\n" + ] + } + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "19266c11-6acc-4edb-910f-2d0dfe80a6c8", + "metadata": { + "id": "19266c11-6acc-4edb-910f-2d0dfe80a6c8" + }, + "outputs": [], + "source": [ + "from typing import List, cast\n", + "from classiq import *\n", + "from classiq import Pauli, PauliTerm\n", + "\n", + "#TODO: Complete Hamiltonian\n", + "HAMILTONIAN = QConstant(\"HAMILTONIAN\", List[PauliTerm], [\n", + " PauliTerm([Pauli.I, Pauli.I], -1.0523),\n", + " PauliTerm([Pauli.I, Pauli.Z], 0.3979),\n", + " PauliTerm([Pauli.Z, Pauli.I], -0.3979),\n", + " PauliTerm([Pauli.Z, Pauli.Z], -0.0112),\n", + " PauliTerm([Pauli.X, Pauli.X], 0.1809),\n", + "])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "0bb68899-2076-45c0-8868-131f38aa3b78", + "metadata": { + "id": "0bb68899-2076-45c0-8868-131f38aa3b78" + }, + "outputs": [], + "source": [ + "@qfunc\n", + "def main(q: Output[QArray[QBit]], angles: CArray[CReal, 3]) -> None:\n", + " # TODO: Create an ansatz which allows each qubit to have\n", + " # arbitrary rotation\n", + "\n", + " allocate(2, q)\n", + " U(angles[0], angles[1], angles[2], 0, q[0])\n", + " U(angles[0], angles[1], angles[2], 0, q[1])\n", + " #CX(q[0], q[1])\n", + "\n", + "@cfunc\n", + "def cmain() -> None:\n", + " res = vqe(\n", + " hamiltonian=HAMILTONIAN,\n", + " maximize=False,\n", + " initial_point=[],\n", + " optimizer=Optimizer.COBYLA,\n", + " max_iteration=1000,\n", + " tolerance=0.001,\n", + " step_size=0,\n", + " skip_compute_variance=False,\n", + " alpha_cvar=1.0,\n", + " )\n", + " save({\"result\": res})\n", + "\n", + "qmod = create_model(main, classical_execution_function=cmain)\n", + "#TODO: complete the line, use classical_execution_function\n", + "qprog = synthesize(qmod)\n", + "# show(qprog)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "0563c1a8-7aec-4da9-9105-6b16c5c24382", + "metadata": { + "id": "0563c1a8-7aec-4da9-9105-6b16c5c24382" + }, + "outputs": [], + "source": [ + "execution = execute(qprog)\n", + "res = execution.result()\n", + "# execution.open_in_ide()\n", + "vqe_result = res[0].value\n", + " #TODO: complete the line" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "de17cfc0-8e64-4493-b4c2-4a97fc9797a0", + "metadata": { + "scrolled": true, + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "de17cfc0-8e64-4493-b4c2-4a97fc9797a0", + "outputId": "67a7bccc-f67c-4dfc-aad2-7011fc51905c" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Optimal energy: -1.0711231445312501\n", + "Optimal parameters: {'angles_0': -3.0914206855935538, 'angles_1': -0.23729943557563232, 'angles_2': -2.5756826635214636}\n", + "Eigenstate: {'01': (0.02209708691207961+0j), '11': (0.9997558295653994+0j)}\n" + ] + } + ], + "source": [ + "print(f\"Optimal energy: {vqe_result.energy}\")\n", + "print(f\"Optimal parameters: {vqe_result.optimal_parameters}\")\n", + "print(f\"Eigenstate: {vqe_result.eigenstate}\")" + ] + }, + { + "cell_type": "markdown", + "source": [ + "Optimal energy: -1.0711231445312501\n", + "Optimal parameters:\n", + "{'angles_0': -3.0914206855935538, 'angles_1': -0.23729943557563232, 'angles_2': -2.5756826635214636}\n", + "Eigenstate:\n", + "{'01': (0.02209708691207961+0j),\n", + "'11': (0.9997558295653994+0j)}" + ], + "metadata": { + "id": "Yy49RbSEytVl" + }, + "id": "Yy49RbSEytVl" + }, + { + "cell_type": "markdown", + "id": "5df11dfc-3e3a-4191-bd47-d522ca3dcbfa", + "metadata": { + "id": "5df11dfc-3e3a-4191-bd47-d522ca3dcbfa" + }, + "source": [ + "Does it similar to the `optimal energy` we calculated in class? \\\n", + "Does it similar to the `total energy` we calculated in class?" + ] + }, + { + "cell_type": "code", + "source": [], + "metadata": { + "id": "29J60aKnzkKl" + }, + "id": "29J60aKnzkKl", + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "id": "4f0e0bea-b12f-43ad-94e8-100fedf2b57f", + "metadata": { + "id": "4f0e0bea-b12f-43ad-94e8-100fedf2b57f" + }, + "source": [ + "### Part 2" + ] + }, + { + "cell_type": "markdown", + "id": "66882248-de08-4a6e-b33c-647f015f7d79", + "metadata": { + "id": "66882248-de08-4a6e-b33c-647f015f7d79" + }, + "source": [ + "**Now, we want to have a more interesting ansatz in our `main`.** \n", + "Add **one** line of code to the `main` function you created in Part 1 that creates **entanglement** between the two qubits. \n", + "Which gate should you use?" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "bb39be9e-4994-44e5-84d8-c99bc8b77145", + "metadata": { + "id": "bb39be9e-4994-44e5-84d8-c99bc8b77145" + }, + "outputs": [], + "source": [ + "@qfunc\n", + "def main(q: Output[QArray[QBit]], angles: CArray[CReal, 3]) -> None:\n", + " # TODO: Create an ansatz which allows each qubit to have\n", + " # arbitrary rotation\n", + "\n", + " allocate(2, q)\n", + " U(angles[0], angles[1], angles[2], 0, q[0])\n", + " U(angles[0], angles[1], angles[2], 0, q[1])\n", + " CX(q[0], q[1])\n", + " #H(q[0])\n", + " #X(q[1])\n", + " #CX(q[0], q[1])\n", + "\n", + "\n", + "@cfunc\n", + "def cmain() -> None:\n", + " res = vqe(\n", + " HAMILTONIAN, # TODO: complete the missing argument\n", + " False,\n", + " [],\n", + " optimizer=Optimizer.COBYLA,\n", + " max_iteration=1000,\n", + " tolerance=0.001,\n", + " step_size=0,\n", + " skip_compute_variance=False,\n", + " alpha_cvar=1.0,\n", + " )\n", + " save({\"result\": res})\n", + "\n", + "qmod = create_model(main, classical_execution_function=cmain)\n", + "#TODO: complete the line, use classical_execution_function\n", + "qprog = synthesize(qmod)\n", + "# show(qprog)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "112a1590-283c-4f79-8035-72936561102d", + "metadata": { + "id": "112a1590-283c-4f79-8035-72936561102d" + }, + "outputs": [], + "source": [ + "execution = execute(qprog)\n", + "res = execution.result()\n", + "# execution.open_in_ide()\n", + "vqe_result = res[0].value\n", + "#TODO: complete the line" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "06500e4c-a04b-4cfa-a84d-41f96a0c68eb", + "metadata": { + "jupyter": { + "outputs_hidden": true + }, + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "06500e4c-a04b-4cfa-a84d-41f96a0c68eb", + "outputId": "dcaccb41-a8ff-4e1d-eb1e-8f110ed93820" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Optimal energy: -1.8452896484374999\n", + "Optimal parameters: {'angles_0': -2.9812026284028255, 'angles_1': 0.8040137892002661, 'angles_2': 5.77426479151465}\n", + "Eigenstate: {'11': (0.08267972847076846+0j), '10': (0.07967217989988726+0j), '01': (0.9933863328282708+0j)}\n" + ] + } + ], + "source": [ + "print(f\"Optimal energy: {vqe_result.energy}\")\n", + "print(f\"Optimal parameters: {vqe_result.optimal_parameters}\")\n", + "print(f\"Eigenstate: {vqe_result.eigenstate}\")" + ] + }, + { + "cell_type": "markdown", + "source": [ + "Optimal energy: -1.8452896484374999\n", + "Optimal parameters:\n", + "{'angles_0': -2.9812026284028255, 'angles_1': 0.8040137892002661, 'angles_2': 5.77426479151465}\n", + "\n", + "Eigenstate:\n", + "{'11': (0.08267972847076846+0j),\n", + "'10': (0.07967217989988726+0j),\n", + "'01': (0.9933863328282708+0j)}\n" + ], + "metadata": { + "id": "-7V3qnVRzFmJ" + }, + "id": "-7V3qnVRzFmJ" + }, + { + "cell_type": "markdown", + "id": "30a635d7-2f15-4c94-a94b-f4270f17aed8", + "metadata": { + "id": "30a635d7-2f15-4c94-a94b-f4270f17aed8" + }, + "source": [ + "Does it similar to the `optimal energy` we calculated in class? \\\n", + "Does it similar to the `total energy` we calculated in class? \\\n", + "What can we learn about the provided form this result Hamiltonian?\n", + "\n", + "With entanglement one gets better results." + ] + }, + { + "cell_type": "code", + "source": [], + "metadata": { + "id": "726uVxmDzYXE" + }, + "id": "726uVxmDzYXE", + "execution_count": null, + "outputs": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + }, + "colab": { + "provenance": [], + "include_colab_link": true + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file From 1aaf0783c0071da00ea47bb64babab7b90685585 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Mon, 3 Jun 2024 04:31:05 +0200 Subject: [PATCH 12/83] Delete community/QClass_2024/Submissions/HW3/b.txt --- community/QClass_2024/Submissions/HW3/b.txt | 1 - 1 file changed, 1 deletion(-) delete mode 100644 community/QClass_2024/Submissions/HW3/b.txt diff --git a/community/QClass_2024/Submissions/HW3/b.txt b/community/QClass_2024/Submissions/HW3/b.txt deleted file mode 100644 index 8b137891..00000000 --- a/community/QClass_2024/Submissions/HW3/b.txt +++ /dev/null @@ -1 +0,0 @@ - From fdabc2c421c8ae3465a12e6046c4f7754c7eaea3 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Mon, 3 Jun 2024 04:37:58 +0200 Subject: [PATCH 13/83] Delete community/QClass_2024/Submissions/Yasir_Mansour_HW3_VQE.ipynb --- .../Submissions/Yasir_Mansour_HW3_VQE.ipynb | 576 ------------------ 1 file changed, 576 deletions(-) delete mode 100644 community/QClass_2024/Submissions/Yasir_Mansour_HW3_VQE.ipynb diff --git a/community/QClass_2024/Submissions/Yasir_Mansour_HW3_VQE.ipynb b/community/QClass_2024/Submissions/Yasir_Mansour_HW3_VQE.ipynb deleted file mode 100644 index a221f018..00000000 --- a/community/QClass_2024/Submissions/Yasir_Mansour_HW3_VQE.ipynb +++ /dev/null @@ -1,576 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "view-in-github", - "colab_type": "text" - }, - "source": [ - "\"Open" - ] - }, - { - "cell_type": "markdown", - "id": "fc72d98f-8993-4bd4-a545-23d122f3df71", - "metadata": { - "id": "fc72d98f-8993-4bd4-a545-23d122f3df71" - }, - "source": [ - "# H₂ Molecule Homework Assignment\n", - "### Quantum Software Development Journey: From Theory to Application with Classiq - Part 3\n", - "\n", - "- Similarly to what we have done in class, in this exercise we will implement the VQE on H2 molecule.\n", - "- This time instead of using the built-in methods and functions (such as `Molecule` and `MoleculeProblem`) to difne and solve the problem, you will be provided with a two qubits Hamiltonian." - ] - }, - { - "cell_type": "markdown", - "id": "56eda6d8-76c4-4862-b914-0c4598d67274", - "metadata": { - "id": "56eda6d8-76c4-4862-b914-0c4598d67274" - }, - "source": [ - "## Submission\n", - "- Submit the completed Jupyter notebook and report via GitHub. Ensure all files are correctly named and organized.\n", - "- Use the Typeform link provided in the submission folder to confirm your submission.\n", - "\n", - "## Additional Resources\n", - "- [Classiq Documentation](https://docs.classiq.io/latest/)\n", - "- The notebook from live session #3\n", - "\n", - "## Important Dates\n", - "- **Assignment Release:** 22.5.2024\n", - "- **Submission Deadline:** 3.6.2024 (7 A.M GMT+3)\n", - "\n", - "---\n", - "\n", - "Happy coding and good luck!" - ] - }, - { - "cell_type": "markdown", - "id": "d41e969d-f6a7-4ff7-9660-19ce6c97ba6b", - "metadata": { - "id": "d41e969d-f6a7-4ff7-9660-19ce6c97ba6b" - }, - "source": [ - "### Part 1" - ] - }, - { - "cell_type": "markdown", - "id": "f710d6f4-d40b-42d5-b524-c6acb8059fe2", - "metadata": { - "id": "f710d6f4-d40b-42d5-b524-c6acb8059fe2" - }, - "source": [ - "Given the following Hamiltonian:" - ] - }, - { - "cell_type": "markdown", - "id": "6ba8a6f1-3259-4492-a1ca-3abde7530cd4", - "metadata": { - "id": "6ba8a6f1-3259-4492-a1ca-3abde7530cd4" - }, - "source": [ - "$$\n", - "\\hat{H} = -1.0523 \\cdot (I \\otimes I) + 0.3979 \\cdot (I \\otimes Z) - 0.3979 \\cdot (Z \\otimes I) - 0.0112 \\cdot (Z \\otimes Z) + 0.1809 \\cdot (X \\otimes X)\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "id": "736d275c-9a5a-4c08-b891-3078430dc6c1", - "metadata": { - "id": "736d275c-9a5a-4c08-b891-3078430dc6c1" - }, - "source": [ - "Complete the following code" - ] - }, - { - "cell_type": "code", - "source": [ - "!pip install classiq" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "collapsed": true, - "id": "DQOxbZxjrN5r", - "outputId": "7ffed65a-717f-4f7a-d969-d999a1fa6611" - }, - "id": "DQOxbZxjrN5r", - "execution_count": 1, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Collecting classiq\n", - " Downloading classiq-0.42.0-py3-none-any.whl (401 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m401.5/401.5 kB\u001b[0m \u001b[31m2.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hCollecting ConfigArgParse<2.0.0,>=1.5.3 (from classiq)\n", - " Downloading ConfigArgParse-1.7-py3-none-any.whl (25 kB)\n", - "Collecting Pyomo<6.6,>=6.5 (from classiq)\n", - " Downloading Pyomo-6.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.7 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m10.7/10.7 MB\u001b[0m \u001b[31m24.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hCollecting black<25.0,>=24.0 (from classiq)\n", - " Downloading black-24.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.8 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.8/1.8 MB\u001b[0m \u001b[31m14.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hCollecting httpx<1,>=0.23.0 (from classiq)\n", - " Downloading httpx-0.27.0-py3-none-any.whl (75 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m75.6/75.6 kB\u001b[0m \u001b[31m3.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: keyring<24.0.0,>=23.5.0 in /usr/lib/python3/dist-packages (from classiq) (23.5.0)\n", - "Requirement already satisfied: matplotlib<4.0.0,>=3.4.3 in /usr/local/lib/python3.10/dist-packages (from classiq) (3.7.1)\n", - "Collecting networkx<3.0.0,>=2.5.1 (from classiq)\n", - " Downloading networkx-2.8.8-py3-none-any.whl (2.0 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.0/2.0 MB\u001b[0m \u001b[31m51.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: numexpr<3.0.0,>=2.7.3 in /usr/local/lib/python3.10/dist-packages (from classiq) (2.10.0)\n", - "Requirement already satisfied: numpy<2.0.0,>=1.20.1 in /usr/local/lib/python3.10/dist-packages (from classiq) (1.25.2)\n", - "Collecting packaging<23.0,>=22.0 (from classiq)\n", - " Downloading packaging-22.0-py3-none-any.whl (42 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m42.6/42.6 kB\u001b[0m \u001b[31m2.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: pandas<3.0.0,>=1.4.0 in /usr/local/lib/python3.10/dist-packages (from classiq) (2.0.3)\n", - "Requirement already satisfied: plotly<6.0.0,>=5.7.0 in /usr/local/lib/python3.10/dist-packages (from classiq) (5.15.0)\n", - "Collecting pydantic<2.0.0,>=1.9.1 (from classiq)\n", - " Downloading pydantic-1.10.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.1/3.1 MB\u001b[0m \u001b[31m36.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: scipy<2.0.0,>=1.10.1 in /usr/local/lib/python3.10/dist-packages (from classiq) (1.11.4)\n", - "Collecting sympy<1.11.0,>=1.9.0 (from classiq)\n", - " Downloading sympy-1.10.1-py3-none-any.whl (6.4 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m6.4/6.4 MB\u001b[0m \u001b[31m51.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: tabulate<1,>=0.8.9 in /usr/local/lib/python3.10/dist-packages (from classiq) (0.9.0)\n", - "Requirement already satisfied: click>=8.0.0 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (8.1.7)\n", - "Collecting mypy-extensions>=0.4.3 (from black<25.0,>=24.0->classiq)\n", - " Downloading mypy_extensions-1.0.0-py3-none-any.whl (4.7 kB)\n", - "Collecting pathspec>=0.9.0 (from black<25.0,>=24.0->classiq)\n", - " Downloading pathspec-0.12.1-py3-none-any.whl (31 kB)\n", - "Requirement already satisfied: platformdirs>=2 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (4.2.2)\n", - "Requirement already satisfied: tomli>=1.1.0 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (2.0.1)\n", - "Requirement already satisfied: typing-extensions>=4.0.1 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (4.11.0)\n", - "Requirement already satisfied: anyio in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (3.7.1)\n", - "Requirement already satisfied: certifi in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (2024.2.2)\n", - "Collecting httpcore==1.* (from httpx<1,>=0.23.0->classiq)\n", - " Downloading httpcore-1.0.5-py3-none-any.whl (77 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m77.9/77.9 kB\u001b[0m \u001b[31m1.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: idna in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (3.7)\n", - "Requirement already satisfied: sniffio in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (1.3.1)\n", - "Collecting h11<0.15,>=0.13 (from httpcore==1.*->httpx<1,>=0.23.0->classiq)\n", - " Downloading h11-0.14.0-py3-none-any.whl (58 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m58.3/58.3 kB\u001b[0m \u001b[31m4.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (1.2.1)\n", - "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (0.12.1)\n", - "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (4.51.0)\n", - "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (1.4.5)\n", - "Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (9.4.0)\n", - "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (3.1.2)\n", - "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (2.8.2)\n", - "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas<3.0.0,>=1.4.0->classiq) (2023.4)\n", - "Requirement already satisfied: tzdata>=2022.1 in /usr/local/lib/python3.10/dist-packages (from pandas<3.0.0,>=1.4.0->classiq) (2024.1)\n", - "Requirement already satisfied: tenacity>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from plotly<6.0.0,>=5.7.0->classiq) (8.3.0)\n", - "Collecting ply (from Pyomo<6.6,>=6.5->classiq)\n", - " Downloading ply-3.11-py2.py3-none-any.whl (49 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m49.6/49.6 kB\u001b[0m \u001b[31m4.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: mpmath>=0.19 in /usr/local/lib/python3.10/dist-packages (from sympy<1.11.0,>=1.9.0->classiq) (1.3.0)\n", - "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.7->matplotlib<4.0.0,>=3.4.3->classiq) (1.16.0)\n", - "Requirement already satisfied: exceptiongroup in /usr/local/lib/python3.10/dist-packages (from anyio->httpx<1,>=0.23.0->classiq) (1.2.1)\n", - "Installing collected packages: ply, sympy, Pyomo, pydantic, pathspec, packaging, networkx, mypy-extensions, h11, ConfigArgParse, httpcore, black, httpx, classiq\n", - " Attempting uninstall: sympy\n", - " Found existing installation: sympy 1.12\n", - " Uninstalling sympy-1.12:\n", - " Successfully uninstalled sympy-1.12\n", - " Attempting uninstall: pydantic\n", - " Found existing installation: pydantic 2.7.1\n", - " Uninstalling pydantic-2.7.1:\n", - " Successfully uninstalled pydantic-2.7.1\n", - " Attempting uninstall: packaging\n", - " Found existing installation: packaging 24.0\n", - " Uninstalling packaging-24.0:\n", - " Successfully uninstalled packaging-24.0\n", - " Attempting uninstall: networkx\n", - " Found existing installation: networkx 3.3\n", - " Uninstalling networkx-3.3:\n", - " Successfully uninstalled networkx-3.3\n", - "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", - "torch 2.3.0+cu121 requires nvidia-cublas-cu12==12.1.3.1; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cuda-cupti-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cuda-nvrtc-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cuda-runtime-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cudnn-cu12==8.9.2.26; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cufft-cu12==11.0.2.54; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-curand-cu12==10.3.2.106; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cusolver-cu12==11.4.5.107; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cusparse-cu12==12.1.0.106; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-nccl-cu12==2.20.5; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-nvtx-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\u001b[0m\u001b[31m\n", - "\u001b[0mSuccessfully installed ConfigArgParse-1.7 Pyomo-6.5.0 black-24.4.2 classiq-0.42.0 h11-0.14.0 httpcore-1.0.5 httpx-0.27.0 mypy-extensions-1.0.0 networkx-2.8.8 packaging-22.0 pathspec-0.12.1 ply-3.11 pydantic-1.10.15 sympy-1.10.1\n" - ] - } - ] - }, - { - "cell_type": "code", - "source": [ - "import classiq" - ], - "metadata": { - "id": "o13wIglSeo7y" - }, - "id": "o13wIglSeo7y", - "execution_count": 2, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "classiq.authenticate()" - ], - "metadata": { - "id": "jLanwByIe4eJ", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "6dec848a-472c-4dc6-8104-d8d00fbbb8e6" - }, - "id": "jLanwByIe4eJ", - "execution_count": 3, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Your user code: PXSB-NCBB\n", - "If a browser doesn't automatically open, please visit this URL from any trusted device: https://auth.classiq.io/activate?user_code=PXSB-NCBB\n" - ] - } - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "19266c11-6acc-4edb-910f-2d0dfe80a6c8", - "metadata": { - "id": "19266c11-6acc-4edb-910f-2d0dfe80a6c8" - }, - "outputs": [], - "source": [ - "from typing import List, cast\n", - "from classiq import *\n", - "from classiq import Pauli, PauliTerm\n", - "\n", - "#TODO: Complete Hamiltonian\n", - "HAMILTONIAN = QConstant(\"HAMILTONIAN\", List[PauliTerm], [\n", - " PauliTerm([Pauli.I, Pauli.I], -1.0523),\n", - " PauliTerm([Pauli.I, Pauli.Z], 0.3979),\n", - " PauliTerm([Pauli.Z, Pauli.I], -0.3979),\n", - " PauliTerm([Pauli.Z, Pauli.Z], -0.0112),\n", - " PauliTerm([Pauli.X, Pauli.X], 0.1809),\n", - "])" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "0bb68899-2076-45c0-8868-131f38aa3b78", - "metadata": { - "id": "0bb68899-2076-45c0-8868-131f38aa3b78" - }, - "outputs": [], - "source": [ - "@qfunc\n", - "def main(q: Output[QArray[QBit]], angles: CArray[CReal, 3]) -> None:\n", - " # TODO: Create an ansatz which allows each qubit to have\n", - " # arbitrary rotation\n", - "\n", - " allocate(2, q)\n", - " U(angles[0], angles[1], angles[2], 0, q[0])\n", - " U(angles[0], angles[1], angles[2], 0, q[1])\n", - " #CX(q[0], q[1])\n", - "\n", - "@cfunc\n", - "def cmain() -> None:\n", - " res = vqe(\n", - " hamiltonian=HAMILTONIAN,\n", - " maximize=False,\n", - " initial_point=[],\n", - " optimizer=Optimizer.COBYLA,\n", - " max_iteration=1000,\n", - " tolerance=0.001,\n", - " step_size=0,\n", - " skip_compute_variance=False,\n", - " alpha_cvar=1.0,\n", - " )\n", - " save({\"result\": res})\n", - "\n", - "qmod = create_model(main, classical_execution_function=cmain)\n", - "#TODO: complete the line, use classical_execution_function\n", - "qprog = synthesize(qmod)\n", - "# show(qprog)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "0563c1a8-7aec-4da9-9105-6b16c5c24382", - "metadata": { - "id": "0563c1a8-7aec-4da9-9105-6b16c5c24382" - }, - "outputs": [], - "source": [ - "execution = execute(qprog)\n", - "res = execution.result()\n", - "# execution.open_in_ide()\n", - "vqe_result = res[0].value\n", - " #TODO: complete the line" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "de17cfc0-8e64-4493-b4c2-4a97fc9797a0", - "metadata": { - "scrolled": true, - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "de17cfc0-8e64-4493-b4c2-4a97fc9797a0", - "outputId": "67a7bccc-f67c-4dfc-aad2-7011fc51905c" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Optimal energy: -1.0711231445312501\n", - "Optimal parameters: {'angles_0': -3.0914206855935538, 'angles_1': -0.23729943557563232, 'angles_2': -2.5756826635214636}\n", - "Eigenstate: {'01': (0.02209708691207961+0j), '11': (0.9997558295653994+0j)}\n" - ] - } - ], - "source": [ - "print(f\"Optimal energy: {vqe_result.energy}\")\n", - "print(f\"Optimal parameters: {vqe_result.optimal_parameters}\")\n", - "print(f\"Eigenstate: {vqe_result.eigenstate}\")" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Optimal energy: -1.0711231445312501\n", - "Optimal parameters:\n", - "{'angles_0': -3.0914206855935538, 'angles_1': -0.23729943557563232, 'angles_2': -2.5756826635214636}\n", - "Eigenstate:\n", - "{'01': (0.02209708691207961+0j),\n", - "'11': (0.9997558295653994+0j)}" - ], - "metadata": { - "id": "Yy49RbSEytVl" - }, - "id": "Yy49RbSEytVl" - }, - { - "cell_type": "markdown", - "id": "5df11dfc-3e3a-4191-bd47-d522ca3dcbfa", - "metadata": { - "id": "5df11dfc-3e3a-4191-bd47-d522ca3dcbfa" - }, - "source": [ - "Does it similar to the `optimal energy` we calculated in class? \\\n", - "Does it similar to the `total energy` we calculated in class?" - ] - }, - { - "cell_type": "code", - "source": [], - "metadata": { - "id": "29J60aKnzkKl" - }, - "id": "29J60aKnzkKl", - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "id": "4f0e0bea-b12f-43ad-94e8-100fedf2b57f", - "metadata": { - "id": "4f0e0bea-b12f-43ad-94e8-100fedf2b57f" - }, - "source": [ - "### Part 2" - ] - }, - { - "cell_type": "markdown", - "id": "66882248-de08-4a6e-b33c-647f015f7d79", - "metadata": { - "id": "66882248-de08-4a6e-b33c-647f015f7d79" - }, - "source": [ - "**Now, we want to have a more interesting ansatz in our `main`.** \n", - "Add **one** line of code to the `main` function you created in Part 1 that creates **entanglement** between the two qubits. \n", - "Which gate should you use?" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "bb39be9e-4994-44e5-84d8-c99bc8b77145", - "metadata": { - "id": "bb39be9e-4994-44e5-84d8-c99bc8b77145" - }, - "outputs": [], - "source": [ - "@qfunc\n", - "def main(q: Output[QArray[QBit]], angles: CArray[CReal, 3]) -> None:\n", - " # TODO: Create an ansatz which allows each qubit to have\n", - " # arbitrary rotation\n", - "\n", - " allocate(2, q)\n", - " U(angles[0], angles[1], angles[2], 0, q[0])\n", - " U(angles[0], angles[1], angles[2], 0, q[1])\n", - " CX(q[0], q[1])\n", - " #H(q[0])\n", - " #X(q[1])\n", - " #CX(q[0], q[1])\n", - "\n", - "\n", - "@cfunc\n", - "def cmain() -> None:\n", - " res = vqe(\n", - " HAMILTONIAN, # TODO: complete the missing argument\n", - " False,\n", - " [],\n", - " optimizer=Optimizer.COBYLA,\n", - " max_iteration=1000,\n", - " tolerance=0.001,\n", - " step_size=0,\n", - " skip_compute_variance=False,\n", - " alpha_cvar=1.0,\n", - " )\n", - " save({\"result\": res})\n", - "\n", - "qmod = create_model(main, classical_execution_function=cmain)\n", - "#TODO: complete the line, use classical_execution_function\n", - "qprog = synthesize(qmod)\n", - "# show(qprog)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "112a1590-283c-4f79-8035-72936561102d", - "metadata": { - "id": "112a1590-283c-4f79-8035-72936561102d" - }, - "outputs": [], - "source": [ - "execution = execute(qprog)\n", - "res = execution.result()\n", - "# execution.open_in_ide()\n", - "vqe_result = res[0].value\n", - "#TODO: complete the line" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "06500e4c-a04b-4cfa-a84d-41f96a0c68eb", - "metadata": { - "jupyter": { - "outputs_hidden": true - }, - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "06500e4c-a04b-4cfa-a84d-41f96a0c68eb", - "outputId": "dcaccb41-a8ff-4e1d-eb1e-8f110ed93820" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Optimal energy: -1.8452896484374999\n", - "Optimal parameters: {'angles_0': -2.9812026284028255, 'angles_1': 0.8040137892002661, 'angles_2': 5.77426479151465}\n", - "Eigenstate: {'11': (0.08267972847076846+0j), '10': (0.07967217989988726+0j), '01': (0.9933863328282708+0j)}\n" - ] - } - ], - "source": [ - "print(f\"Optimal energy: {vqe_result.energy}\")\n", - "print(f\"Optimal parameters: {vqe_result.optimal_parameters}\")\n", - "print(f\"Eigenstate: {vqe_result.eigenstate}\")" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Optimal energy: -1.8452896484374999\n", - "Optimal parameters:\n", - "{'angles_0': -2.9812026284028255, 'angles_1': 0.8040137892002661, 'angles_2': 5.77426479151465}\n", - "\n", - "Eigenstate:\n", - "{'11': (0.08267972847076846+0j),\n", - "'10': (0.07967217989988726+0j),\n", - "'01': (0.9933863328282708+0j)}\n" - ], - "metadata": { - "id": "-7V3qnVRzFmJ" - }, - "id": "-7V3qnVRzFmJ" - }, - { - "cell_type": "markdown", - "id": "30a635d7-2f15-4c94-a94b-f4270f17aed8", - "metadata": { - "id": "30a635d7-2f15-4c94-a94b-f4270f17aed8" - }, - "source": [ - "Does it similar to the `optimal energy` we calculated in class? \\\n", - "Does it similar to the `total energy` we calculated in class? \\\n", - "What can we learn about the provided form this result Hamiltonian?\n", - "\n", - "With entanglement one gets better results." - ] - }, - { - "cell_type": "code", - "source": [], - "metadata": { - "id": "726uVxmDzYXE" - }, - "id": "726uVxmDzYXE", - "execution_count": null, - "outputs": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.16" - }, - "colab": { - "provenance": [], - "include_colab_link": true - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file From 7016f881c8681d3113accc17765b717b648bb34f Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Mon, 10 Jun 2024 05:30:45 +0200 Subject: [PATCH 14/83] Created using Colab --- ...nsour_molecule_eigensolver_ipynb_txt.ipynb | 7462 +++++++++++++++++ 1 file changed, 7462 insertions(+) create mode 100644 community/QClass_2024/Submissions/HW4/Yasir_Mansour_molecule_eigensolver_ipynb_txt.ipynb diff --git a/community/QClass_2024/Submissions/HW4/Yasir_Mansour_molecule_eigensolver_ipynb_txt.ipynb b/community/QClass_2024/Submissions/HW4/Yasir_Mansour_molecule_eigensolver_ipynb_txt.ipynb new file mode 100644 index 00000000..e8a8e412 --- /dev/null +++ b/community/QClass_2024/Submissions/HW4/Yasir_Mansour_molecule_eigensolver_ipynb_txt.ipynb @@ -0,0 +1,7462 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "id": "4fbae0f9", + "metadata": { + "id": "4fbae0f9" + }, + "source": [ + "# Molecule Eigensolver (VQE method)\n", + "\n", + "Evaluating the ground state of a molecular Hamiltonian allows us to understand the chemical properties of the molecule. In this demo, we demonstrate the usage of Variational Quantum Eigensolver (VQE) for finding the ground states and energies of several molecules: 𝐻2 , 𝐻2𝑂 and 𝐿𝑖𝐻 .\n", + "\n", + "VQE is a leading method for finding approximate values of ground state wavefuncions and energies for complicated quantum systems, and as such can give solutions for complex molecular structures. The overview of the VQE method is as following: a problem (i.e. a molecule) is defined by a Hamiltonian which ground state is sought. Then, a choice of a parameterized ansatz is made. Using a hybrid quantum-classical algorithm, a solution for the defined parameters which minimize the expectation value for the energy is found. A clever ansatz will lead to an estimated ground state solution.\n", + "\n", + "Within the scope of Classiq's VQE algorithm, the user defines a Molecule which is being translated to a concise Hamiltonian. Then, a choice between several types of well studied ansatz is given, which can be carefully picked to fit your Molecule type. In the last stage, the Hamiltonian and ansatz are sent to a classical optimizer. During this tutorial we will demonstrate the steps and user options in Classiq's VQE algorithm. Furthermore, the demonstration will present the optimization strength Classiq's VQE algorithm holds, and it's state of the art results in term of efficient quantum circuit - with ultimate combination of low depth and high accuracy, while minimizing the number of CX gates." + ] + }, + { + "cell_type": "markdown", + "source": [ + "` **RESULTS**\n", + "\n", + "Comparison of different molecules in terms of width and depth. The more atoms in a molecule, the more qubits/circuit depth are necessary. System overload when more than 3 atoms.\n", + "\n", + "## **h2**\n", + "\n", + "hw-eff ansatz: width 4/depth34\n", + "\n", + "ucc ansatz: ,\n", + "width 1/depth 6, width 4, depth 3\n", + "\n", + "total en -1.1342995783232035,\n", + "exact result: -1.8572750302023786,\n", + "vqe result: -1.854268572772183\n" + ], + "metadata": { + "id": "TWGNYMkUKh6C" + }, + "id": "TWGNYMkUKh6C" + }, + { + "cell_type": "markdown", + "source": [ + "## **h2o**\n", + "\n", + "hw-eff. ansatz: width 12/depth 375,\n", + "(conn map 0-1..10-11, reps 11)\n", + "\n", + "ucc ansatz: width 8/depth 1218, width 12/depth 1048\n", + "\n", + "total energy -71.7605079203085,\n", + "exact result: -23.544497240443615,\n", + "vqe result: -80.95442108093192" + ], + "metadata": { + "id": "XcbH8UHbKrIU" + }, + "id": "XcbH8UHbKrIU" + }, + { + "cell_type": "markdown", + "source": [ + "##**co2**\n", + "\n", + "hw-eff ansatz: width 24/depth 175\n", + "\n", + "ucc ansatz: width 20/depth 19767, width 24/depth 16968\n", + "\n", + "Error number 90001 occurred. The resources needed to execute this request are insufficient.\n", + " This may be due to computational limitations, or high load on Classiq's servers." + ], + "metadata": { + "id": "Br0-chtAKv6D" + }, + "id": "Br0-chtAKv6D" + }, + { + "cell_type": "markdown", + "id": "54d09062-1b3b-4e4b-8351-5e05a633e269", + "metadata": { + "id": "54d09062-1b3b-4e4b-8351-5e05a633e269" + }, + "source": [ + "## 0. Pre-requirments\n", + "\n", + "The model is using several Classiq's libraries." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "C3SemPUxJw4V", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "collapsed": true, + "id": "C3SemPUxJw4V", + "outputId": "b735d9f4-3d88-4b64-f115-4a9725e63811" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Collecting classiq\n", + " Downloading classiq-0.42.1-py3-none-any.whl (401 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m401.5/401.5 kB\u001b[0m \u001b[31m2.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting ConfigArgParse<2.0.0,>=1.5.3 (from classiq)\n", + " Downloading ConfigArgParse-1.7-py3-none-any.whl (25 kB)\n", + "Collecting Pyomo<6.6,>=6.5 (from classiq)\n", + " Downloading Pyomo-6.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.7 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m10.7/10.7 MB\u001b[0m \u001b[31m53.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting black<25.0,>=24.0 (from classiq)\n", + " Downloading black-24.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.8 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.8/1.8 MB\u001b[0m \u001b[31m61.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting httpx<1,>=0.23.0 (from classiq)\n", + " Downloading httpx-0.27.0-py3-none-any.whl (75 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m75.6/75.6 kB\u001b[0m \u001b[31m8.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: keyring<24.0.0,>=23.5.0 in /usr/lib/python3/dist-packages (from classiq) (23.5.0)\n", + "Requirement already satisfied: matplotlib<4.0.0,>=3.4.3 in /usr/local/lib/python3.10/dist-packages (from classiq) (3.7.1)\n", + "Collecting networkx<3.0.0,>=2.5.1 (from classiq)\n", + " Downloading networkx-2.8.8-py3-none-any.whl (2.0 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.0/2.0 MB\u001b[0m \u001b[31m72.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: numexpr<3.0.0,>=2.7.3 in /usr/local/lib/python3.10/dist-packages (from classiq) (2.10.0)\n", + "Requirement already satisfied: numpy<2.0.0,>=1.20.1 in /usr/local/lib/python3.10/dist-packages (from classiq) (1.25.2)\n", + "Collecting packaging<23.0,>=22.0 (from classiq)\n", + " Downloading packaging-22.0-py3-none-any.whl (42 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m42.6/42.6 kB\u001b[0m \u001b[31m4.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: pandas<3.0.0,>=1.4.0 in /usr/local/lib/python3.10/dist-packages (from classiq) (2.0.3)\n", + "Requirement already satisfied: plotly<6.0.0,>=5.7.0 in /usr/local/lib/python3.10/dist-packages (from classiq) (5.15.0)\n", + "Collecting pydantic<2.0.0,>=1.9.1 (from classiq)\n", + " Downloading pydantic-1.10.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.1/3.1 MB\u001b[0m \u001b[31m61.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: scipy<2.0.0,>=1.10.1 in /usr/local/lib/python3.10/dist-packages (from classiq) (1.11.4)\n", + "Collecting sympy<1.11.0,>=1.9.0 (from classiq)\n", + " Downloading sympy-1.10.1-py3-none-any.whl (6.4 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m6.4/6.4 MB\u001b[0m \u001b[31m64.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: tabulate<1,>=0.8.9 in /usr/local/lib/python3.10/dist-packages (from classiq) (0.9.0)\n", + "Requirement already satisfied: click>=8.0.0 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (8.1.7)\n", + "Collecting mypy-extensions>=0.4.3 (from black<25.0,>=24.0->classiq)\n", + " Downloading mypy_extensions-1.0.0-py3-none-any.whl (4.7 kB)\n", + "Collecting pathspec>=0.9.0 (from black<25.0,>=24.0->classiq)\n", + " Downloading pathspec-0.12.1-py3-none-any.whl (31 kB)\n", + "Requirement already satisfied: platformdirs>=2 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (4.2.2)\n", + "Requirement already satisfied: tomli>=1.1.0 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (2.0.1)\n", + "Requirement already satisfied: typing-extensions>=4.0.1 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (4.12.1)\n", + "Requirement already satisfied: anyio in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (3.7.1)\n", + "Requirement already satisfied: certifi in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (2024.6.2)\n", + "Collecting httpcore==1.* (from httpx<1,>=0.23.0->classiq)\n", + " Downloading httpcore-1.0.5-py3-none-any.whl (77 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m77.9/77.9 kB\u001b[0m \u001b[31m8.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: idna in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (3.7)\n", + "Requirement already satisfied: sniffio in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (1.3.1)\n", + "Collecting h11<0.15,>=0.13 (from httpcore==1.*->httpx<1,>=0.23.0->classiq)\n", + " Downloading h11-0.14.0-py3-none-any.whl (58 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m58.3/58.3 kB\u001b[0m \u001b[31m6.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (1.2.1)\n", + "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (0.12.1)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (4.53.0)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (1.4.5)\n", + "Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (9.4.0)\n", + "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (3.1.2)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (2.8.2)\n", + "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas<3.0.0,>=1.4.0->classiq) (2023.4)\n", + "Requirement already satisfied: tzdata>=2022.1 in /usr/local/lib/python3.10/dist-packages (from pandas<3.0.0,>=1.4.0->classiq) (2024.1)\n", + "Requirement already satisfied: tenacity>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from plotly<6.0.0,>=5.7.0->classiq) (8.3.0)\n", + "Collecting ply (from Pyomo<6.6,>=6.5->classiq)\n", + " Downloading ply-3.11-py2.py3-none-any.whl (49 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m49.6/49.6 kB\u001b[0m \u001b[31m5.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: mpmath>=0.19 in /usr/local/lib/python3.10/dist-packages (from sympy<1.11.0,>=1.9.0->classiq) (1.3.0)\n", + "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.7->matplotlib<4.0.0,>=3.4.3->classiq) (1.16.0)\n", + "Requirement already satisfied: exceptiongroup in /usr/local/lib/python3.10/dist-packages (from anyio->httpx<1,>=0.23.0->classiq) (1.2.1)\n", + "Installing collected packages: ply, sympy, Pyomo, pydantic, pathspec, packaging, networkx, mypy-extensions, h11, ConfigArgParse, httpcore, black, httpx, classiq\n", + " Attempting uninstall: sympy\n", + " Found existing installation: sympy 1.12.1\n", + " Uninstalling sympy-1.12.1:\n", + " Successfully uninstalled sympy-1.12.1\n", + " Attempting uninstall: pydantic\n", + " Found existing installation: pydantic 2.7.3\n", + " Uninstalling pydantic-2.7.3:\n", + " Successfully uninstalled pydantic-2.7.3\n", + " Attempting uninstall: packaging\n", + " Found existing installation: packaging 24.0\n", + " Uninstalling packaging-24.0:\n", + " Successfully uninstalled packaging-24.0\n", + " Attempting uninstall: networkx\n", + " Found existing installation: networkx 3.3\n", + " Uninstalling networkx-3.3:\n", + " Successfully uninstalled networkx-3.3\n", + "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", + "torch 2.3.0+cu121 requires nvidia-cublas-cu12==12.1.3.1; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cuda-cupti-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cuda-nvrtc-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cuda-runtime-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cudnn-cu12==8.9.2.26; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cufft-cu12==11.0.2.54; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-curand-cu12==10.3.2.106; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cusolver-cu12==11.4.5.107; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-cusparse-cu12==12.1.0.106; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-nccl-cu12==2.20.5; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", + "torch 2.3.0+cu121 requires nvidia-nvtx-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\u001b[0m\u001b[31m\n", + "\u001b[0mSuccessfully installed ConfigArgParse-1.7 Pyomo-6.5.0 black-24.4.2 classiq-0.42.1 h11-0.14.0 httpcore-1.0.5 httpx-0.27.0 mypy-extensions-1.0.0 networkx-2.8.8 packaging-22.0 pathspec-0.12.1 ply-3.11 pydantic-1.10.15 sympy-1.10.1\n" + ] + } + ], + "source": [ + "!pip install classiq" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "zjvfmLnXJ1Kk", + "metadata": { + "id": "zjvfmLnXJ1Kk" + }, + "outputs": [], + "source": [ + "from classiq import *" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "LHrqCSj2J5PC", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "LHrqCSj2J5PC", + "outputId": "75c65d46-2d6a-4796-92ee-3dc517c54b93" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Your user code: SGSG-NSNW\n", + "If a browser doesn't automatically open, please visit this URL from any trusted device: https://auth.classiq.io/activate?user_code=SGSG-NSNW\n" + ] + } + ], + "source": [ + "import classiq\n", + "classiq.authenticate()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c6bbe65f-1e6a-475c-a43f-cb4cc04bbdfa", + "metadata": { + "id": "c6bbe65f-1e6a-475c-a43f-cb4cc04bbdfa" + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "from classiq import QuantumProgram, construct_chemistry_model, execute, show, synthesize\n", + "from classiq.applications.chemistry import (\n", + " ChemistryExecutionParameters,\n", + " HEAParameters,\n", + " Molecule,\n", + " MoleculeProblem,\n", + " UCCParameters,\n", + ")\n", + "from classiq.execution import (\n", + " ClassiqBackendPreferences,\n", + " ClassiqSimulatorBackendNames,\n", + " ExecutionPreferences,\n", + " OptimizerType,\n", + ")\n", + "from classiq.synthesis import set_execution_preferences" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "HnN_rrrOK-AI", + "metadata": { + "id": "HnN_rrrOK-AI" + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "faa3c10f", + "metadata": { + "id": "faa3c10f" + }, + "source": [ + "## 1. Generate Qubit Hamiltonian\n", + "\n", + "The first step is to define the molecule we wish to simulate. We hereby declare the class Molecule and insert a list of atoms and their spacial positions. The algorithm will automatically regard relevant attributes such as the atom's mass, charge and spin.\n", + "\n", + "As mentioned above, during this tutorial, we demonstrate how to define and find the ground state and energies for 3 molecules:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "VN6XdfYfLApS", + "metadata": { + "id": "VN6XdfYfLApS" + }, + "outputs": [], + "source": [ + "#hydrogen\n", + "molecule_H2 = Molecule(atoms=[(\"H\", (0.0, 0.0, 0)), (\"H\", (0.0, 0.0, 0.735))])\n", + "\n", + "#oxygen\n", + "molecule_O2 = Molecule(atoms=[(\"O\", (0.0, 0.0, 0)), (\"O\", (0.0, 0.0, 1.16))])\n", + "\n", + "#lithium hydride\n", + "molecule_LiH = Molecule(atoms=[(\"H\", (0.0, 0.0, 0.0)), (\"Li\", (0.0, 0.0, 1.596))])\n", + "\n", + "#water\n", + "molecule_H2O = Molecule(\n", + " atoms=[(\"O\", (0.0, 0.0, 0.0)), (\"H\", (0, 0.586, 0.757)), (\"H\", (0, 0.586, -0.757))]\n", + ")\n", + "#beryllium hydride\n", + "molecule_BeH2 = Molecule(\n", + " atoms=[(\"Be\", (0.0, 0.0, 0.0)), (\"H\", (0, 0, 1.334)), (\"H\", (0, 0, -1.334))]\n", + ")\n", + "#carbon dioxide\n", + "molecule_CO2 = Molecule(atoms=[(\"C\", (0.0, 0.0, 0.0)),\n", + " (\"O\", (0, 0, 1.1693)), (\"O\", (0, 0, -1.1693))])\n", + "\n", + "#ethyne, acetylene\n", + "molecule_C2H2 = Molecule(atoms=[(\"C\", (0, 0, -0.5977)), (\"C\", (0, 0, 0.5977)),\n", + " (\"H\", (0, 0, -1.6692)), (\"H\", (0, 0, 1.6692))])\n", + "\n", + "#chloroform\n", + "molecule_CH3Cl = Molecule(atoms=[(\"C\", (0, 0, -1.1401)), (\"Cl\", (0, 0, 0.6645)),\n", + " (\"H\", (0, 1.0343, -1.4855)),\n", + " (\"H\", (0.8957, -0.5171, -1.4855)), (\"H\", (-0.8957, -0.5171, -1.4855))])\n", + "\n", + "#ethylene\n", + "molecule_C2H4 = Molecule(atoms=[(\"C\", (0, 0, 0.6673)), (\"C\", (0, 0, -0.6673)),\n", + " (\"H\", (0, 0.9239, 1.2411)), (\"H\", (0, -0.9239, 1.2411)),\n", + " (\"H\", (0, -0.9239, -1.2411)), (\"H\", (0, 0.9239, -1.2411))])\n" + ] + }, + { + "cell_type": "markdown", + "id": "ab162f48", + "metadata": { + "id": "ab162f48" + }, + "source": [ + "Similarly, the user is able to construct any valid essambly of atoms. The distances are recived in Å ($10^{-10} m$). We will continue this demonstration with a specific molecule. The user can change the `molecule` below to study other cases." + ] + }, + { + "cell_type": "code", + "execution_count": 157, + "id": "2e77678f", + "metadata": { + "id": "2e77678f" + }, + "outputs": [], + "source": [ + "molecule = molecule_CO2" + ] + }, + { + "cell_type": "markdown", + "id": "c4a541a5", + "metadata": { + "id": "c4a541a5" + }, + "source": [ + "Next, we define the parameters of the Hamiltonian generation program. The user has a choice over the following options:\n", + "- mapping (str): the mapping between the fermionic Hamiltonian and an qubits Hamiltonian. Supported types:\n", + " - \"jordan_wigner\"\n", + " - \"parity\"\n", + " - \"bravyi_kitaev\"\n", + " - \"fast_bravyi_kitaev\"\n", + "- freeze_core (bool): remove the \"core\" orbitals of the atoms defining the molecule.\n", + "- z2_symmetries (bool): whether to perform z2 symmetries reduction. If symmetries in the molecules exist, this option will decrease the number of qubits used and will efficient the Hamiltonian and thus the calculations.\n", + "\n", + "Finally, the Hamiltonian is generated from `MoleculeProblem`." + ] + }, + { + "cell_type": "code", + "execution_count": 158, + "id": "2e0426d5", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "collapsed": true, + "id": "2e0426d5", + "outputId": "205584a3-ca38-4d54-ca52-dbc3f88b8bbf" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Your Hamiltonian is\n", + "-55.215 * IIIIIIIIIIIIIIIIIIII\n", + "+1.411 * ZIZZIIZZZIZIZIIZZIIZ\n", + "-0.046 * IIZZZZIZZIIZZIIIIZIX\n", + "+0.046 * ZIIIZZZIIIZZIIIZZZIX\n", + "-0.120 * IIIIIIIIIIIZXIIIIIII\n", + "+0.120 * ZIZZIIZZZIZZXIIZZIIZ\n", + "+1.413 * ZIIIZZZIIIZZIIIZZZII\n", + "-0.012 * ZIZZIIZZZIZZIZZIIXIZ\n", + "+0.012 * IIZZZZIZZIIIIZZZZXIZ\n", + "+0.109 * ZIZZIIZZZIZXZIIZZIIZ\n", + "-0.109 * IIZZZZIZZIIXZIIIIZIZ\n", + "+1.083 * IIIIIIIIIIIIIIIIIIIZ\n", + "+0.061 * IIZZZZIZZIIIYIIIIZIY\n", + "+0.061 * IIZZZZIZZIIIXIIIIZIX\n", + "+1.009 * IIZZZZIZZIIIIZZZZIZI\n", + "-0.106 * IIZZZZIZZIIIIZXIIZII\n", + "+0.106 * IIIIIIIIIIIIIIXZZZZI\n", + "-0.005 * IIZZZZIZZIIIIXIIIZII\n", + "+0.005 * IIIIIIIIIIIIIXZZZZZI\n", + "+1.009 * IIIIIIIIIIIIIIIIIIZI\n", + "-0.005 * IIIIIIIIIIIIIIYZZZYI\n", + "-0.005 * IIIIIIIIIIIIIIXZZZXI\n", + "+0.106 * IIIIIIIIIIIIIYZZZZYI\n", + "+0.106 * IIIIIIIIIIIIIXZZZZXI\n", + "+1.071 * IIIIIIIIIIIIIIIIIZII\n", + "-0.071 * IIIIIIIIIIIYZZZZZYII\n", + "-0.071 * IIIIIIIIIIIXZZZZZXII\n", + "+1.021 * IIIIIIIIIIIIIIIIZIII\n", + "+1.021 * IIIIIIIIIIIIIIIZIIII\n", + "+0.738 * IIIIIIIIIIIIIIZIIIII\n", + "+0.738 * IIIIIIIIIIIIIZIIIIII\n", + "+0.721 * IIIIIIIIIIIIZIIIIIII\n", + "+0.366 * IIIIIIIIIIIZIIIIIIII\n", + "+1.411 * ZZZZZZZZZZZIIIIIIIII\n", + "-0.046 * ZZZZZZZZZXIIIIIIIIII\n", + "+0.046 * IIIIIIIIIXZIIIIIIIII\n", + "-0.120 * ZXIIIIIIIIIIIIIIIIII\n", + "+0.120 * IXZZZZZZZZZIIIIIIIII\n", + "+1.413 * IIIIIIIIIIZIIIIIIIII\n", + "+0.012 * IIIIIIYZZZYIIIIIIIII\n", + "+0.012 * IIIIIIXZZZXIIIIIIIII\n", + "-0.109 * YZZZZZZZZZYIIIIIIIII\n", + "-0.109 * XZZZZZZZZZXIIIIIIIII\n", + "+1.083 * IIIIIIIIIZIIIIIIIIII\n", + "+0.061 * IYZZZZZZZYIIIIIIIIII\n", + "+0.061 * IXZZZZZZZXIIIIIIIIII\n", + "+1.009 * IIIIIIIIZIIIIIIIIIII\n", + "+0.106 * IIIYZZZZYIIIIIIIIIII\n", + "+0.106 * IIIXZZZZXIIIIIIIIIII\n", + "+0.005 * IIYZZZZZYIIIIIIIIIII\n", + "+0.005 * IIXZZZZZXIIIIIIIIIII\n", + "+1.009 * IIIIIIIZIIIIIIIIIIII\n", + "-0.005 * IIIYZZZYIIIIIIIIIIII\n", + "-0.005 * IIIXZZZXIIIIIIIIIIII\n", + "+0.106 * IIYZZZZYIIIIIIIIIIII\n", + "+0.106 * IIXZZZZXIIIIIIIIIIII\n", + "+1.071 * IIIIIIZIIIIIIIIIIIII\n", + "-0.071 * YZZZZZYIIIIIIIIIIIII\n", + "-0.071 * XZZZZZXIIIIIIIIIIIII\n", + "+1.021 * IIIIIZIIIIIIIIIIIIII\n", + "+1.021 * IIIIZIIIIIIIIIIIIIII\n", + "+0.738 * IIIZIIIIIIIIIIIIIIII\n", + "+0.738 * IIZIIIIIIIIIIIIIIIII\n", + "+0.721 * IZIIIIIIIIIIIIIIIIII\n", + "+0.366 * ZIIIIIIIIIIIIIIIIIII\n", + "+0.077 * IIZZZZIZZIIZZIIIIZIZ\n", + "+0.011 * IIIIIIIIIIIZZZZZZXII\n", + "-0.011 * ZIIIZZZIIIZIZZZIIXII\n", + "-0.008 * IIIIIIIIIIIXIIIIIIII\n", + "+0.008 * ZIIIZZZIIIZXIIIZZZII\n", + "+0.097 * ZIZZIIZZZIZIZIIZZIII\n", + "+0.001 * ZIIIZZZIIIZIXIIZZZIX\n", + "+0.001 * ZIIIZZZIIIZIYIIZZZIY\n", + "+0.105 * ZIIIZZZIIIZIZZZIIIZZ\n", + "+0.002 * ZIIIZZZIIIZIZZXZZZIZ\n", + "-0.002 * ZIZZIIZZZIZIZIXIIZZZ\n", + "+0.000 * ZIIIZZZIIIZIZXIZZZIZ\n", + "-0.000 * ZIZZIIZZZIZIZXZIIZZZ\n", + "+0.105 * ZIZZIIZZZIZIZIIZZIZZ\n", + "+0.000 * ZIZZIIZZZIZIZIYIIZYZ\n", + "+0.000 * ZIZZIIZZZIZIZIXIIZXZ\n", + "-0.002 * ZIZZIIZZZIZIZYZIIZYZ\n", + "-0.002 * ZIZZIIZZZIZIZXZIIZXZ\n", + "+0.105 * ZIZZIIZZZIZIZIIZZZIZ\n", + "+0.006 * ZIZZIIZZZIZYIZZIIYIZ\n", + "+0.006 * ZIZZIIZZZIZXIZZIIXIZ\n", + "+0.107 * ZIZZIIZZZIZIZIIZIIIZ\n", + "+0.107 * ZIZZIIZZZIZIZIIIZIIZ\n", + "+0.116 * ZIZZIIZZZIZIZIZZZIIZ\n", + "+0.116 * ZIZZIIZZZIZIZZIZZIIZ\n", + "+0.116 * ZIZZIIZZZIZIIIIZZIIZ\n", + "+0.130 * ZIZZIIZZZIZZZIIZZIIZ\n", + "+0.016 * ZIZZIIZZZIZIZIIZZIIX\n", + "-0.016 * IIIIIIIIIIIIIIIIIIIX\n", + "+0.008 * ZIIIZZZIIIZIXIIZZZII\n", + "-0.008 * IIZZZZIZZIIIXIIIIZIZ\n", + "+0.005 * ZIIIZZZIIIZIZZZIIYIY\n", + "+0.037 * IIIIIIIIIIIZZZZZZXIX\n", + "+0.032 * IIIIIIIIIIIZZZZZZYIY\n", + "+0.032 * IIZZZZIZZIIIIZZZZYIY\n", + "+0.037 * IIZZZZIZZIIIIZZZZXIX\n", + "+0.005 * ZIZZIIZZZIZZIZZIIYIY\n", + "-0.002 * ZIIIZZZIIIZYIIIZZZIY\n", + "+0.005 * IIIIIIIIIIIXIIIIIIIX\n", + "+0.007 * IIIIIIIIIIIYIIIIIIIY\n", + "+0.007 * IIZZZZIZZIIYZIIIIZIY\n", + "+0.005 * IIZZZZIZZIIXZIIIIZIX\n", + "-0.002 * ZIZZIIZZZIZYZIIZZIIY\n", + "-0.000 * ZIZZIIZZZIZIZIIZXZZZ\n", + "+0.001 * IIIIIIIIIIIZZZZZXIIZ\n", + "-0.001 * IIZZZZIZZIIZZIIIXIZZ\n", + "-0.001 * IIZZZZIZZIIIIZZZXZII\n", + "+0.001 * IIIIIIIIIIIIIIIIXZZI\n", + "-0.000 * ZIZZIIZZZIZZIZZIXIII\n", + "-0.003 * ZIZZIIZZZIZIZIIXIZZZ\n", + "+0.034 * IIIIIIIIIIIZZZZXIIIZ\n", + "-0.031 * IIZZZZIZZIIZZIIXZIZZ\n", + "-0.031 * IIZZZZIZZIIIIZZXIZII\n", + "+0.034 * IIIIIIIIIIIIIIIXZZZI\n", + "-0.003 * ZIZZIIZZZIZZIZZXZIII\n", + "-0.003 * ZIZZIIZZZIZIZIIZXZXZ\n", + "-0.034 * IIZZZZIZZIIZZIIIYIYZ\n", + "-0.031 * IIZZZZIZZIIZZIIIXIXZ\n", + "+0.031 * IIIIIIIIIIIIIIIIYZYI\n", + "+0.034 * IIIIIIIIIIIIIIIIXZXI\n", + "+0.003 * ZIIIZZZIIIZZIIIZYIYI\n", + "+0.000 * ZIZZIIZZZIZIZIIXIZXZ\n", + "+0.001 * IIZZZZIZZIIZZIIYZIYZ\n", + "+0.001 * IIZZZZIZZIIZZIIXZIXZ\n", + "-0.001 * IIIIIIIIIIIIIIIYZZYI\n", + "-0.001 * IIIIIIIIIIIIIIIXZZXI\n", + "-0.000 * ZIIIZZZIIIZZIIIYIIYI\n", + "+0.003 * ZIZZIIZZZIZIXZZIIXIZ\n", + "-0.021 * IIZZZZIZZIIZXZZZZXIZ\n", + "-0.017 * IIZZZZIZZIIZYZZZZYIZ\n", + "-0.017 * IIIIIIIIIIIIYZZZZYII\n", + "-0.021 * IIIIIIIIIIIIXZZZZXII\n", + "+0.003 * ZIIIZZZIIIZZXZZIIXII\n", + "+0.000 * ZIZZIIZZZIZIZIYIYIIZ\n", + "-0.001 * IIZZZZIZZIIZZIYZYZIZ\n", + "-0.001 * IIZZZZIZZIIZZIXZXZIZ\n", + "+0.001 * IIIIIIIIIIIIIIYZYIII\n", + "+0.001 * IIIIIIIIIIIIIIXZXIII\n", + "-0.000 * ZIIIZZZIIIZZIIXIXZII\n", + "-0.002 * ZIZZIIZZZIZIZYZIYIIZ\n", + "+0.031 * IIZZZZIZZIIZZYZZYZIZ\n", + "+0.029 * IIZZZZIZZIIZZXZZXZIZ\n", + "-0.029 * IIIIIIIIIIIIIYZZYIII\n", + "-0.031 * IIIIIIIIIIIIIXZZXIII\n", + "+0.002 * ZIIIZZZIIIZZIXZIXZII\n", + "-0.002 * ZIZZIIZZZIZIZIYYZIIZ\n", + "+0.031 * IIZZZZIZZIIZZIYYIZIZ\n", + "+0.029 * IIZZZZIZZIIZZIXXIZIZ\n", + "-0.029 * IIIIIIIIIIIIIIYYIIII\n", + "-0.031 * IIIIIIIIIIIIIIXXIIII\n", + "+0.002 * ZIIIZZZIIIZZIIXXZZII\n", + "-0.000 * ZIZZIIZZZIZIZYZYZIIZ\n", + "+0.001 * IIZZZZIZZIIZZYZYIZIZ\n", + "+0.001 * IIZZZZIZZIIZZXZXIZIZ\n", + "-0.001 * IIIIIIIIIIIIIYZYIIII\n", + "-0.001 * IIIIIIIIIIIIIXZXIIII\n", + "+0.000 * ZIIIZZZIIIZZIXZXZZII\n", + "-0.002 * ZIZZIIZZZIZYYIIZZIIZ\n", + "-0.032 * IIZZZZIZZIIXXIIIIZIZ\n", + "-0.030 * IIZZZZIZZIIYYIIIIZIZ\n", + "-0.030 * IIIIIIIIIIIYYIIIIIII\n", + "-0.032 * IIIIIIIIIIIXXIIIIIII\n", + "-0.002 * ZIIIZZZIIIZYYIIZZZII\n", + "-0.017 * IIIIIIIIIIIZXIIIIIIZ\n", + "+0.017 * ZIZZIIZZZIZZXIIZZIII\n", + "+0.007 * IIIIIIIIIIIZZZZZZZZX\n", + "-0.007 * ZIZZIIZZZIZZIZZIIZZX\n", + "+0.006 * IIZZZZIZZIIZZIYZZIZY\n", + "+0.010 * IIIIIIIIIIIZZZXIIIIX\n", + "-0.004 * IIZZZZIZZIIZZIXZZIZX\n", + "-0.004 * ZIZZIIZZZIZZIZXZZIIX\n", + "+0.010 * ZIIIZZZIIIZZIIXIIIZX\n", + "+0.006 * ZIZZIIZZZIZZIZYZZIIY\n", + "+0.000 * IIZZZZIZZIIZZYZZZIZY\n", + "+0.001 * IIIIIIIIIIIZZXIIIIIX\n", + "-0.000 * IIZZZZIZZIIZZXZZZIZX\n", + "-0.000 * ZIZZIIZZZIZZIXIZZIIX\n", + "+0.001 * ZIIIZZZIIIZZIXZIIIZX\n", + "+0.000 * ZIZZIIZZZIZZIYIZZIIY\n", + "+0.007 * IIZZZZIZZIIZZIIIIZZX\n", + "-0.007 * ZIIIZZZIIIZZIIIZZZZX\n", + "-0.000 * IIZZZZIZZIIZZIYZZIXY\n", + "+0.001 * IIZZZZIZZIIZZIYZZIYX\n", + "+0.000 * IIZZZZIZZIIZZIXZZIXX\n", + "-0.000 * ZIIIZZZIIIZZIIYIIIYX\n", + "-0.001 * ZIIIZZZIIIZZIIXIIIXX\n", + "-0.000 * ZIIIZZZIIIZZIIXIIIYY\n", + "+0.006 * IIZZZZIZZIIZZYZZZIXY\n", + "-0.010 * IIZZZZIZZIIZZYZZZIYX\n", + "-0.004 * IIZZZZIZZIIZZXZZZIXX\n", + "+0.004 * ZIIIZZZIIIZZIYZIIIYX\n", + "+0.010 * ZIIIZZZIIIZZIXZIIIXX\n", + "+0.006 * ZIIIZZZIIIZZIXZIIIYY\n", + "+0.004 * IIZZZZIZZIIZZIIIIIIX\n", + "-0.004 * ZIIIZZZIIIZZIIIZZIIX\n", + "-0.016 * IIZZZZIZZIIXIZZZZYIY\n", + "-0.021 * IIZZZZIZZIIXIZZZZXIX\n", + "-0.006 * IIZZZZIZZIIYIZZZZYIX\n", + "+0.006 * ZIIIZZZIIIZXZZZIIXIX\n", + "+0.021 * ZIIIZZZIIIZYZZZIIYIX\n", + "-0.016 * ZIIIZZZIIIZYZZZIIXIY\n", + "+0.001 * IIZZZZIZZIIZZIIIZZIX\n", + "-0.001 * ZIIIZZZIIIZZIIIZIZIX\n", + "+0.001 * IIZZZZIZZIIZZIIZIZIX\n", + "-0.001 * ZIIIZZZIIIZZIIIIZZIX\n", + "+0.011 * IIZZZZIZZIIZZIZIIZIX\n", + "-0.011 * ZIIIZZZIIIZZIIZZZZIX\n", + "+0.011 * IIZZZZIZZIIZZZIIIZIX\n", + "-0.011 * ZIIIZZZIIIZZIZIZZZIX\n", + "+0.005 * IIZZZZIZZIIZIIIIIZIX\n", + "-0.005 * ZIIIZZZIIIZZZIIZZZIX\n", + "+0.014 * IIZZZZIZZIIIZIIIIZIX\n", + "-0.014 * ZIIIZZZIIIZIIIIZZZIX\n", + "-0.009 * IIZZZZIZZIIZXZZZZIZI\n", + "+0.009 * ZIIIZZZIIIZZXZZIIIZZ\n", + "-0.000 * IIZZZZIZZIIZZIIIYYII\n", + "-0.000 * IIIIIIIIIIIZZZZZXXZI\n", + "+0.000 * IIIIIIIIIIIZZZZZYYZI\n", + "-0.000 * ZIIIZZZIIIZZIIIZXXIZ\n", + "+0.000 * ZIIIZZZIIIZZIIIZYYIZ\n", + "+0.000 * ZIZZIIZZZIZZIZZIXXZZ\n", + "-0.001 * IIZZZZIZZIIZZIIYZYII\n", + "-0.001 * IIIIIIIIIIIZZZZXIXZI\n", + "+0.000 * IIIIIIIIIIIZZZZYIYZI\n", + "-0.000 * ZIIIZZZIIIZZIIIXIXIZ\n", + "+0.001 * ZIIIZZZIIIZZIIIYIYIZ\n", + "+0.001 * ZIZZIIZZZIZZIZZXZXZZ\n", + "+0.000 * IIZZZZIZZIIXIZZZXZII\n", + "-0.000 * IIIIIIIIIIIXIIIIXZZI\n", + "+0.000 * IIIIIIIIIIIYIIIIYZZI\n", + "-0.000 * ZIIIZZZIIIZXZZZIXZIZ\n", + "+0.000 * ZIIIZZZIIIZYZZZIYZIZ\n", + "-0.000 * ZIZZIIZZZIZYZIIZYZZZ\n", + "+0.010 * IIZZZZIZZIIXIZZXIZII\n", + "-0.009 * IIIIIIIIIIIXIIIXZZZI\n", + "+0.002 * IIIIIIIIIIIYIIIYZZZI\n", + "-0.002 * ZIIIZZZIIIZXZZZXZZIZ\n", + "+0.009 * ZIIIZZZIIIZYZZZYZZIZ\n", + "-0.010 * ZIZZIIZZZIZYZIIYIZZZ\n", + "+0.007 * IIZZZZIZZIIZXZXIIZII\n", + "-0.001 * IIIIIIIIIIIZXIXZZZZI\n", + "+0.006 * IIIIIIIIIIIZYIYZZZZI\n", + "+0.006 * ZIIIZZZIIIZZYZYZZZIZ\n", + "-0.001 * ZIIIZZZIIIZZXZXZZZIZ\n", + "+0.007 * ZIZZIIZZZIZZXIXIIZZZ\n", + "+0.000 * IIZZZZIZZIIZXXIIIZII\n", + "-0.000 * IIIIIIIIIIIZXXZZZZZI\n", + "+0.000 * IIIIIIIIIIIZYYZZZZZI\n", + "+0.000 * ZIIIZZZIIIZZYYIZZZIZ\n", + "-0.000 * ZIIIZZZIIIZZXXIZZZIZ\n", + "+0.000 * ZIZZIIZZZIZZXXZIIZZZ\n", + "-0.009 * IIIIIIIIIIIZXIIIIIZI\n", + "+0.009 * ZIZZIIZZZIZZXIIZZIZZ\n", + "-0.001 * IIIIIIIIIIIZZZZZXYYI\n", + "-0.001 * IIIIIIIIIIIZZZZZXXXI\n", + "+0.000 * IIIIIIIIIIIZZZZZYYXI\n", + "+0.000 * ZIZZIIZZZIZZIZZIYXYZ\n", + "+0.001 * ZIZZIIZZZIZZIZZIXYYZ\n", + "+0.001 * ZIZZIIZZZIZZIZZIXXXZ\n", + "+0.000 * IIIIIIIIIIIZZZZXIYYI\n", + "+0.000 * IIIIIIIIIIIZZZZXIXXI\n", + "-0.000 * IIIIIIIIIIIZZZZYIYXI\n", + "-0.000 * ZIZZIIZZZIZZIZZYZXYZ\n", + "-0.000 * ZIZZIIZZZIZZIZZXZYYZ\n", + "-0.000 * ZIZZIIZZZIZZIZZXZXXZ\n", + "-0.010 * IIIIIIIIIIIXIIIIYZYI\n", + "-0.009 * IIIIIIIIIIIXIIIIXZXI\n", + "+0.002 * IIIIIIIIIIIYIIIIYZXI\n", + "+0.002 * ZIZZIIZZZIZXZIIZYZYZ\n", + "+0.009 * ZIZZIIZZZIZYZIIZXZYZ\n", + "-0.010 * ZIZZIIZZZIZYZIIZYZXZ\n", + "+0.000 * IIIIIIIIIIIXIIIYZZYI\n", + "+0.000 * IIIIIIIIIIIXIIIXZZXI\n", + "-0.000 * IIIIIIIIIIIYIIIYZZXI\n", + "-0.000 * ZIZZIIZZZIZXZIIYIZYZ\n", + "-0.000 * ZIZZIIZZZIZYZIIXIZYZ\n", + "+0.000 * ZIZZIIZZZIZYZIIYIZXZ\n", + "+0.000 * IIIIIIIIIIIZXIYZZZYI\n", + "+0.000 * IIIIIIIIIIIZXIXZZZXI\n", + "-0.000 * IIIIIIIIIIIZYIYZZZXI\n", + "-0.000 * ZIZZIIZZZIZZYIXIIZYZ\n", + "-0.000 * ZIZZIIZZZIZZXIYIIZYZ\n", + "-0.000 * ZIZZIIZZZIZZXIXIIZXZ\n", + "-0.007 * IIIIIIIIIIIZXYZZZZYI\n", + "-0.001 * IIIIIIIIIIIZXXZZZZXI\n", + "+0.006 * IIIIIIIIIIIZYYZZZZXI\n", + "+0.006 * ZIZZIIZZZIZZYXZIIZYZ\n", + "+0.001 * ZIZZIIZZZIZZXYZIIZYZ\n", + "+0.007 * ZIZZIIZZZIZZXXZIIZXZ\n", + "-0.013 * IIIIIIIIIIIZXIIIIZII\n", + "+0.013 * ZIZZIIZZZIZZXIIZZZIZ\n", + "-0.000 * IIIIIIIIIIIZZZXIYYII\n", + "-0.000 * IIIIIIIIIIIZZZXIXXII\n", + "-0.000 * IIIIIIIIIIIZZZYIYXII\n", + "-0.000 * ZIZZIIZZZIZZIZXZYYIZ\n", + "+0.000 * ZIZZIIZZZIZZIZYZXYIZ\n", + "-0.000 * ZIZZIIZZZIZZIZYZYXIZ\n", + "+0.002 * IIIIIIIIIIIZZXIIYYII\n", + "+0.002 * IIIIIIIIIIIZZXIIXXII\n", + "+0.000 * IIIIIIIIIIIZZYIIYXII\n", + "+0.000 * ZIZZIIZZZIZZIXIZYYIZ\n", + "-0.002 * ZIZZIIZZZIZZIYIZXYIZ\n", + "+0.002 * ZIZZIIZZZIZZIYIZYXIZ\n", + "+0.002 * IIIIIIIIIIIZZZXYZYII\n", + "+0.002 * IIIIIIIIIIIZZZXXZXII\n", + "+0.000 * IIIIIIIIIIIZZZYYZXII\n", + "+0.000 * ZIZZIIZZZIZZIZXYIYIZ\n", + "-0.002 * ZIZZIIZZZIZZIZYXIYIZ\n", + "+0.002 * ZIZZIIZZZIZZIZYYIXIZ\n", + "+0.000 * IIIIIIIIIIIZZXIYZYII\n", + "+0.000 * IIIIIIIIIIIZZXIXZXII\n", + "+0.000 * IIIIIIIIIIIZZYIYZXII\n", + "+0.000 * ZIZZIIZZZIZZIXIYIYIZ\n", + "-0.000 * ZIZZIIZZZIZZIYIXIYIZ\n", + "+0.000 * ZIZZIIZZZIZZIYIYIXIZ\n", + "+0.001 * IIIIIIIIIIIXYZZZZYII\n", + "+0.004 * IIIIIIIIIIIXXZZZZXII\n", + "+0.003 * IIIIIIIIIIIYYZZZZXII\n", + "+0.003 * ZIZZIIZZZIZXYZZIIYIZ\n", + "-0.004 * ZIZZIIZZZIZYXZZIIYIZ\n", + "+0.001 * ZIZZIIZZZIZYYZZIIXIZ\n", + "-0.011 * IIIIIIIIIIIZXIIIZIII\n", + "+0.011 * ZIZZIIZZZIZZXIIZIIIZ\n", + "-0.000 * IIIIIIIIIIIXIIYZYIII\n", + "-0.000 * IIIIIIIIIIIXIIXZXIII\n", + "+0.000 * IIIIIIIIIIIYIIYZXIII\n", + "-0.000 * ZIZZIIZZZIZXZIXIXIIZ\n", + "+0.000 * ZIZZIIZZZIZYZIYIXIIZ\n", + "-0.000 * ZIZZIIZZZIZYZIXIYIIZ\n", + "+0.009 * IIIIIIIIIIIXIYZZYIII\n", + "+0.007 * IIIIIIIIIIIXIXZZXIII\n", + "-0.003 * IIIIIIIIIIIYIYZZXIII\n", + "+0.003 * ZIZZIIZZZIZXZXZIXIIZ\n", + "-0.007 * ZIZZIIZZZIZYZYZIXIIZ\n", + "+0.009 * ZIZZIIZZZIZYZXZIYIIZ\n", + "-0.011 * IIIIIIIIIIIZXIIZIIII\n", + "+0.011 * ZIZZIIZZZIZZXIIIZIIZ\n", + "+0.009 * IIIIIIIIIIIXIIYYIIII\n", + "+0.007 * IIIIIIIIIIIXIIXXIIII\n", + "-0.003 * IIIIIIIIIIIYIIYXIIII\n", + "+0.003 * ZIZZIIZZZIZXZIXXZIIZ\n", + "-0.007 * ZIZZIIZZZIZYZIYXZIIZ\n", + "+0.009 * ZIZZIIZZZIZYZIXYZIIZ\n", + "+0.000 * IIIIIIIIIIIXIYZYIIII\n", + "+0.000 * IIIIIIIIIIIXIXZXIIII\n", + "-0.000 * IIIIIIIIIIIYIYZXIIII\n", + "+0.000 * ZIZZIIZZZIZXZXZXZIIZ\n", + "-0.000 * ZIZZIIZZZIZYZYZXZIIZ\n", + "+0.000 * ZIZZIIZZZIZYZXZYZIIZ\n", + "-0.006 * IIIIIIIIIIIZXIZIIIII\n", + "+0.006 * ZIZZIIZZZIZZXIZZZIIZ\n", + "-0.006 * IIIIIIIIIIIZXZIIIIII\n", + "+0.006 * ZIZZIIZZZIZZXZIZZIIZ\n", + "+0.003 * IIIIIIIIIIIIXIIIIIII\n", + "-0.003 * ZIZZIIZZZIZIXIIZZIIZ\n", + "+0.133 * IZIIZZIIIZIIZIIZZIIZ\n", + "+0.011 * ZZIIIIZIIZZZZIIIIZIX\n", + "-0.011 * IZZZIIIZZZIZIIIZZZIX\n", + "-0.013 * ZZZZZZZZZZZZXIIIIIII\n", + "+0.013 * IZIIZZIIIZIZXIIZZIIZ\n", + "+0.058 * ZZIIIIZIIZXZZIIIIZIZ\n", + "-0.058 * IIZZZZIZZIXZZIIIIZIZ\n", + "-0.058 * ZZZZZZZZZZXIIIIIIIII\n", + "+0.058 * IIIIIIIIIIXIIIIIIIII\n", + "+0.005 * ZZZZZZZZZZXZZZZZZXII\n", + "-0.005 * IIIIIIIIIIXZZZZZZXII\n", + "+0.005 * IZIIZZIIIZYZIZZIIYIZ\n", + "-0.005 * ZIZZIIZZZIYZIZZIIYIZ\n", + "+0.014 * ZZZZZZZZZZXXIIIIIIII\n", + "-0.014 * IIIIIIIIIIXXIIIIIIII\n", + "+0.014 * IZIIZZIIIZYYZIIZZIIZ\n", + "-0.014 * ZIZZIIZZZIYYZIIZZIIZ\n", + "+0.011 * IZIIZZIIIXZIZIIZZIIZ\n", + "-0.011 * ZIZZIIZZZXIIZIIZZIIZ\n", + "+0.016 * ZZIIIIZIIXIZZIIIIZIX\n", + "-0.016 * IIZZZZIZZXZZZIIIIZIX\n", + "-0.016 * IZZZIIIZZXZZIIIZZZIX\n", + "+0.016 * ZIIIZZZIIXIZIIIZZZIX\n", + "+0.004 * ZZZZZZZZZXIZXIIIIIII\n", + "-0.004 * IIIIIIIIIXZZXIIIIIII\n", + "-0.004 * IZIIZZIIIXZZXIIZZIIZ\n", + "+0.004 * ZIZZIIZZZXIZXIIZZIIZ\n", + "+0.018 * ZZZZZZZZXIIZZZZZZZZI\n", + "-0.018 * IIIIIIIIXZZZZZZZZZZI\n", + "-0.018 * IZZZIIIZXIZZIIIZZZIZ\n", + "+0.018 * ZIIIZZZIXZIZIIIZZZIZ\n", + "-0.001 * ZZZZZZZZXIIZZZXIIIII\n", + "+0.001 * IIIIIIIIXZZZZZXIIIII\n", + "-0.001 * IZIIZZIIYIZZIZYZZIIZ\n", + "+0.001 * ZIZZIIZZYZIZIZYZZIIZ\n", + "-0.000 * ZZZZZZZZXIIZZXIIIIII\n", + "+0.000 * IIIIIIIIXZZZZXIIIIII\n", + "-0.000 * IZIIZZIIYIZZIYIZZIIZ\n", + "+0.000 * ZIZZIIZZYZIZIYIZZIIZ\n", + "+0.018 * ZZZZZZZXIIIZZZZZZZXI\n", + "-0.018 * IIIIIIIXZZZZZZZZZZXI\n", + "+0.018 * IZIIZZIYZIZZIZZIIZYZ\n", + "-0.018 * ZIZZIIZYIZIZIZZIIZYZ\n", + "+0.000 * ZZZZZZZXIIIZZZXIIIII\n", + "-0.000 * IIIIIIIXZZZZZZXIIIII\n", + "+0.000 * IZIIZZIYZIZZIZYZZIIZ\n", + "-0.000 * ZIZZIIZYIZIZIZYZZIIZ\n", + "-0.001 * ZZZZZZZXIIIZZXIIIIII\n", + "+0.001 * IIIIIIIXZZZZZXIIIIII\n", + "-0.001 * IZIIZZIYZIZZIYIZZIIZ\n", + "+0.001 * ZIZZIIZYIZIZIYIZZIIZ\n", + "+0.005 * ZZIIIIXZZIIZZIIIIZIZ\n", + "-0.005 * IIZZZZXIIZZZZIIIIZIZ\n", + "-0.005 * ZZZZZZXIIIIIIIIIIIII\n", + "+0.005 * IIIIIIXZZZZIIIIIIIII\n", + "+0.012 * ZZZZZZXIIIIZZZZZZXII\n", + "-0.012 * IIIIIIXZZZZZZZZZZXII\n", + "+0.012 * IZIIZZYZZIZZIZZIIYIZ\n", + "-0.012 * ZIZZIIYIIZIZIZZIIYIZ\n", + "-0.001 * ZZZZZZXIIIIXIIIIIIII\n", + "+0.001 * IIIIIIXZZZZXIIIIIIII\n", + "-0.001 * IZIIZZYZZIZYZIIZZIIZ\n", + "+0.001 * ZIZZIIYIIZIYZIIZZIIZ\n", + "+0.015 * ZZZZZXIIIIIZZZZZXIII\n", + "-0.015 * IIIIIXZZZZZZZZZZXIII\n", + "-0.015 * IZIIZXZZZIZZIZZIXIIZ\n", + "+0.015 * ZIZZIXIIIZIZIZZIXIIZ\n", + "+0.015 * ZZZZXIIIIIIZZZZXIIII\n", + "-0.015 * IIIIXZZZZZZZZZZXIIII\n", + "-0.015 * IZIIXIZZZIZZIZZXZIIZ\n", + "+0.015 * ZIZZXZIIIZIZIZZXZIIZ\n", + "-0.001 * ZZZXIIIIIIIZZZZZZZZI\n", + "+0.001 * IIIXZZZZZZZZZZZZZZZI\n", + "+0.001 * IZZXZZZIIIZZIIIZZZIZ\n", + "-0.001 * ZIIXIIIZZZIZIIIZZZIZ\n", + "+0.000 * ZZZXIIIIIIIZZZZZZZXI\n", + "-0.000 * IIIXZZZZZZZZZZZZZZXI\n", + "+0.000 * IZIYIIZZZIZZIZZIIZYZ\n", + "-0.000 * ZIZYZZIIIZIZIZZIIZYZ\n", + "+0.009 * ZZZXIIIIIIIZZZXIIIII\n", + "-0.009 * IIIXZZZZZZZZZZXIIIII\n", + "+0.009 * IZIYIIZZZIZZIZYZZIIZ\n", + "-0.009 * ZIZYZZIIIZIZIZYZZIIZ\n", + "-0.000 * ZZXIIIIIIIIZZZZZZZZI\n", + "+0.000 * IIXZZZZZZZZZZZZZZZZI\n", + "+0.000 * IZXIZZZIIIZZIIIZZZIZ\n", + "-0.000 * ZIXZIIIZZZIZIIIZZZIZ\n", + "-0.001 * ZZXIIIIIIIIZZZZZZZXI\n", + "+0.001 * IIXZZZZZZZZZZZZZZZXI\n", + "-0.001 * IZYZIIZZZIZZIZZIIZYZ\n", + "+0.001 * ZIYIZZIIIZIZIZZIIZYZ\n", + "+0.009 * ZZXIIIIIIIIZZXIIIIII\n", + "-0.009 * IIXZZZZZZZZZZXIIIIII\n", + "+0.009 * IZYZIIZZZIZZIYIZZIIZ\n", + "-0.009 * ZIYIZZIIIZIZIYIZZIIZ\n", + "-0.013 * IXZZIIZZZIZIZIIZZIIZ\n", + "+0.013 * ZXIIZZIIIZIIZIIZZIIZ\n", + "+0.004 * ZXZZZZIZZIIZZIIIIZIX\n", + "-0.004 * IXIIIIZIIZZZZIIIIZIX\n", + "-0.004 * IXIIZZZIIIZZIIIZZZIX\n", + "+0.004 * ZXZZIIIZZZIZIIIZZZIX\n", + "+0.017 * ZXIIIIIIIIIZXIIIIIII\n", + "-0.017 * IXZZZZZZZZZZXIIIIIII\n", + "-0.017 * IXZZIIZZZIZZXIIZZIIZ\n", + "+0.017 * ZXIIZZIIIZIZXIIZZIIZ\n", + "+0.014 * XIZZZZIZZIIZZIIIIZIZ\n", + "-0.014 * XZIIIIZIIZZZZIIIIZIZ\n", + "-0.014 * XIIIIIIIIIIIIIIIIIII\n", + "+0.014 * XZZZZZZZZZZIIIIIIIII\n", + "-0.001 * XIIIIIIIIIIZZZZZZXII\n", + "+0.001 * XZZZZZZZZZZZZZZZZXII\n", + "-0.001 * YIZZIIZZZIZZIZZIIYIZ\n", + "+0.001 * YZIIZZIIIZIZIZZIIYIZ\n", + "+0.013 * XIIIIIIIIIIXIIIIIIII\n", + "-0.013 * XZZZZZZZZZZXIIIIIIII\n", + "+0.013 * YIZZIIZZZIZYZIIZZIIZ\n", + "-0.013 * YZIIZZIIIZIYZIIZZIIZ\n", + "+0.134 * ZIZZIIZZZIIIZIIZZIIZ\n", + "+0.008 * IIZZZZIZZIZZZIIIIZIX\n", + "-0.008 * ZIIIZZZIIIIZIIIZZZIX\n", + "-0.016 * IIIIIIIIIIZZXIIIIIII\n", + "+0.016 * ZIZZIIZZZIIZXIIZZIIZ\n", + "+0.008 * IIZZZZIZZYYZZIIIIZIZ\n", + "+0.008 * IIZZZZIZZXXZZIIIIZIZ\n", + "-0.008 * IIIIIIIIIYYIIIIIIIII\n", + "-0.008 * IIIIIIIIIXXIIIIIIIII\n", + "-0.012 * IIIIIIIIIYYZZZZZZXII\n", + "-0.012 * IIIIIIIIIXXZZZZZZXII\n", + "+0.012 * ZIZZIIZZZYXZIZZIIYIZ\n", + "-0.012 * ZIZZIIZZZXYZIZZIIYIZ\n", + "+0.005 * IIIIIIIIIYYXIIIIIIII\n", + "+0.005 * IIIIIIIIIXXXIIIIIIII\n", + "-0.005 * ZIZZIIZZZYXYZIIZZIIZ\n", + "+0.005 * ZIZZIIZZZXYYZIIZZIIZ\n", + "-0.000 * IIIIIIIIYZYZZZZZXIII\n", + "-0.000 * IIIIIIIIXZXZZZZZXIII\n", + "-0.000 * ZIZZIIZZXZXZIZZIXIIZ\n", + "-0.000 * ZIZZIIZZYZYZIZZIXIIZ\n", + "-0.014 * IIIIIIIIYZYZZZZXIIII\n", + "-0.014 * IIIIIIIIXZXZZZZXIIII\n", + "-0.014 * ZIZZIIZZXZXZIZZXZIIZ\n", + "-0.014 * ZIZZIIZZYZYZIZZXZIIZ\n", + "-0.014 * IIIIIIIYZZYZZZZZXIII\n", + "-0.014 * IIIIIIIXZZXZZZZZXIII\n", + "-0.014 * ZIZZIIZXIZXZIZZIXIIZ\n", + "-0.014 * ZIZZIIZYIZYZIZZIXIIZ\n", + "+0.000 * IIIIIIIYZZYZZZZXIIII\n", + "+0.000 * IIIIIIIXZZXZZZZXIIII\n", + "+0.000 * ZIZZIIZXIZXZIZZXZIIZ\n", + "+0.000 * ZIZZIIZYIZYZIZZXZIIZ\n", + "+0.016 * ZIZZIIXIIZXIZIIZZIIZ\n", + "+0.016 * ZIZZIIYIIZYIZIIZZIIZ\n", + "-0.016 * IIZZZZYIIZYZZIIIIZIX\n", + "-0.016 * IIZZZZXIIZXZZIIIIZIX\n", + "-0.016 * ZIIIZZXZZZXZIIIZZZIX\n", + "-0.016 * ZIIIZZYZZZYZIIIZZZIX\n", + "+0.002 * IIIIIIYZZZYZXIIIIIII\n", + "+0.002 * IIIIIIXZZZXZXIIIIIII\n", + "+0.002 * ZIZZIIXIIZXZXIIZZIIZ\n", + "+0.002 * ZIZZIIYIIZYZXIIZZIIZ\n", + "-0.001 * IIIIIYZZZZYZZZZZZZZI\n", + "-0.001 * IIIIIXZZZZXZZZZZZZZI\n", + "-0.001 * ZIIIZXIZZZXZIIIZZZIZ\n", + "-0.001 * ZIIIZYIZZZYZIIIZZZIZ\n", + "-0.016 * IIIIIYZZZZYZZZZZZZXI\n", + "-0.016 * IIIIIXZZZZXZZZZZZZXI\n", + "+0.016 * ZIZZIYIIIZXZIZZIIZYZ\n", + "-0.016 * ZIZZIXIIIZYZIZZIIZYZ\n", + "-0.000 * IIIIIYZZZZYZZZXIIIII\n", + "-0.000 * IIIIIXZZZZXZZZXIIIII\n", + "+0.000 * ZIZZIYIIIZXZIZYZZIIZ\n", + "-0.000 * ZIZZIXIIIZYZIZYZZIIZ\n", + "+0.006 * IIIIIYZZZZYZZXIIIIII\n", + "+0.006 * IIIIIXZZZZXZZXIIIIII\n", + "-0.006 * ZIZZIYIIIZXZIYIZZIIZ\n", + "+0.006 * ZIZZIXIIIZYZIYIZZIIZ\n", + "-0.016 * IIIIYZZZZZYZZZZZZZZI\n", + "-0.016 * IIIIXZZZZZXZZZZZZZZI\n", + "-0.016 * ZIIIXIIZZZXZIIIZZZIZ\n", + "-0.016 * ZIIIYIIZZZYZIIIZZZIZ\n", + "+0.001 * IIIIYZZZZZYZZZZZZZXI\n", + "+0.001 * IIIIXZZZZZXZZZZZZZXI\n", + "-0.001 * ZIZZYZIIIZXZIZZIIZYZ\n", + "+0.001 * ZIZZXZIIIZYZIZZIIZYZ\n", + "+0.006 * IIIIYZZZZZYZZZXIIIII\n", + "+0.006 * IIIIXZZZZZXZZZXIIIII\n", + "-0.006 * ZIZZYZIIIZXZIZYZZIIZ\n", + "+0.006 * ZIZZXZIIIZYZIZYZZIIZ\n", + "+0.000 * IIIIYZZZZZYZZXIIIIII\n", + "+0.000 * IIIIXZZZZZXZZXIIIIII\n", + "-0.000 * ZIZZYZIIIZXZIYIZZIIZ\n", + "+0.000 * ZIZZXZIIIZYZIYIZZIIZ\n", + "-0.000 * IIIYZZZZZZYZZZZZXIII\n", + "-0.000 * IIIXZZZZZZXZZZZZXIII\n", + "-0.000 * ZIZXZZIIIZXZIZZIXIIZ\n", + "-0.000 * ZIZYZZIIIZYZIZZIXIIZ\n", + "+0.008 * IIIYZZZZZZYZZZZXIIII\n", + "+0.008 * IIIXZZZZZZXZZZZXIIII\n", + "+0.008 * ZIZXZZIIIZXZIZZXZIIZ\n", + "+0.008 * ZIZYZZIIIZYZIZZXZIIZ\n", + "+0.008 * IIYZZZZZZZYZZZZZXIII\n", + "+0.008 * IIXZZZZZZZXZZZZZXIII\n", + "+0.008 * ZIXIZZIIIZXZIZZIXIIZ\n", + "+0.008 * ZIYIZZIIIZYZIZZIXIIZ\n", + "+0.000 * IIYZZZZZZZYZZZZXIIII\n", + "+0.000 * IIXZZZZZZZXZZZZXIIII\n", + "+0.000 * ZIXIZZIIIZXZIZZXZIIZ\n", + "+0.000 * ZIYIZZIIIZYZIZZXZIIZ\n", + "+0.024 * IYIIIIZIIZYZZIIIIZIZ\n", + "+0.024 * IXIIIIZIIZXZZIIIIZIZ\n", + "-0.024 * IYZZZZZZZZYIIIIIIIII\n", + "-0.024 * IXZZZZZZZZXIIIIIIIII\n", + "+0.005 * IYZZZZZZZZYZZZZZZXII\n", + "+0.005 * IXZZZZZZZZXZZZZZZXII\n", + "-0.005 * ZYIIZZIIIZXZIZZIIYIZ\n", + "+0.005 * ZXIIZZIIIZYZIZZIIYIZ\n", + "+0.012 * IYZZZZZZZZYXIIIIIIII\n", + "+0.012 * IXZZZZZZZZXXIIIIIIII\n", + "-0.012 * ZYIIZZIIIZXYZIIZZIIZ\n", + "+0.012 * ZXIIZZIIIZYYZIIZZIIZ\n", + "+0.006 * XZIIZZIIIZXIZIIZZIIZ\n", + "+0.006 * YZIIZZIIIZYIZIIZZIIZ\n", + "+0.007 * YZIIIIZIIZYZZIIIIZIX\n", + "+0.007 * XZIIIIZIIZXZZIIIIZIX\n", + "+0.007 * XZZZIIIZZZXZIIIZZZIX\n", + "+0.007 * YZZZIIIZZZYZIIIZZZIX\n", + "+0.014 * YZZZZZZZZZYZXIIIIIII\n", + "+0.014 * XZZZZZZZZZXZXIIIIIII\n", + "+0.014 * XZIIZZIIIZXZXIIZZIIZ\n", + "+0.014 * YZIIZZIIIZYZXIIZZIIZ\n", + "+0.113 * ZIZZIIZZZZZIZIIZZIIZ\n", + "-0.006 * IIZZZZIZZZIZZIIIIZIX\n", + "+0.006 * ZIIIZZZIIZZZIIIZZZIX\n", + "-0.005 * IIIIIIIIIZIZXIIIIIII\n", + "+0.005 * ZIZZIIZZZZZZXIIZZIIZ\n", + "-0.001 * IIIIIIIIYYIZZZZZZZZI\n", + "-0.001 * IIIIIIIIXXIZZZZZZZZI\n", + "+0.001 * ZIIIZZZIYYZZIIIZZZIZ\n", + "+0.001 * ZIIIZZZIXXZZIIIZZZIZ\n", + "-0.007 * IIIIIIIIYYIZZZXIIIII\n", + "-0.007 * IIIIIIIIXXIZZZXIIIII\n", + "+0.007 * ZIZZIIZZXYZZIZYZZIIZ\n", + "-0.007 * ZIZZIIZZYXZZIZYZZIIZ\n", + "-0.000 * IIIIIIIIYYIZZXIIIIII\n", + "-0.000 * IIIIIIIIXXIZZXIIIIII\n", + "+0.000 * ZIZZIIZZXYZZIYIZZIIZ\n", + "-0.000 * ZIZZIIZZYXZZIYIZZIIZ\n", + "-0.001 * IIIIIIIYZYIZZZZZZZXI\n", + "-0.001 * IIIIIIIXZXIZZZZZZZXI\n", + "+0.001 * ZIZZIIZXIYZZIZZIIZYZ\n", + "-0.001 * ZIZZIIZYIXZZIZZIIZYZ\n", + "+0.000 * IIIIIIIYZYIZZZXIIIII\n", + "+0.000 * IIIIIIIXZXIZZZXIIIII\n", + "-0.000 * ZIZZIIZXIYZZIZYZZIIZ\n", + "+0.000 * ZIZZIIZYIXZZIZYZZIIZ\n", + "-0.007 * IIIIIIIYZYIZZXIIIIII\n", + "-0.007 * IIIIIIIXZXIZZXIIIIII\n", + "+0.007 * ZIZZIIZXIYZZIYIZZIIZ\n", + "-0.007 * ZIZZIIZYIXZZIYIZZIIZ\n", + "-0.048 * IIZZZZYIIYIZZIIIIZIZ\n", + "-0.048 * IIZZZZXIIXIZZIIIIZIZ\n", + "+0.048 * IIIIIIYZZYIIIIIIIIII\n", + "+0.048 * IIIIIIXZZXIIIIIIIIII\n", + "+0.011 * IIIIIIYZZYIZZZZZZXII\n", + "+0.011 * IIIIIIXZZXIZZZZZZXII\n", + "-0.011 * ZIZZIIXIIYZZIZZIIYIZ\n", + "+0.011 * ZIZZIIYIIXZZIZZIIYIZ\n", + "-0.009 * IIIIIIYZZYIXIIIIIIII\n", + "-0.009 * IIIIIIXZZXIXIIIIIIII\n", + "+0.009 * ZIZZIIXIIYZYZIIZZIIZ\n", + "-0.009 * ZIZZIIYIIXZYZIIZZIIZ\n", + "+0.008 * IIIIIYZZZYIZZZZZXIII\n", + "+0.008 * IIIIIXZZZXIZZZZZXIII\n", + "-0.008 * ZIZZIYIIIYZZIZZIXIIZ\n", + "-0.008 * ZIZZIXIIIXZZIZZIXIIZ\n", + "+0.008 * IIIIYZZZZYIZZZZXIIII\n", + "+0.008 * IIIIXZZZZXIZZZZXIIII\n", + "-0.008 * ZIZZYZIIIYZZIZZXZIIZ\n", + "-0.008 * ZIZZXZIIIXZZIZZXZIIZ\n", + "-0.013 * IIIYZZZZZYIZZZZZZZZI\n", + "-0.013 * IIIXZZZZZXIZZZZZZZZI\n", + "+0.013 * ZIIYIIIZZYZZIIIZZZIZ\n", + "+0.013 * ZIIXIIIZZXZZIIIZZZIZ\n", + "+0.001 * IIIYZZZZZYIZZZZZZZXI\n", + "+0.001 * IIIXZZZZZXIZZZZZZZXI\n", + "-0.001 * ZIZXZZIIIYZZIZZIIZYZ\n", + "+0.001 * ZIZYZZIIIXZZIZZIIZYZ\n", + "-0.000 * IIIYZZZZZYIZZZXIIIII\n", + "-0.000 * IIIXZZZZZXIZZZXIIIII\n", + "+0.000 * ZIZXZZIIIYZZIZYZZIIZ\n", + "-0.000 * ZIZYZZIIIXZZIZYZZIIZ\n", + "-0.001 * IIYZZZZZZYIZZZZZZZZI\n", + "-0.001 * IIXZZZZZZXIZZZZZZZZI\n", + "+0.001 * ZIYZIIIZZYZZIIIZZZIZ\n", + "+0.001 * ZIXZIIIZZXZZIIIZZZIZ\n", + "-0.013 * IIYZZZZZZYIZZZZZZZXI\n", + "-0.013 * IIXZZZZZZXIZZZZZZZXI\n", + "+0.013 * ZIXIZZIIIYZZIZZIIZYZ\n", + "-0.013 * ZIYIZZIIIXZZIZZIIZYZ\n", + "-0.000 * IIYZZZZZZYIZZXIIIIII\n", + "-0.000 * IIXZZZZZZXIZZXIIIIII\n", + "+0.000 * ZIXIZZIIIYZZIYIZZIIZ\n", + "-0.000 * ZIYIZZIIIXZZIYIZZIIZ\n", + "-0.004 * ZYIIZZIIIYZIZIIZZIIZ\n", + "-0.004 * ZXIIZZIIIXZIZIIZZIIZ\n", + "-0.013 * IYIIIIZIIYIZZIIIIZIX\n", + "-0.013 * IXIIIIZIIXIZZIIIIZIX\n", + "+0.013 * ZYZZIIIZZYZZIIIZZZIX\n", + "+0.013 * ZXZZIIIZZXZZIIIZZZIX\n", + "-0.007 * IYZZZZZZZYIZXIIIIIII\n", + "-0.007 * IXZZZZZZZXIZXIIIIIII\n", + "+0.007 * ZYIIZZIIIYZZXIIZZIIZ\n", + "+0.007 * ZXIIZZIIIXZZXIIZZIIZ\n", + "-0.000 * YZIIIIZIIYIZZIIIIZIZ\n", + "-0.000 * XZIIIIZIIXIZZIIIIZIZ\n", + "+0.000 * YZZZZZZZZYIIIIIIIIII\n", + "+0.000 * XZZZZZZZZXIIIIIIIIII\n", + "+0.007 * YZZZZZZZZYIZZZZZZXII\n", + "+0.007 * XZZZZZZZZXIZZZZZZXII\n", + "-0.007 * XZIIZZIIIYZZIZZIIYIZ\n", + "+0.007 * YZIIZZIIIXZZIZZIIYIZ\n", + "-0.004 * YZZZZZZZZYIXIIIIIIII\n", + "-0.004 * XZZZZZZZZXIXIIIIIIII\n", + "+0.004 * XZIIZZIIIYZYZIIZZIIZ\n", + "-0.004 * YZIIZZIIIXZYZIIZZIIZ\n", + "+0.123 * ZIZZIIZZIIZIZIIZZIIZ\n", + "+0.008 * IIZZZZIZIIIZZIIIIZIX\n", + "-0.008 * ZIIIZZZIZIZZIIIZZZIX\n", + "-0.006 * IIIIIIIIZIIZXIIIIIII\n", + "+0.006 * ZIZZIIZZIIZZXIIZZIIZ\n", + "+0.000 * IIIIIIYZYIIZZZZZXIII\n", + "+0.000 * IIIIIIXZXIIZZZZZXIII\n", + "+0.000 * ZIZZIIXIXIZZIZZIXIIZ\n", + "+0.000 * ZIZZIIYIYIZZIZZIXIIZ\n", + "+0.003 * IIIIIIYZYIIZZZZXIIII\n", + "+0.003 * IIIIIIXZXIIZZZZXIIII\n", + "+0.003 * ZIZZIIXIXIZZIZZXZIIZ\n", + "+0.003 * ZIZZIIYIYIZZIZZXZIIZ\n", + "+0.002 * IIZZZXZIXIIZZIIIIZIZ\n", + "+0.002 * IIZZZYZIYIIZZIIIIZIZ\n", + "+0.002 * IIIIIYZZYIIIIIIIIIII\n", + "+0.002 * IIIIIXZZXIIIIIIIIIII\n", + "+0.000 * IIIIIYZZYIIZZZZZZXII\n", + "+0.000 * IIIIIXZZXIIZZZZZZXII\n", + "-0.000 * ZIZZIYIIXIZZIZZIIYIZ\n", + "+0.000 * ZIZZIXIIYIZZIZZIIYIZ\n", + "-0.000 * IIIIIYZZYIIXIIIIIIII\n", + "-0.000 * IIIIIXZZXIIXIIIIIIII\n", + "+0.000 * ZIZZIYIIXIZYZIIZZIIZ\n", + "-0.000 * ZIZZIXIIYIZYZIIZZIIZ\n", + "+0.047 * IIZZXIZIXIIZZIIIIZIZ\n", + "+0.047 * IIZZYIZIYIIZZIIIIZIZ\n", + "+0.047 * IIIIYZZZYIIIIIIIIIII\n", + "+0.047 * IIIIXZZZXIIIIIIIIIII\n", + "+0.004 * IIIIYZZZYIIZZZZZZXII\n", + "+0.004 * IIIIXZZZXIIZZZZZZXII\n", + "-0.004 * ZIZZYZIIXIZZIZZIIYIZ\n", + "+0.004 * ZIZZXZIIYIZZIZZIIYIZ\n", + "-0.014 * IIIIYZZZYIIXIIIIIIII\n", + "-0.014 * IIIIXZZZXIIXIIIIIIII\n", + "+0.014 * ZIZZYZIIXIZYZIIZZIIZ\n", + "-0.014 * ZIZZXZIIYIZYZIIZZIIZ\n", + "+0.001 * ZIZXZZIIXIZIZIIZZIIZ\n", + "+0.001 * ZIZYZZIIYIZIZIIZZIIZ\n", + "+0.017 * IIZXIIZIXIIZZIIIIZIX\n", + "+0.017 * IIZYIIZIYIIZZIIIIZIX\n", + "+0.017 * ZIIYIIIZYIZZIIIZZZIX\n", + "+0.017 * ZIIXIIIZXIZZIIIZZZIX\n", + "-0.014 * IIIYZZZZYIIZXIIIIIII\n", + "-0.014 * IIIXZZZZXIIZXIIIIIII\n", + "-0.014 * ZIZXZZIIXIZZXIIZZIIZ\n", + "-0.014 * ZIZYZZIIYIZZXIIZZIIZ\n", + "+0.000 * ZIXIZZIIXIZIZIIZZIIZ\n", + "+0.000 * ZIYIZZIIYIZIZIIZZIIZ\n", + "+0.001 * IIXIIIZIXIIZZIIIIZIX\n", + "+0.001 * IIYIIIZIYIIZZIIIIZIX\n", + "+0.001 * ZIYZIIIZYIZZIIIZZZIX\n", + "+0.001 * ZIXZIIIZXIZZIIIZZZIX\n", + "-0.001 * IIYZZZZZYIIZXIIIIIII\n", + "-0.001 * IIXZZZZZXIIZXIIIIIII\n", + "-0.001 * ZIXIZZIIXIZZXIIZZIIZ\n", + "-0.001 * ZIYIZZIIYIZZXIIZZIIZ\n", + "-0.003 * IYZZZZZZYIIZZZZZZZZI\n", + "-0.003 * IXZZZZZZXIIZZZZZZZZI\n", + "+0.003 * ZYZZIIIZYIZZIIIZZZIZ\n", + "+0.003 * ZXZZIIIZXIZZIIIZZZIZ\n", + "-0.007 * IYZZZZZZYIIZZZXIIIII\n", + "-0.007 * IXZZZZZZXIIZZZXIIIII\n", + "+0.007 * ZYIIZZIIXIZZIZYZZIIZ\n", + "-0.007 * ZXIIZZIIYIZZIZYZZIIZ\n", + "-0.000 * IYZZZZZZYIIZZXIIIIII\n", + "-0.000 * IXZZZZZZXIIZZXIIIIII\n", + "+0.000 * ZYIIZZIIXIZZIYIZZIIZ\n", + "-0.000 * ZXIIZZIIYIZZIYIZZIIZ\n", + "-0.000 * YZZZZZZZYIIZZZZZXIII\n", + "-0.000 * XZZZZZZZXIIZZZZZXIII\n", + "-0.000 * XZIIZZIIXIZZIZZIXIIZ\n", + "-0.000 * YZIIZZIIYIZZIZZIXIIZ\n", + "-0.004 * YZZZZZZZYIIZZZZXIIII\n", + "-0.004 * XZZZZZZZXIIZZZZXIIII\n", + "-0.004 * XZIIZZIIXIZZIZZXZIIZ\n", + "-0.004 * YZIIZZIIYIZZIZZXZIIZ\n", + "+0.123 * ZIZZIIZIZIZIZIIZZIIZ\n", + "+0.008 * IIZZZZIIZIIZZIIIIZIX\n", + "-0.008 * ZIIIZZZZIIZZIIIZZZIX\n", + "-0.006 * IIIIIIIZIIIZXIIIIIII\n", + "+0.006 * ZIZZIIZIZIZZXIIZZIIZ\n", + "+0.003 * IIIIIIYYIIIZZZZZXIII\n", + "+0.003 * IIIIIIXXIIIZZZZZXIII\n", + "+0.003 * ZIZZIIXXZIZZIZZIXIIZ\n", + "+0.003 * ZIZZIIYYZIZZIZZIXIIZ\n", + "-0.000 * IIIIIIYYIIIZZZZXIIII\n", + "-0.000 * IIIIIIXXIIIZZZZXIIII\n", + "-0.000 * ZIZZIIXXZIZZIZZXZIIZ\n", + "-0.000 * ZIZZIIYYZIZZIZZXZIIZ\n", + "+0.047 * IIZZZXZXZIIZZIIIIZIZ\n", + "+0.047 * IIZZZYZYZIIZZIIIIZIZ\n", + "+0.047 * IIIIIYZYIIIIIIIIIIII\n", + "+0.047 * IIIIIXZXIIIIIIIIIIII\n", + "+0.004 * IIIIIYZYIIIZZZZZZXII\n", + "+0.004 * IIIIIXZXIIIZZZZZZXII\n", + "-0.004 * ZIZZIYIXZIZZIZZIIYIZ\n", + "+0.004 * ZIZZIXIYZIZZIZZIIYIZ\n", + "-0.014 * IIIIIYZYIIIXIIIIIIII\n", + "-0.014 * IIIIIXZXIIIXIIIIIIII\n", + "+0.014 * ZIZZIYIXZIZYZIIZZIIZ\n", + "-0.014 * ZIZZIXIYZIZYZIIZZIIZ\n", + "-0.002 * IIZZXIZXZIIZZIIIIZIZ\n", + "-0.002 * IIZZYIZYZIIZZIIIIZIZ\n", + "-0.002 * IIIIYZZYIIIIIIIIIIII\n", + "-0.002 * IIIIXZZXIIIIIIIIIIII\n", + "-0.000 * IIIIYZZYIIIZZZZZZXII\n", + "-0.000 * IIIIXZZXIIIZZZZZZXII\n", + "+0.000 * ZIZZYZIXZIZZIZZIIYIZ\n", + "-0.000 * ZIZZXZIYZIZZIZZIIYIZ\n", + "+0.000 * IIIIYZZYIIIXIIIIIIII\n", + "+0.000 * IIIIXZZXIIIXIIIIIIII\n", + "-0.000 * ZIZZYZIXZIZYZIIZZIIZ\n", + "+0.000 * ZIZZXZIYZIZYZIIZZIIZ\n", + "-0.000 * ZIZXZZIXZIZIZIIZZIIZ\n", + "-0.000 * ZIZYZZIYZIZIZIIZZIIZ\n", + "-0.001 * IIZXIIZXZIIZZIIIIZIX\n", + "-0.001 * IIZYIIZYZIIZZIIIIZIX\n", + "-0.001 * ZIIYIIIYIIZZIIIZZZIX\n", + "-0.001 * ZIIXIIIXIIZZIIIZZZIX\n", + "+0.001 * IIIYZZZYIIIZXIIIIIII\n", + "+0.001 * IIIXZZZXIIIZXIIIIIII\n", + "+0.001 * ZIZXZZIXZIZZXIIZZIIZ\n", + "+0.001 * ZIZYZZIYZIZZXIIZZIIZ\n", + "+0.001 * ZIXIZZIXZIZIZIIZZIIZ\n", + "+0.001 * ZIYIZZIYZIZIZIIZZIIZ\n", + "+0.017 * IIXIIIZXZIIZZIIIIZIX\n", + "+0.017 * IIYIIIZYZIIZZIIIIZIX\n", + "+0.017 * ZIYZIIIYIIZZIIIZZZIX\n", + "+0.017 * ZIXZIIIXIIZZIIIZZZIX\n", + "-0.014 * IIYZZZZYIIIZXIIIIIII\n", + "-0.014 * IIXZZZZXIIIZXIIIIIII\n", + "-0.014 * ZIXIZZIXZIZZXIIZZIIZ\n", + "-0.014 * ZIYIZZIYZIZZXIIZZIIZ\n", + "-0.003 * IYZZZZZYIIIZZZZZZZXI\n", + "-0.003 * IXZZZZZXIIIZZZZZZZXI\n", + "+0.003 * ZYIIZZIXZIZZIZZIIZYZ\n", + "-0.003 * ZXIIZZIYZIZZIZZIIZYZ\n", + "+0.000 * IYZZZZZYIIIZZZXIIIII\n", + "+0.000 * IXZZZZZXIIIZZZXIIIII\n", + "-0.000 * ZYIIZZIXZIZZIZYZZIIZ\n", + "+0.000 * ZXIIZZIYZIZZIZYZZIIZ\n", + "-0.007 * IYZZZZZYIIIZZXIIIIII\n", + "-0.007 * IXZZZZZXIIIZZXIIIIII\n", + "+0.007 * ZYIIZZIXZIZZIYIZZIIZ\n", + "-0.007 * ZXIIZZIYZIZZIYIZZIIZ\n", + "-0.004 * YZZZZZZYIIIZZZZZXIII\n", + "-0.004 * XZZZZZZXIIIZZZZZXIII\n", + "-0.004 * XZIIZZIXZIZZIZZIXIIZ\n", + "-0.004 * YZIIZZIYZIZZIZZIXIIZ\n", + "+0.000 * YZZZZZZYIIIZZZZXIIII\n", + "+0.000 * XZZZZZZXIIIZZZZXIIII\n", + "+0.000 * XZIIZZIXZIZZIZZXZIIZ\n", + "+0.000 * YZIIZZIYZIZZIZZXZIIZ\n", + "+0.117 * ZIZZIIIZZIZIZIIZZIIZ\n", + "-0.006 * IIZZZZZZZIIZZIIIIZIX\n", + "+0.006 * ZIIIZZIIIIZZIIIZZZIX\n", + "-0.008 * IIIIIIZIIIIZXIIIIIII\n", + "+0.008 * ZIZZIIIZZIZZXIIZZIIZ\n", + "+0.000 * IIIIIYYIIIIZZZZZZZZI\n", + "+0.000 * IIIIIXXIIIIZZZZZZZZI\n", + "+0.000 * ZIIIZXXIIIZZIIIZZZIZ\n", + "+0.000 * ZIIIZYYIIIZZIIIZZZIZ\n", + "+0.004 * IIIIIYYIIIIZZZZZZZXI\n", + "+0.004 * IIIIIXXIIIIZZZZZZZXI\n", + "-0.004 * ZIZZIYXZZIZZIZZIIZYZ\n", + "+0.004 * ZIZZIXYZZIZZIZZIIZYZ\n", + "+0.000 * IIIIIYYIIIIZZZXIIIII\n", + "+0.000 * IIIIIXXIIIIZZZXIIIII\n", + "-0.000 * ZIZZIYXZZIZZIZYZZIIZ\n", + "+0.000 * ZIZZIXYZZIZZIZYZZIIZ\n", + "-0.005 * IIIIIYYIIIIZZXIIIIII\n", + "-0.005 * IIIIIXXIIIIZZXIIIIII\n", + "+0.005 * ZIZZIYXZZIZZIYIZZIIZ\n", + "-0.005 * ZIZZIXYZZIZZIYIZZIIZ\n", + "+0.004 * IIIIYZYIIIIZZZZZZZZI\n", + "+0.004 * IIIIXZXIIIIZZZZZZZZI\n", + "+0.004 * ZIIIXIXIIIZZIIIZZZIZ\n", + "+0.004 * ZIIIYIYIIIZZIIIZZZIZ\n", + "-0.000 * IIIIYZYIIIIZZZZZZZXI\n", + "-0.000 * IIIIXZXIIIIZZZZZZZXI\n", + "+0.000 * ZIZZYZXZZIZZIZZIIZYZ\n", + "-0.000 * ZIZZXZYZZIZZIZZIIZYZ\n", + "-0.005 * IIIIYZYIIIIZZZXIIIII\n", + "-0.005 * IIIIXZXIIIIZZZXIIIII\n", + "+0.005 * ZIZZYZXZZIZZIZYZZIIZ\n", + "-0.005 * ZIZZXZYZZIZZIZYZZIIZ\n", + "-0.000 * IIIIYZYIIIIZZXIIIIII\n", + "-0.000 * IIIIXZXIIIIZZXIIIIII\n", + "+0.000 * ZIZZYZXZZIZZIYIZZIIZ\n", + "-0.000 * ZIZZXZYZZIZZIYIZZIIZ\n", + "+0.000 * IIIYZZYIIIIZZZZZXIII\n", + "+0.000 * IIIXZZXIIIIZZZZZXIII\n", + "+0.000 * ZIZXZZXZZIZZIZZIXIIZ\n", + "+0.000 * ZIZYZZYZZIZZIZZIXIIZ\n", + "-0.006 * IIIYZZYIIIIZZZZXIIII\n", + "-0.006 * IIIXZZXIIIIZZZZXIIII\n", + "-0.006 * ZIZXZZXZZIZZIZZXZIIZ\n", + "-0.006 * ZIZYZZYZZIZZIZZXZIIZ\n", + "-0.006 * IIYZZZYIIIIZZZZZXIII\n", + "-0.006 * IIXZZZXIIIIZZZZZXIII\n", + "-0.006 * ZIXIZZXZZIZZIZZIXIIZ\n", + "-0.006 * ZIYIZZYZZIZZIZZIXIIZ\n", + "-0.000 * IIYZZZYIIIIZZZZXIIII\n", + "-0.000 * IIXZZZXIIIIZZZZXIIII\n", + "-0.000 * ZIXIZZXZZIZZIZZXZIIZ\n", + "-0.000 * ZIYIZZYZZIZZIZZXZIIZ\n", + "+0.022 * IYIIIIYZZIIZZIIIIZIZ\n", + "+0.022 * IXIIIIXZZIIZZIIIIZIZ\n", + "-0.022 * IYZZZZYIIIIIIIIIIIII\n", + "-0.022 * IXZZZZXIIIIIIIIIIIII\n", + "-0.005 * IYZZZZYIIIIZZZZZZXII\n", + "-0.005 * IXZZZZXIIIIZZZZZZXII\n", + "+0.005 * ZYIIZZXZZIZZIZZIIYIZ\n", + "-0.005 * ZXIIZZYZZIZZIZZIIYIZ\n", + "+0.008 * IYZZZZYIIIIXIIIIIIII\n", + "+0.008 * IXZZZZXIIIIXIIIIIIII\n", + "-0.008 * ZYIIZZXZZIZYZIIZZIIZ\n", + "+0.008 * ZXIIZZYZZIZYZIIZZIIZ\n", + "-0.007 * XZIIZZXZZIZIZIIZZIIZ\n", + "-0.007 * YZIIZZYZZIZIZIIZZIIZ\n", + "+0.012 * YZIIIIYZZIIZZIIIIZIX\n", + "+0.012 * XZIIIIXZZIIZZIIIIZIX\n", + "+0.012 * XZZZIIXIIIZZIIIZZZIX\n", + "+0.012 * YZZZIIYIIIZZIIIZZZIX\n", + "+0.007 * YZZZZZYIIIIZXIIIIIII\n", + "+0.007 * XZZZZZXIIIIZXIIIIIII\n", + "+0.007 * XZIIZZXZZIZZXIIZZIIZ\n", + "+0.007 * YZIIZZYZZIZZXIIZZIIZ\n", + "+0.122 * ZIZZIZZZZIZIZIIZZIIZ\n", + "-0.007 * IIZZZIIZZIIZZIIIIZIX\n", + "+0.007 * ZIIIZIZIIIZZIIIZZZIX\n", + "-0.017 * IIIIIZIIIIIZXIIIIIII\n", + "+0.017 * ZIZZIZZZZIZZXIIZZIIZ\n", + "+0.001 * IIZXIXIZZIIZZIIIIZIZ\n", + "+0.001 * IIZYIYIZZIIZZIIIIZIZ\n", + "+0.001 * IIIYZYIIIIIIIIIIIIII\n", + "+0.001 * IIIXZXIIIIIIIIIIIIII\n", + "+0.000 * IIIYZYIIIIIZZZZZZXII\n", + "+0.000 * IIIXZXIIIIIZZZZZZXII\n", + "-0.000 * ZIZXZYZZZIZZIZZIIYIZ\n", + "+0.000 * ZIZYZXZZZIZZIZZIIYIZ\n", + "-0.000 * IIIYZYIIIIIXIIIIIIII\n", + "-0.000 * IIIXZXIIIIIXIIIIIIII\n", + "+0.000 * ZIZXZYZZZIZYZIIZZIIZ\n", + "-0.000 * ZIZYZXZZZIZYZIIZZIIZ\n", + "-0.038 * IIXIIXIZZIIZZIIIIZIZ\n", + "-0.038 * IIYIIYIZZIIZZIIIIZIZ\n", + "-0.038 * IIYZZYIIIIIIIIIIIIII\n", + "-0.038 * IIXZZXIIIIIIIIIIIIII\n", + "-0.007 * IIYZZYIIIIIZZZZZZXII\n", + "-0.007 * IIXZZXIIIIIZZZZZZXII\n", + "+0.007 * ZIXIZYZZZIZZIZZIIYIZ\n", + "-0.007 * ZIYIZXZZZIZZIZZIIYIZ\n", + "+0.013 * IIYZZYIIIIIXIIIIIIII\n", + "+0.013 * IIXZZXIIIIIXIIIIIIII\n", + "-0.013 * ZIXIZYZZZIZYZIIZZIIZ\n", + "+0.013 * ZIYIZXZZZIZYZIIZZIIZ\n", + "+0.006 * IYZZZYIIIIIZZZZZXIII\n", + "+0.006 * IXZZZXIIIIIZZZZZXIII\n", + "-0.006 * ZYIIZYZZZIZZIZZIXIIZ\n", + "-0.006 * ZXIIZXZZZIZZIZZIXIIZ\n", + "-0.000 * YZZZZYIIIIIZZZZZZZZI\n", + "-0.000 * XZZZZXIIIIIZZZZZZZZI\n", + "-0.000 * XZZZIXZIIIZZIIIZZZIZ\n", + "-0.000 * YZZZIYZIIIZZIIIZZZIZ\n", + "-0.005 * YZZZZYIIIIIZZZZZZZXI\n", + "-0.005 * XZZZZXIIIIIZZZZZZZXI\n", + "+0.005 * XZIIZYZZZIZZIZZIIZYZ\n", + "-0.005 * YZIIZXZZZIZZIZZIIZYZ\n", + "-0.000 * YZZZZYIIIIIZZZXIIIII\n", + "-0.000 * XZZZZXIIIIIZZZXIIIII\n", + "+0.000 * XZIIZYZZZIZZIZYZZIIZ\n", + "-0.000 * YZIIZXZZZIZZIZYZZIIZ\n", + "+0.004 * YZZZZYIIIIIZZXIIIIII\n", + "+0.004 * XZZZZXIIIIIZZXIIIIII\n", + "-0.004 * XZIIZYZZZIZZIYIZZIIZ\n", + "+0.004 * YZIIZXZZZIZZIYIZZIIZ\n", + "+0.122 * ZIZZZIZZZIZIZIIZZIIZ\n", + "-0.007 * IIZZIZIZZIIZZIIIIZIX\n", + "+0.007 * ZIIIIZZIIIZZIIIZZZIX\n", + "-0.017 * IIIIZIIIIIIZXIIIIIII\n", + "+0.017 * ZIZZZIZZZIZZXIIZZIIZ\n", + "-0.038 * IIZXXZIZZIIZZIIIIZIZ\n", + "-0.038 * IIZYYZIZZIIZZIIIIZIZ\n", + "-0.038 * IIIYYIIIIIIIIIIIIIII\n", + "-0.038 * IIIXXIIIIIIIIIIIIIII\n", + "-0.007 * IIIYYIIIIIIZZZZZZXII\n", + "-0.007 * IIIXXIIIIIIZZZZZZXII\n", + "+0.007 * ZIZXYIZZZIZZIZZIIYIZ\n", + "-0.007 * ZIZYXIZZZIZZIZZIIYIZ\n", + "+0.013 * IIIYYIIIIIIXIIIIIIII\n", + "+0.013 * IIIXXIIIIIIXIIIIIIII\n", + "-0.013 * ZIZXYIZZZIZYZIIZZIIZ\n", + "+0.013 * ZIZYXIZZZIZYZIIZZIIZ\n", + "-0.001 * IIXIXZIZZIIZZIIIIZIZ\n", + "-0.001 * IIYIYZIZZIIZZIIIIZIZ\n", + "-0.001 * IIYZYIIIIIIIIIIIIIII\n", + "-0.001 * IIXZXIIIIIIIIIIIIIII\n", + "-0.000 * IIYZYIIIIIIZZZZZZXII\n", + "-0.000 * IIXZXIIIIIIZZZZZZXII\n", + "+0.000 * ZIXIYIZZZIZZIZZIIYIZ\n", + "-0.000 * ZIYIXIZZZIZZIZZIIYIZ\n", + "+0.000 * IIYZYIIIIIIXIIIIIIII\n", + "+0.000 * IIXZXIIIIIIXIIIIIIII\n", + "-0.000 * ZIXIYIZZZIZYZIIZZIIZ\n", + "+0.000 * ZIYIXIZZZIZYZIIZZIIZ\n", + "+0.006 * IYZZYIIIIIIZZZZXIIII\n", + "+0.006 * IXZZXIIIIIIZZZZXIIII\n", + "-0.006 * ZYIIYIZZZIZZIZZXZIIZ\n", + "-0.006 * ZXIIXIZZZIZZIZZXZIIZ\n", + "-0.005 * YZZZYIIIIIIZZZZZZZZI\n", + "-0.005 * XZZZXIIIIIIZZZZZZZZI\n", + "-0.005 * XZZZXZZIIIZZIIIZZZIZ\n", + "-0.005 * YZZZYZZIIIZZIIIZZZIZ\n", + "+0.000 * YZZZYIIIIIIZZZZZZZXI\n", + "+0.000 * XZZZXIIIIIIZZZZZZZXI\n", + "-0.000 * XZIIYIZZZIZZIZZIIZYZ\n", + "+0.000 * YZIIXIZZZIZZIZZIIZYZ\n", + "+0.004 * YZZZYIIIIIIZZZXIIIII\n", + "+0.004 * XZZZXIIIIIIZZZXIIIII\n", + "-0.004 * XZIIYIZZZIZZIZYZZIIZ\n", + "+0.004 * YZIIXIZZZIZZIZYZZIIZ\n", + "+0.000 * YZZZYIIIIIIZZXIIIIII\n", + "+0.000 * XZZZXIIIIIIZZXIIIIII\n", + "-0.000 * XZIIYIZZZIZZIYIZZIIZ\n", + "+0.000 * YZIIXIZZZIZZIYIZZIIZ\n", + "+0.125 * ZIZIIIZZZIZIZIIZZIIZ\n", + "+0.011 * IIZIZZIZZIIZZIIIIZIX\n", + "-0.011 * ZIIZZZZIIIZZIIIZZZIX\n", + "-0.001 * IIIZIIIIIIIZXIIIIIII\n", + "+0.001 * ZIZIIIZZZIZZXIIZZIIZ\n", + "-0.013 * IYZYIIIIIIIZZZZZZZZI\n", + "-0.013 * IXZXIIIIIIIZZZZZZZZI\n", + "+0.013 * ZYZYZZZIIIZZIIIZZZIZ\n", + "+0.013 * ZXZXZZZIIIZZIIIZZZIZ\n", + "+0.001 * IYZYIIIIIIIZZZZZZZXI\n", + "+0.001 * IXZXIIIIIIIZZZZZZZXI\n", + "-0.001 * ZYIXIIZZZIZZIZZIIZYZ\n", + "+0.001 * ZXIYIIZZZIZZIZZIIZYZ\n", + "-0.004 * IYZYIIIIIIIZZZXIIIII\n", + "-0.004 * IXZXIIIIIIIZZZXIIIII\n", + "+0.004 * ZYIXIIZZZIZZIZYZZIIZ\n", + "-0.004 * ZXIYIIZZZIZZIZYZZIIZ\n", + "-0.000 * YZZYIIIIIIIZZZZZXIII\n", + "-0.000 * XZZXIIIIIIIZZZZZXIII\n", + "-0.000 * XZIXIIZZZIZZIZZIXIIZ\n", + "-0.000 * YZIYIIZZZIZZIZZIXIIZ\n", + "+0.007 * YZZYIIIIIIIZZZZXIIII\n", + "+0.007 * XZZXIIIIIIIZZZZXIIII\n", + "+0.007 * XZIXIIZZZIZZIZZXZIIZ\n", + "+0.007 * YZIYIIZZZIZZIZZXZIIZ\n", + "+0.125 * ZIIZIIZZZIZIZIIZZIIZ\n", + "+0.011 * IIIZZZIZZIIZZIIIIZIX\n", + "-0.011 * ZIZIZZZIIIZZIIIZZZIX\n", + "-0.001 * IIZIIIIIIIIZXIIIIIII\n", + "+0.001 * ZIIZIIZZZIZZXIIZZIIZ\n", + "-0.001 * IYYIIIIIIIIZZZZZZZZI\n", + "-0.001 * IXXIIIIIIIIZZZZZZZZI\n", + "+0.001 * ZYYIZZZIIIZZIIIZZZIZ\n", + "+0.001 * ZXXIZZZIIIZZIIIZZZIZ\n", + "-0.013 * IYYIIIIIIIIZZZZZZZXI\n", + "-0.013 * IXXIIIIIIIIZZZZZZZXI\n", + "+0.013 * ZYXZIIZZZIZZIZZIIZYZ\n", + "-0.013 * ZXYZIIZZZIZZIZZIIZYZ\n", + "-0.004 * IYYIIIIIIIIZZXIIIIII\n", + "-0.004 * IXXIIIIIIIIZZXIIIIII\n", + "+0.004 * ZYXZIIZZZIZZIYIZZIIZ\n", + "-0.004 * ZXYZIIZZZIZZIYIZZIIZ\n", + "+0.007 * YZYIIIIIIIIZZZZZXIII\n", + "+0.007 * XZXIIIIIIIIZZZZZXIII\n", + "+0.007 * XZXZIIZZZIZZIZZIXIIZ\n", + "+0.007 * YZYZIIZZZIZZIZZIXIIZ\n", + "+0.000 * YZYIIIIIIIIZZZZXIIII\n", + "+0.000 * XZXIIIIIIIIZZZZXIIII\n", + "+0.000 * XZXZIIZZZIZZIZZXZIIZ\n", + "+0.000 * YZYZIIZZZIZZIZZXZIIZ\n", + "+0.133 * ZZZZIIZZZIZIZIIZZIIZ\n", + "+0.012 * IZZZZZIZZIIZZIIIIZIX\n", + "-0.012 * ZZIIZZZIIIZZIIIZZZIX\n", + "-0.010 * IZIIIIIIIIIZXIIIIIII\n", + "+0.010 * ZZZZIIZZZIZZXIIZZIIZ\n", + "+0.045 * YYZZZZIZZIIZZIIIIZIZ\n", + "+0.045 * XXZZZZIZZIIZZIIIIZIZ\n", + "-0.045 * YYIIIIIIIIIIIIIIIIII\n", + "-0.045 * XXIIIIIIIIIIIIIIIIII\n", + "+0.004 * YYIIIIIIIIIZZZZZZXII\n", + "+0.004 * XXIIIIIIIIIZZZZZZXII\n", + "-0.004 * XYZZIIZZZIZZIZZIIYIZ\n", + "+0.004 * YXZZIIZZZIZZIZZIIYIZ\n", + "+0.012 * YYIIIIIIIIIXIIIIIIII\n", + "+0.012 * XXIIIIIIIIIXIIIIIIII\n", + "-0.012 * XYZZIIZZZIZYZIIZZIIZ\n", + "+0.012 * YXZZIIZZZIZYZIIZZIIZ\n", + "+0.143 * IIZZIIZZZIZIZIIZZIIZ\n", + "+0.018 * ZIZZZZIZZIIZZIIIIZIX\n", + "-0.018 * IIIIZZZIIIZZIIIZZZIX\n", + "-0.009 * ZIIIIIIIIIIZXIIIIIII\n", + "+0.009 * IIZZIIZZZIZZXIIZZIIZ\n", + "+0.101 * ZIIIZZZIIIZZIIIZZZIZ\n", + "+0.000 * ZIZZIIZZZIZZYIIZZIIY\n", + "+0.000 * ZIZZIIZZZIZZXIIZZIIX\n", + "+0.109 * ZIZZIIZZZIZZIZZIIZZI\n", + "+0.003 * ZIZZIIZZZIZZIZXZZIII\n", + "-0.003 * ZIIIZZZIIIZZIIXIIIZI\n", + "+0.000 * ZIZZIIZZZIZZIXIZZIII\n", + "-0.000 * ZIIIZZZIIIZZIXZIIIZI\n", + "+0.109 * ZIIIZZZIIIZZIIIZZZZI\n", + "+0.000 * ZIIIZZZIIIZZIIYIIIYI\n", + "+0.000 * ZIIIZZZIIIZZIIXIIIXI\n", + "-0.003 * ZIIIZZZIIIZZIYZIIIYI\n", + "-0.003 * ZIIIZZZIIIZZIXZIIIXI\n", + "+0.102 * ZIIIZZZIIIZZIIIZZIII\n", + "-0.000 * ZIIIZZZIIIZXZZZIIXII\n", + "-0.000 * ZIIIZZZIIIZYZZZIIYII\n", + "+0.108 * ZIIIZZZIIIZZIIIZIZII\n", + "+0.108 * ZIIIZZZIIIZZIIIIZZII\n", + "+0.117 * ZIIIZZZIIIZZIIZZZZII\n", + "+0.117 * ZIIIZZZIIIZZIZIZZZII\n", + "+0.116 * ZIIIZZZIIIZZZIIZZZII\n", + "+0.127 * ZIIIZZZIIIZIIIIZZZII\n", + "+0.017 * ZIZZIIZZZIZZIZZIIXII\n", + "-0.017 * IIZZZZIZZIIIIZZZZXII\n", + "+0.010 * ZIZZIIZZZIZXZIIZZIII\n", + "-0.010 * IIZZZZIZZIIXZIIIIZII\n", + "+0.000 * ZIIIZZZIIIZZIIIZXIZX\n", + "+0.000 * ZIZZIIZZZIZZIZZIYIIY\n", + "-0.000 * ZIIIZZZIIIZZIIIZYIZY\n", + "+0.000 * IIZZZZIZZIIIIZZZXZIX\n", + "-0.000 * IIIIIIIIIIIIIIIIXZZX\n", + "-0.000 * IIZZZZIZZIIIIZZZYZIY\n", + "+0.003 * ZIIIZZZIIIZZIIIXIIZX\n", + "+0.011 * ZIZZIIZZZIZZIZZYZIIY\n", + "-0.008 * ZIIIZZZIIIZZIIIYIIZY\n", + "+0.008 * IIZZZZIZZIIIIZZXIZIX\n", + "-0.011 * IIIIIIIIIIIIIIIXZZZX\n", + "-0.003 * IIZZZZIZZIIIIZZYIZIY\n", + "+0.003 * ZIIIZZZIIIZZIIIZXIXX\n", + "+0.011 * ZIIIZZZIIIZZIIIZXIYY\n", + "-0.008 * ZIIIZZZIIIZZIIIZYIXY\n", + "-0.008 * IIIIIIIIIIIIIIIIYZYX\n", + "-0.011 * IIIIIIIIIIIIIIIIXZXX\n", + "-0.003 * IIIIIIIIIIIIIIIIXZYY\n", + "-0.000 * ZIIIZZZIIIZZIIIXIIXX\n", + "-0.000 * ZIIIZZZIIIZZIIIXIIYY\n", + "+0.000 * ZIIIZZZIIIZZIIIYIIXY\n", + "+0.000 * IIIIIIIIIIIIIIIYZZYX\n", + "+0.000 * IIIIIIIIIIIIIIIXZZXX\n", + "+0.000 * IIIIIIIIIIIIIIIXZZYY\n", + "+0.023 * ZIIIZZZIIIZZYZZIIYIX\n", + "-0.023 * ZIIIZZZIIIZZYZZIIXIY\n", + "-0.001 * ZIIIZZZIIIZZXZZIIYIY\n", + "-0.001 * IIIIIIIIIIIIYZZZZYIX\n", + "+0.023 * IIIIIIIIIIIIXZZZZXIX\n", + "+0.023 * IIIIIIIIIIIIXZZZZYIY\n", + "-0.000 * ZIIIZZZIIIZZIIYIYZIX\n", + "+0.000 * ZIIIZZZIIIZZIIYIXZIY\n", + "-0.000 * ZIIIZZZIIIZZIIXIYZIY\n", + "-0.000 * IIIIIIIIIIIIIIYZYIIX\n", + "-0.000 * IIIIIIIIIIIIIIXZXIIX\n", + "-0.000 * IIIIIIIIIIIIIIXZYIIY\n", + "+0.005 * ZIIIZZZIIIZZIYZIYZIX\n", + "-0.009 * ZIIIZZZIIIZZIYZIXZIY\n", + "+0.005 * ZIIIZZZIIIZZIXZIYZIY\n", + "+0.005 * IIIIIIIIIIIIIYZZYIIX\n", + "+0.009 * IIIIIIIIIIIIIXZZXIIX\n", + "+0.005 * IIIIIIIIIIIIIXZZYIIY\n", + "+0.005 * ZIIIZZZIIIZZIIYYZZIX\n", + "-0.009 * ZIIIZZZIIIZZIIYXZZIY\n", + "+0.005 * ZIIIZZZIIIZZIIXYZZIY\n", + "+0.005 * IIIIIIIIIIIIIIYYIIIX\n", + "+0.009 * IIIIIIIIIIIIIIXXIIIX\n", + "+0.005 * IIIIIIIIIIIIIIXYIIIY\n", + "+0.000 * ZIIIZZZIIIZZIYZYZZIX\n", + "-0.000 * ZIIIZZZIIIZZIYZXZZIY\n", + "+0.000 * ZIIIZZZIIIZZIXZYZZIY\n", + "+0.000 * IIIIIIIIIIIIIYZYIIIX\n", + "+0.000 * IIIIIIIIIIIIIXZXIIIX\n", + "+0.000 * IIIIIIIIIIIIIXZYIIIY\n", + "-0.007 * ZIIIZZZIIIZXXIIZZZIX\n", + "-0.014 * ZIIIZZZIIIZXYIIZZZIY\n", + "+0.007 * ZIIIZZZIIIZYXIIZZZIY\n", + "+0.007 * IIIIIIIIIIIYYIIIIIIX\n", + "+0.014 * IIIIIIIIIIIXXIIIIIIX\n", + "+0.007 * IIIIIIIIIIIXYIIIIIIY\n", + "+0.012 * ZIIIZZZIIIZZIIIZZXZZ\n", + "-0.012 * IIIIIIIIIIIIIIIIIXZZ\n", + "+0.000 * ZIIIZZZIIIZXZZZIIIZZ\n", + "-0.000 * IIIIIIIIIIIXZZZZZZZZ\n", + "+0.010 * ZIIIZZZIIIZZIIYIIYIZ\n", + "+0.002 * ZIZZIIZZZIZZIZXZZXZZ\n", + "-0.008 * ZIZZIIZZZIZZIZYZZYZZ\n", + "-0.008 * IIIIIIIIIIIIIIYZZYIZ\n", + "+0.002 * IIIIIIIIIIIIIIXZZXIZ\n", + "+0.010 * IIZZZZIZZIIIIZYIIYZZ\n", + "+0.001 * ZIIIZZZIIIZZIYZIIYIZ\n", + "+0.000 * ZIZZIIZZZIZZIXIZZXZZ\n", + "-0.000 * ZIZZIIZZZIZZIYIZZYZZ\n", + "-0.000 * IIIIIIIIIIIIIYZZZYIZ\n", + "+0.000 * IIIIIIIIIIIIIXZZZXIZ\n", + "+0.001 * IIZZZZIZZIIIIYIIIYZZ\n", + "+0.001 * ZIIIZZZIIIZZYZZIYZIZ\n", + "-0.000 * ZIZZIIZZZIZZYIIZYZZZ\n", + "+0.000 * ZIZZIIZZZIZZXIIZXZZZ\n", + "-0.000 * IIIIIIIIIIIIYZZZYIIZ\n", + "+0.000 * IIIIIIIIIIIIXZZZXIIZ\n", + "-0.001 * IIZZZZIZZIIIXIIIXIZZ\n", + "+0.017 * ZIIIZZZIIIZZYZZYZZIZ\n", + "-0.013 * ZIZZIIZZZIZZYIIYIZZZ\n", + "+0.003 * ZIZZIIZZZIZZXIIXIZZZ\n", + "-0.003 * IIIIIIIIIIIIYZZYIIIZ\n", + "+0.013 * IIIIIIIIIIIIXZZXIIIZ\n", + "-0.017 * IIZZZZIZZIIIXIIXZIZZ\n", + "-0.011 * ZIIIZZZIIIZXZZXZZZIZ\n", + "+0.008 * ZIZZIIZZZIZXZIXIIZZZ\n", + "-0.003 * ZIZZIIZZZIZYZIYIIZZZ\n", + "-0.003 * IIIIIIIIIIIYZZYIIIIZ\n", + "+0.008 * IIIIIIIIIIIXZZXIIIIZ\n", + "-0.011 * IIZZZZIZZIIXZIXZZIZZ\n", + "-0.001 * ZIIIZZZIIIZXZXIZZZIZ\n", + "+0.000 * ZIZZIIZZZIZXZXZIIZZZ\n", + "-0.000 * ZIZZIIZZZIZYZYZIIZZZ\n", + "-0.000 * IIIIIIIIIIIYZYIIIIIZ\n", + "+0.000 * IIIIIIIIIIIXZXIIIIIZ\n", + "-0.001 * IIZZZZIZZIIXZXZZZIZZ\n", + "+0.012 * ZIZZIIZZZIZZIZZIIXZZ\n", + "-0.012 * IIZZZZIZZIIIIZZZZXZZ\n", + "+0.000 * ZIZZIIZZZIZXZIIZZIZZ\n", + "-0.000 * IIZZZZIZZIIXZIIIIZZZ\n", + "-0.001 * ZIZZIIZZZIZZIZXZZYYZ\n", + "-0.000 * ZIZZIIZZZIZZIZXZZXXZ\n", + "+0.000 * ZIZZIIZZZIZZIZYZZYXZ\n", + "+0.000 * IIZZZZIZZIIIIZXIIYYZ\n", + "+0.000 * IIZZZZIZZIIIIZYIIXYZ\n", + "-0.001 * IIZZZZIZZIIIIZYIIYXZ\n", + "+0.010 * ZIZZIIZZZIZZIXIZZYYZ\n", + "+0.002 * ZIZZIIZZZIZZIXIZZXXZ\n", + "-0.008 * ZIZZIIZZZIZZIYIZZYXZ\n", + "-0.008 * IIZZZZIZZIIIIXIIIYYZ\n", + "-0.002 * IIZZZZIZZIIIIYIIIXYZ\n", + "+0.010 * IIZZZZIZZIIIIYIIIYXZ\n", + "+0.017 * ZIZZIIZZZIZZYIIZXZYZ\n", + "-0.013 * ZIZZIIZZZIZZYIIZYZXZ\n", + "+0.003 * ZIZZIIZZZIZZXIIZXZXZ\n", + "-0.003 * IIZZZZIZZIIIYIIIXIYZ\n", + "-0.013 * IIZZZZIZZIIIXIIIYIYZ\n", + "-0.017 * IIZZZZIZZIIIXIIIXIXZ\n", + "-0.001 * ZIZZIIZZZIZZYIIXIZYZ\n", + "+0.000 * ZIZZIIZZZIZZYIIYIZXZ\n", + "-0.000 * ZIZZIIZZZIZZXIIXIZXZ\n", + "+0.000 * IIZZZZIZZIIIYIIXZIYZ\n", + "+0.000 * IIZZZZIZZIIIXIIYZIYZ\n", + "+0.001 * IIZZZZIZZIIIXIIXZIXZ\n", + "-0.001 * ZIZZIIZZZIZXZIYIIZYZ\n", + "-0.000 * ZIZZIIZZZIZXZIXIIZXZ\n", + "+0.000 * ZIZZIIZZZIZYZIYIIZXZ\n", + "+0.000 * IIZZZZIZZIIYZIXZZIYZ\n", + "+0.000 * IIZZZZIZZIIXZIYZZIYZ\n", + "+0.001 * IIZZZZIZZIIXZIXZZIXZ\n", + "+0.011 * ZIZZIIZZZIZXZYZIIZYZ\n", + "+0.008 * ZIZZIIZZZIZXZXZIIZXZ\n", + "-0.003 * ZIZZIIZZZIZYZYZIIZXZ\n", + "-0.003 * IIZZZZIZZIIYZXZZZIYZ\n", + "-0.008 * IIZZZZIZZIIXZYZZZIYZ\n", + "-0.011 * IIZZZZIZZIIXZXZZZIXZ\n", + "+0.016 * ZIZZIIZZZIZXZIIZZZIZ\n", + "-0.016 * IIZZZZIZZIIXZIIIIIIZ\n", + "+0.005 * ZIZZIIZZZIZZIZZIZXIZ\n", + "-0.005 * IIZZZZIZZIIIIZZZIXIZ\n", + "+0.005 * ZIZZIIZZZIZZIZZZIXIZ\n", + "-0.005 * IIZZZZIZZIIIIZZIZXIZ\n", + "+0.015 * ZIZZIIZZZIZZIZIIIXIZ\n", + "-0.015 * IIZZZZIZZIIIIZIZZXIZ\n", + "+0.015 * ZIZZIIZZZIZZIIZIIXIZ\n", + "-0.015 * IIZZZZIZZIIIIIZZZXIZ\n", + "+0.007 * ZIZZIIZZZIZZZZZIIXIZ\n", + "-0.007 * IIZZZZIZZIIIZZZZZXIZ\n", + "+0.014 * ZIZZIIZZZIZIIZZIIXIZ\n", + "-0.014 * IIZZZZIZZIIZIZZZZXIZ\n", + "+0.007 * ZIZZIIZZZIZXZIIZIIIZ\n", + "-0.007 * IIZZZZIZZIIXZIIIZZIZ\n", + "+0.000 * ZIZZIIZZZIZZYIYIXIIZ\n", + "-0.000 * ZIZZIIZZZIZZYIXIYIIZ\n", + "-0.000 * ZIZZIIZZZIZZXIYIYIIZ\n", + "-0.000 * IIZZZZIZZIIIYIXZYZIZ\n", + "-0.000 * IIZZZZIZZIIIXIYZYZIZ\n", + "-0.000 * IIZZZZIZZIIIXIXZXZIZ\n", + "-0.012 * ZIZZIIZZZIZZYYZIXIIZ\n", + "+0.006 * ZIZZIIZZZIZZYXZIYIIZ\n", + "+0.005 * ZIZZIIZZZIZZXYZIYIIZ\n", + "+0.005 * IIZZZZIZZIIIYXZZYZIZ\n", + "+0.006 * IIZZZZIZZIIIXYZZYZIZ\n", + "+0.012 * IIZZZZIZZIIIXXZZXZIZ\n", + "+0.007 * ZIZZIIZZZIZXZIIIZIIZ\n", + "-0.007 * IIZZZZIZZIIXZIIZIZIZ\n", + "-0.012 * ZIZZIIZZZIZZYIYXZIIZ\n", + "+0.006 * ZIZZIIZZZIZZYIXYZIIZ\n", + "+0.005 * ZIZZIIZZZIZZXIYYZIIZ\n", + "+0.005 * IIZZZZIZZIIIYIXYIZIZ\n", + "+0.006 * IIZZZZIZZIIIXIYYIZIZ\n", + "+0.012 * IIZZZZIZZIIIXIXXIZIZ\n", + "-0.000 * ZIZZIIZZZIZZYYZXZIIZ\n", + "+0.000 * ZIZZIIZZZIZZYXZYZIIZ\n", + "+0.000 * ZIZZIIZZZIZZXYZYZIIZ\n", + "+0.000 * IIZZZZIZZIIIYXZYIZIZ\n", + "+0.000 * IIZZZZIZZIIIXYZYIZIZ\n", + "+0.000 * IIZZZZIZZIIIXXZXIZIZ\n", + "-0.004 * ZIZZIIZZZIZXZIZZZIIZ\n", + "+0.004 * IIZZZZIZZIIXZIZIIZIZ\n", + "-0.004 * ZIZZIIZZZIZXZZIZZIIZ\n", + "+0.004 * IIZZZZIZZIIXZZIIIZIZ\n", + "-0.015 * ZIZZIIZZZIZXIIIZZIIZ\n", + "+0.015 * IIZZZZIZZIIXIIIIIZIZ\n", + "+0.134 * IZZZIIIZZZIZIIIZZZII\n", + "+0.016 * IZIIZZIIIZIZIZZIIXIZ\n", + "-0.016 * ZZIIIIZIIZZIIZZZZXIZ\n", + "+0.006 * IZIIZZIIIZIXZIIZZIIZ\n", + "-0.006 * ZZIIIIZIIZZXZIIIIZIZ\n", + "+0.008 * IZZZIIIZZZYZIIIZZZIY\n", + "-0.008 * ZIIIZZZIIIYZIIIZZZIY\n", + "+0.008 * ZZZZZZZZZZXIIIIIIIIX\n", + "-0.008 * IIIIIIIIIIXIIIIIIIIX\n", + "+0.024 * IZIIZZIIIZYZYIIZZIIZ\n", + "-0.024 * ZIZZIIZZZIYZYIIZZIIZ\n", + "+0.024 * ZZIIIIZIIZXIXIIIIZIZ\n", + "-0.024 * IIZZZZIZZIXIXIIIIZIZ\n", + "+0.008 * IZZZIIIZZXZZIIIZZZII\n", + "-0.008 * ZIIIZZZIIXIZIIIZZZII\n", + "+0.016 * IZIIZZIIIXZZIZZIIXIZ\n", + "-0.016 * ZIZZIIZZZXIZIZZIIXIZ\n", + "-0.016 * ZZIIIIZIIXIIIZZZZXIZ\n", + "+0.016 * IIZZZZIZZXZIIZZZZXIZ\n", + "-0.007 * IZIIZZIIIXZXZIIZZIIZ\n", + "+0.007 * ZIZZIIZZZXIXZIIZZIIZ\n", + "+0.007 * ZZIIIIZIIXIXZIIIIZIZ\n", + "-0.007 * IIZZZZIZZXZXZIIIIZIZ\n", + "-0.001 * IZIIZZIIYIZZIZZIYIIZ\n", + "+0.001 * ZIZZIIZZYZIZIZZIYIIZ\n", + "+0.001 * ZZIIIIZIYIIIIZZZYZIZ\n", + "-0.001 * IIZZZZIZYZZIIZZZYZIZ\n", + "-0.016 * IZIIZZIIYIZZIZZYZIIZ\n", + "+0.016 * ZIZZIIZZYZIZIZZYZIIZ\n", + "+0.016 * ZZIIIIZIYIIIIZZYIZIZ\n", + "-0.016 * IIZZZZIZYZZIIZZYIZIZ\n", + "-0.016 * IZIIZZIYZIZZIZZIYIIZ\n", + "+0.016 * ZIZZIIZYIZIZIZZIYIIZ\n", + "+0.016 * ZZIIIIZYZIIIIZZZYZIZ\n", + "-0.016 * IIZZZZIYIZZIIZZZYZIZ\n", + "+0.001 * IZIIZZIYZIZZIZZYZIIZ\n", + "-0.001 * ZIZZIIZYIZIZIZZYZIIZ\n", + "-0.001 * ZZIIIIZYZIIIIZZYIZIZ\n", + "+0.001 * IIZZZZIYIZZIIZZYIZIZ\n", + "-0.012 * IZZZIIYIIIZZIIIZZZIY\n", + "+0.012 * ZIIIZZYZZZIZIIIZZZIY\n", + "-0.012 * ZZZZZZXIIIIIIIIIIIIX\n", + "+0.012 * IIIIIIXZZZZIIIIIIIIX\n", + "+0.005 * IZIIZZYZZIZZYIIZZIIZ\n", + "-0.005 * ZIZZIIYIIZIZYIIZZIIZ\n", + "+0.005 * ZZIIIIXZZIIIXIIIIZIZ\n", + "-0.005 * IIZZZZXIIZZIXIIIIZIZ\n", + "+0.000 * IZIIZXZZZIZZIZZIIZZZ\n", + "-0.000 * ZIZZIXIIIZIZIZZIIZZZ\n", + "-0.000 * ZZZZZXIIIIIIIIIIIIIZ\n", + "+0.000 * IIIIIXZZZZZIIIIIIIIZ\n", + "+0.014 * IZIIZXZZZIZZIZZIIZXZ\n", + "-0.014 * ZIZZIXIIIZIZIZZIIZXZ\n", + "+0.014 * ZZIIIYIZZIIIIZZZZIYZ\n", + "-0.014 * IIZZZYZIIZZIIZZZZIYZ\n", + "+0.000 * IZIIZXZZZIZZIZXZZIIZ\n", + "-0.000 * ZIZZIXIIIZIZIZXZZIIZ\n", + "+0.000 * ZZIIIYIZZIIIIZYIIZIZ\n", + "-0.000 * IIZZZYZIIZZIIZYIIZIZ\n", + "-0.008 * IZIIZXZZZIZZIXIZZIIZ\n", + "+0.008 * ZIZZIXIIIZIZIXIZZIIZ\n", + "-0.008 * ZZIIIYIZZIIIIYIIIZIZ\n", + "+0.008 * IIZZZYZIIZZIIYIIIZIZ\n", + "+0.014 * IZIIXIZZZIZZIZZIIZZZ\n", + "-0.014 * ZIZZXZIIIZIZIZZIIZZZ\n", + "-0.014 * ZZZZXIIIIIIIIIIIIIIZ\n", + "+0.014 * IIIIXZZZZZZIIIIIIIIZ\n", + "-0.000 * IZIIXIZZZIZZIZZIIZXZ\n", + "+0.000 * ZIZZXZIIIZIZIZZIIZXZ\n", + "-0.000 * ZZIIYZIZZIIIIZZZZIYZ\n", + "+0.000 * IIZZYIZIIZZIIZZZZIYZ\n", + "-0.008 * IZIIXIZZZIZZIZXZZIIZ\n", + "+0.008 * ZIZZXZIIIZIZIZXZZIIZ\n", + "-0.008 * ZZIIYZIZZIIIIZYIIZIZ\n", + "+0.008 * IIZZYIZIIZZIIZYIIZIZ\n", + "-0.000 * IZIIXIZZZIZZIXIZZIIZ\n", + "+0.000 * ZIZZXZIIIZIZIXIZZIIZ\n", + "-0.000 * ZZIIYZIZZIIIIYIIIZIZ\n", + "+0.000 * IIZZYIZIIZZIIYIIIZIZ\n", + "-0.000 * IZIYIIZZZIZZIZZIYIIZ\n", + "+0.000 * ZIZYZZIIIZIZIZZIYIIZ\n", + "+0.000 * ZZIYZZIZZIIIIZZZYZIZ\n", + "-0.000 * IIZYIIZIIZZIIZZZYZIZ\n", + "+0.006 * IZIYIIZZZIZZIZZYZIIZ\n", + "-0.006 * ZIZYZZIIIZIZIZZYZIIZ\n", + "-0.006 * ZZIYZZIZZIIIIZZYIZIZ\n", + "+0.006 * IIZYIIZIIZZIIZZYIZIZ\n", + "+0.006 * IZYZIIZZZIZZIZZIYIIZ\n", + "-0.006 * ZIYIZZIIIZIZIZZIYIIZ\n", + "-0.006 * ZZYZZZIZZIIIIZZZYZIZ\n", + "+0.006 * IIYIIIZIIZZIIZZZYZIZ\n", + "+0.000 * IZYZIIZZZIZZIZZYZIIZ\n", + "-0.000 * ZIYIZZIIIZIZIZZYZIIZ\n", + "-0.000 * ZZYZZZIZZIIIIZZYIZIZ\n", + "+0.000 * IIYIIIZIIZZIIZZYIZIZ\n", + "-0.016 * IXIIZZZIIIZZIIIZZZII\n", + "+0.016 * ZXZZIIIZZZIZIIIZZZII\n", + "-0.002 * IXZZIIZZZIZZIZZIIXIZ\n", + "+0.002 * ZXIIZZIIIZIZIZZIIXIZ\n", + "+0.002 * ZXZZZZIZZIIIIZZZZXIZ\n", + "-0.002 * IXIIIIZIIZZIIZZZZXIZ\n", + "-0.014 * IXZZIIZZZIZXZIIZZIIZ\n", + "+0.014 * ZXIIZZIIIZIXZIIZZIIZ\n", + "+0.014 * ZXZZZZIZZIIXZIIIIZIZ\n", + "-0.014 * IXIIIIZIIZZXZIIIIZIZ\n", + "+0.005 * YIIIZZZIIIZZIIIZZZIY\n", + "-0.005 * YZZZIIIZZZIZIIIZZZIY\n", + "+0.005 * XIIIIIIIIIIIIIIIIIIX\n", + "-0.005 * XZZZZZZZZZZIIIIIIIIX\n", + "+0.012 * YIZZIIZZZIZZYIIZZIIZ\n", + "-0.012 * YZIIZZIIIZIZYIIZZIIZ\n", + "+0.012 * XIZZZZIZZIIIXIIIIZIZ\n", + "-0.012 * XZIIIIZIIZZIXIIIIZIZ\n", + "+0.136 * ZIIIZZZIIIIZIIIZZZII\n", + "+0.014 * ZIZZIIZZZIIZIZZIIXIZ\n", + "-0.014 * IIZZZZIZZIZIIZZZZXIZ\n", + "+0.009 * ZIZZIIZZZIIXZIIZZIIZ\n", + "-0.009 * IIZZZZIZZIZXZIIIIZIZ\n", + "-0.014 * ZIIIZZZIIYXZIIIZZZIY\n", + "+0.014 * ZIIIZZZIIXYZIIIZZZIY\n", + "+0.014 * IIIIIIIIIYYIIIIIIIIX\n", + "+0.014 * IIIIIIIIIXXIIIIIIIIX\n", + "-0.001 * ZIZZIIZZZYXZYIIZZIIZ\n", + "+0.001 * ZIZZIIZZZXYZYIIZZIIZ\n", + "+0.001 * IIZZZZIZZYYIXIIIIZIZ\n", + "+0.001 * IIZZZZIZZXXIXIIIIZIZ\n", + "+0.013 * ZIZZIIZZXZXZIZZIIZZZ\n", + "+0.013 * ZIZZIIZZYZYZIZZIIZZZ\n", + "+0.013 * IIIIIIIIYZYIIIIIIIIZ\n", + "+0.013 * IIIIIIIIXZXIIIIIIIIZ\n", + "-0.006 * ZIZZIIZZXZXZIZXZZIIZ\n", + "-0.006 * ZIZZIIZZYZYZIZXZZIIZ\n", + "-0.006 * IIZZZZIZXZYIIZYIIZIZ\n", + "+0.006 * IIZZZZIZYZXIIZYIIZIZ\n", + "-0.000 * ZIZZIIZZXZXZIXIZZIIZ\n", + "-0.000 * ZIZZIIZZYZYZIXIZZIIZ\n", + "-0.000 * IIZZZZIZXZYIIYIIIZIZ\n", + "+0.000 * IIZZZZIZYZXIIYIIIZIZ\n", + "+0.013 * ZIZZIIZXIZXZIZZIIZXZ\n", + "+0.013 * ZIZZIIZYIZYZIZZIIZXZ\n", + "+0.013 * IIZZZZIXIZYIIZZZZIYZ\n", + "-0.013 * IIZZZZIYIZXIIZZZZIYZ\n", + "+0.000 * ZIZZIIZXIZXZIZXZZIIZ\n", + "+0.000 * ZIZZIIZYIZYZIZXZZIIZ\n", + "+0.000 * IIZZZZIXIZYIIZYIIZIZ\n", + "-0.000 * IIZZZZIYIZXIIZYIIZIZ\n", + "-0.006 * ZIZZIIZXIZXZIXIZZIIZ\n", + "-0.006 * ZIZZIIZYIZYZIXIZZIIZ\n", + "-0.006 * IIZZZZIXIZYIIYIIIZIZ\n", + "+0.006 * IIZZZZIYIZXIIYIIIZIZ\n", + "+0.014 * ZIIIZZXZZZXZIIIZZZII\n", + "+0.014 * ZIIIZZYZZZYZIIIZZZII\n", + "+0.019 * ZIZZIIXIIZXZIZZIIXIZ\n", + "+0.019 * ZIZZIIYIIZYZIZZIIXIZ\n", + "+0.019 * IIZZZZYIIZYIIZZZZXIZ\n", + "+0.019 * IIZZZZXIIZXIIZZZZXIZ\n", + "-0.004 * ZIZZIIXIIZXXZIIZZIIZ\n", + "-0.004 * ZIZZIIYIIZYXZIIZZIIZ\n", + "-0.004 * IIZZZZYIIZYXZIIIIZIZ\n", + "-0.004 * IIZZZZXIIZXXZIIIIZIZ\n", + "-0.018 * ZIZZIYIIIZXZIZZIYIIZ\n", + "+0.018 * ZIZZIXIIIZYZIZZIYIIZ\n", + "+0.018 * IIZZZXZIIZYIIZZZYZIZ\n", + "-0.018 * IIZZZYZIIZXIIZZZYZIZ\n", + "-0.018 * ZIZZYZIIIZXZIZZYZIIZ\n", + "+0.018 * ZIZZXZIIIZYZIZZYZIIZ\n", + "+0.018 * IIZZXIZIIZYIIZZYIZIZ\n", + "-0.018 * IIZZYIZIIZXIIZZYIZIZ\n", + "-0.006 * ZIZXZZIIIZXZIZZIIZZZ\n", + "-0.006 * ZIZYZZIIIZYZIZZIIZZZ\n", + "-0.006 * IIIYZZZZZZYIIIIIIIIZ\n", + "-0.006 * IIIXZZZZZZXIIIIIIIIZ\n", + "+0.000 * ZIZXZZIIIZXZIZZIIZXZ\n", + "+0.000 * ZIZYZZIIIZYZIZZIIZXZ\n", + "+0.000 * IIZXIIZIIZYIIZZZZIYZ\n", + "-0.000 * IIZYIIZIIZXIIZZZZIYZ\n", + "+0.007 * ZIZXZZIIIZXZIZXZZIIZ\n", + "+0.007 * ZIZYZZIIIZYZIZXZZIIZ\n", + "+0.007 * IIZXIIZIIZYIIZYIIZIZ\n", + "-0.007 * IIZYIIZIIZXIIZYIIZIZ\n", + "-0.000 * ZIXIZZIIIZXZIZZIIZZZ\n", + "-0.000 * ZIYIZZIIIZYZIZZIIZZZ\n", + "-0.000 * IIYZZZZZZZYIIIIIIIIZ\n", + "-0.000 * IIXZZZZZZZXIIIIIIIIZ\n", + "-0.006 * ZIXIZZIIIZXZIZZIIZXZ\n", + "-0.006 * ZIYIZZIIIZYZIZZIIZXZ\n", + "-0.006 * IIXIIIZIIZYIIZZZZIYZ\n", + "+0.006 * IIYIIIZIIZXIIZZZZIYZ\n", + "+0.007 * ZIXIZZIIIZXZIXIZZIIZ\n", + "+0.007 * ZIYIZZIIIZYZIXIZZIIZ\n", + "+0.007 * IIXIIIZIIZYIIYIIIZIZ\n", + "-0.007 * IIYIIIZIIZXIIYIIIZIZ\n", + "-0.001 * ZYZZIIIZZZXZIIIZZZIY\n", + "+0.001 * ZXZZIIIZZZYZIIIZZZIY\n", + "+0.001 * IYZZZZZZZZYIIIIIIIIX\n", + "+0.001 * IXZZZZZZZZXIIIIIIIIX\n", + "-0.016 * ZYIIZZIIIZXZYIIZZIIZ\n", + "+0.016 * ZXIIZZIIIZYZYIIZZIIZ\n", + "+0.016 * IYIIIIZIIZYIXIIIIZIZ\n", + "+0.016 * IXIIIIZIIZXIXIIIIZIZ\n", + "+0.009 * XZZZIIIZZZXZIIIZZZII\n", + "+0.009 * YZZZIIIZZZYZIIIZZZII\n", + "-0.004 * XZIIZZIIIZXZIZZIIXIZ\n", + "-0.004 * YZIIZZIIIZYZIZZIIXIZ\n", + "-0.004 * YZIIIIZIIZYIIZZZZXIZ\n", + "-0.004 * XZIIIIZIIZXIIZZZZXIZ\n", + "+0.016 * XZIIZZIIIZXXZIIZZIIZ\n", + "+0.016 * YZIIZZIIIZYXZIIZZIIZ\n", + "+0.016 * YZIIIIZIIZYXZIIIIZIZ\n", + "+0.016 * XZIIIIZIIZXXZIIIIZIZ\n", + "+0.115 * ZIIIZZZIIZZZIIIZZZII\n", + "-0.005 * ZIZZIIZZZZZZIZZIIXIZ\n", + "+0.005 * IIZZZZIZZZIIIZZZZXIZ\n", + "+0.002 * ZIZZIIZZZZZXZIIZZIIZ\n", + "-0.002 * IIZZZZIZZZIXZIIIIZIZ\n", + "+0.000 * ZIZZIIZZXYZZIZZIYIIZ\n", + "-0.000 * ZIZZIIZZYXZZIZZIYIIZ\n", + "-0.000 * IIZZZZIZXYIIIZZZYZIZ\n", + "+0.000 * IIZZZZIZYXIIIZZZYZIZ\n", + "+0.004 * ZIZZIIZZXYZZIZZYZIIZ\n", + "-0.004 * ZIZZIIZZYXZZIZZYZIIZ\n", + "-0.004 * IIZZZZIZXYIIIZZYIZIZ\n", + "+0.004 * IIZZZZIZYXIIIZZYIZIZ\n", + "+0.004 * ZIZZIIZXIYZZIZZIYIIZ\n", + "-0.004 * ZIZZIIZYIXZZIZZIYIIZ\n", + "-0.004 * IIZZZZIXIYIIIZZZYZIZ\n", + "+0.004 * IIZZZZIYIXIIIZZZYZIZ\n", + "-0.000 * ZIZZIIZXIYZZIZZYZIIZ\n", + "+0.000 * ZIZZIIZYIXZZIZZYZIIZ\n", + "+0.000 * IIZZZZIXIYIIIZZYIZIZ\n", + "-0.000 * IIZZZZIYIXIIIZZYIZIZ\n", + "+0.022 * ZIIIZZXZZYZZIIIZZZIY\n", + "-0.022 * ZIIIZZYZZXZZIIIZZZIY\n", + "-0.022 * IIIIIIYZZYIIIIIIIIIX\n", + "-0.022 * IIIIIIXZZXIIIIIIIIIX\n", + "+0.012 * ZIZZIIXIIYZZYIIZZIIZ\n", + "-0.012 * ZIZZIIYIIXZZYIIZZIIZ\n", + "-0.012 * IIZZZZYIIYIIXIIIIZIZ\n", + "-0.012 * IIZZZZXIIXIIXIIIIZIZ\n", + "+0.000 * ZIZZIYIIIYZZIZZIIZZZ\n", + "+0.000 * ZIZZIXIIIXZZIZZIIZZZ\n", + "-0.000 * IIIIIYZZZYIIIIIIIIIZ\n", + "-0.000 * IIIIIXZZZXIIIIIIIIIZ\n", + "+0.006 * ZIZZIYIIIYZZIZZIIZXZ\n", + "+0.006 * ZIZZIXIIIXZZIZZIIZXZ\n", + "-0.006 * IIZZZXZIIYIIIZZZZIYZ\n", + "+0.006 * IIZZZYZIIXIIIZZZZIYZ\n", + "+0.000 * ZIZZIYIIIYZZIZXZZIIZ\n", + "+0.000 * ZIZZIXIIIXZZIZXZZIIZ\n", + "-0.000 * IIZZZXZIIYIIIZYIIZIZ\n", + "+0.000 * IIZZZYZIIXIIIZYIIZIZ\n", + "-0.006 * ZIZZIYIIIYZZIXIZZIIZ\n", + "-0.006 * ZIZZIXIIIXZZIXIZZIIZ\n", + "+0.006 * IIZZZXZIIYIIIYIIIZIZ\n", + "-0.006 * IIZZZYZIIXIIIYIIIZIZ\n", + "+0.006 * ZIZZYZIIIYZZIZZIIZZZ\n", + "+0.006 * ZIZZXZIIIXZZIZZIIZZZ\n", + "-0.006 * IIIIYZZZZYIIIIIIIIIZ\n", + "-0.006 * IIIIXZZZZXIIIIIIIIIZ\n", + "-0.000 * ZIZZYZIIIYZZIZZIIZXZ\n", + "-0.000 * ZIZZXZIIIXZZIZZIIZXZ\n", + "+0.000 * IIZZXIZIIYIIIZZZZIYZ\n", + "-0.000 * IIZZYIZIIXIIIZZZZIYZ\n", + "-0.006 * ZIZZYZIIIYZZIZXZZIIZ\n", + "-0.006 * ZIZZXZIIIXZZIZXZZIIZ\n", + "+0.006 * IIZZXIZIIYIIIZYIIZIZ\n", + "-0.006 * IIZZYIZIIXIIIZYIIZIZ\n", + "-0.000 * ZIZZYZIIIYZZIXIZZIIZ\n", + "-0.000 * ZIZZXZIIIXZZIXIZZIIZ\n", + "+0.000 * IIZZXIZIIYIIIYIIIZIZ\n", + "-0.000 * IIZZYIZIIXIIIYIIIZIZ\n", + "+0.000 * ZIZXZZIIIYZZIZZIYIIZ\n", + "-0.000 * ZIZYZZIIIXZZIZZIYIIZ\n", + "-0.000 * IIZXIIZIIYIIIZZZYZIZ\n", + "+0.000 * IIZYIIZIIXIIIZZZYZIZ\n", + "-0.011 * ZIZXZZIIIYZZIZZYZIIZ\n", + "+0.011 * ZIZYZZIIIXZZIZZYZIIZ\n", + "+0.011 * IIZXIIZIIYIIIZZYIZIZ\n", + "-0.011 * IIZYIIZIIXIIIZZYIZIZ\n", + "-0.011 * ZIXIZZIIIYZZIZZIYIIZ\n", + "+0.011 * ZIYIZZIIIXZZIZZIYIIZ\n", + "+0.011 * IIXIIIZIIYIIIZZZYZIZ\n", + "-0.011 * IIYIIIZIIXIIIZZZYZIZ\n", + "-0.000 * ZIXIZZIIIYZZIZZYZIIZ\n", + "+0.000 * ZIYIZZIIIXZZIZZYZIIZ\n", + "+0.000 * IIXIIIZIIYIIIZZYIZIZ\n", + "-0.000 * IIYIIIZIIXIIIZZYIZIZ\n", + "-0.000 * ZYZZIIIZZYZZIIIZZZII\n", + "-0.000 * ZXZZIIIZZXZZIIIZZZII\n", + "-0.011 * ZYIIZZIIIYZZIZZIIXIZ\n", + "-0.011 * ZXIIZZIIIXZZIZZIIXIZ\n", + "+0.011 * IYIIIIZIIYIIIZZZZXIZ\n", + "+0.011 * IXIIIIZIIXIIIZZZZXIZ\n", + "+0.007 * ZYIIZZIIIYZXZIIZZIIZ\n", + "+0.007 * ZXIIZZIIIXZXZIIZZIIZ\n", + "-0.007 * IYIIIIZIIYIXZIIIIZIZ\n", + "-0.007 * IXIIIIZIIXIXZIIIIZIZ\n", + "+0.008 * XZZZIIIZZYZZIIIZZZIY\n", + "-0.008 * YZZZIIIZZXZZIIIZZZIY\n", + "-0.008 * YZZZZZZZZYIIIIIIIIIX\n", + "-0.008 * XZZZZZZZZXIIIIIIIIIX\n", + "+0.000 * XZIIZZIIIYZZYIIZZIIZ\n", + "-0.000 * YZIIZZIIIXZZYIIZZIIZ\n", + "-0.000 * YZIIIIZIIYIIXIIIIZIZ\n", + "-0.000 * XZIIIIZIIXIIXIIIIZIZ\n", + "+0.123 * ZIIIZZZIZIZZIIIZZZII\n", + "+0.011 * ZIZZIIZZIIZZIZZIIXIZ\n", + "-0.011 * IIZZZZIZIIIIIZZZZXIZ\n", + "+0.002 * ZIZZIIZZIIZXZIIZZIIZ\n", + "-0.002 * IIZZZZIZIIIXZIIIIZIZ\n", + "-0.001 * ZIZZIIXIXIZZIZZIIZZZ\n", + "-0.001 * ZIZZIIYIYIZZIZZIIZZZ\n", + "-0.001 * IIIIIIYZYIIIIIIIIIIZ\n", + "-0.001 * IIIIIIXZXIIIIIIIIIIZ\n", + "+0.004 * ZIZZIIXIXIZZIZXZZIIZ\n", + "+0.004 * ZIZZIIYIYIZZIZXZZIIZ\n", + "+0.004 * IIZZZZYIXIIIIZYIIZIZ\n", + "-0.004 * IIZZZZXIYIIIIZYIIZIZ\n", + "+0.000 * ZIZZIIXIXIZZIXIZZIIZ\n", + "+0.000 * ZIZZIIYIYIZZIXIZZIIZ\n", + "+0.000 * IIZZZZYIXIIIIYIIIZIZ\n", + "-0.000 * IIZZZZXIYIIIIYIIIZIZ\n", + "+0.001 * ZIIIZXIZYIZZIIIZZZIY\n", + "-0.001 * ZIIIZYIZXIZZIIIZZZIY\n", + "-0.001 * IIIIIYZZYIIIIIIIIIIX\n", + "-0.001 * IIIIIXZZXIIIIIIIIIIX\n", + "+0.001 * ZIZZIYIIXIZZYIIZZIIZ\n", + "-0.001 * ZIZZIXIIYIZZYIIZZIIZ\n", + "+0.001 * IIZZZXZIXIIIXIIIIZIZ\n", + "+0.001 * IIZZZYZIYIIIXIIIIZIZ\n", + "+0.015 * ZIIIXIIZYIZZIIIZZZIY\n", + "-0.015 * ZIIIYIIZXIZZIIIZZZIY\n", + "-0.015 * IIIIYZZZYIIIIIIIIIIX\n", + "-0.015 * IIIIXZZZXIIIIIIIIIIX\n", + "+0.018 * ZIZZYZIIXIZZYIIZZIIZ\n", + "-0.018 * ZIZZXZIIYIZZYIIZZIIZ\n", + "+0.018 * IIZZXIZIXIIIXIIIIZIZ\n", + "+0.018 * IIZZYIZIYIIIXIIIIZIZ\n", + "+0.004 * ZIIYIIIZYIZZIIIZZZII\n", + "+0.004 * ZIIXIIIZXIZZIIIZZZII\n", + "+0.014 * ZIZXZZIIXIZZIZZIIXIZ\n", + "+0.014 * ZIZYZZIIYIZZIZZIIXIZ\n", + "-0.014 * IIZXIIZIXIIIIZZZZXIZ\n", + "-0.014 * IIZYIIZIYIIIIZZZZXIZ\n", + "-0.015 * ZIZXZZIIXIZXZIIZZIIZ\n", + "-0.015 * ZIZYZZIIYIZXZIIZZIIZ\n", + "+0.015 * IIZXIIZIXIIXZIIIIZIZ\n", + "+0.015 * IIZYIIZIYIIXZIIIIZIZ\n", + "+0.000 * ZIYZIIIZYIZZIIIZZZII\n", + "+0.000 * ZIXZIIIZXIZZIIIZZZII\n", + "+0.001 * ZIXIZZIIXIZZIZZIIXIZ\n", + "+0.001 * ZIYIZZIIYIZZIZZIIXIZ\n", + "-0.001 * IIXIIIZIXIIIIZZZZXIZ\n", + "-0.001 * IIYIIIZIYIIIIZZZZXIZ\n", + "-0.001 * ZIXIZZIIXIZXZIIZZIIZ\n", + "-0.001 * ZIYIZZIIYIZXZIIZZIIZ\n", + "+0.001 * IIXIIIZIXIIXZIIIIZIZ\n", + "+0.001 * IIYIIIZIYIIXZIIIIZIZ\n", + "+0.000 * ZYIIZZIIXIZZIZZIYIIZ\n", + "-0.000 * ZXIIZZIIYIZZIZZIYIIZ\n", + "-0.000 * IYIIIIZIXIIIIZZZYZIZ\n", + "+0.000 * IXIIIIZIYIIIIZZZYZIZ\n", + "+0.002 * ZYIIZZIIXIZZIZZYZIIZ\n", + "-0.002 * ZXIIZZIIYIZZIZZYZIIZ\n", + "-0.002 * IYIIIIZIXIIIIZZYIZIZ\n", + "+0.002 * IXIIIIZIYIIIIZZYIZIZ\n", + "+0.002 * XZIIZZIIXIZZIZZIIZZZ\n", + "+0.002 * YZIIZZIIYIZZIZZIIZZZ\n", + "+0.002 * YZZZZZZZYIIIIIIIIIIZ\n", + "+0.002 * XZZZZZZZXIIIIIIIIIIZ\n", + "-0.004 * XZIIZZIIXIZZIZXZZIIZ\n", + "-0.004 * YZIIZZIIYIZZIZXZZIIZ\n", + "-0.004 * YZIIIIZIXIIIIZYIIZIZ\n", + "+0.004 * XZIIIIZIYIIIIZYIIZIZ\n", + "-0.000 * XZIIZZIIXIZZIXIZZIIZ\n", + "-0.000 * YZIIZZIIYIZZIXIZZIIZ\n", + "-0.000 * YZIIIIZIXIIIIYIIIZIZ\n", + "+0.000 * XZIIIIZIYIIIIYIIIZIZ\n", + "+0.123 * ZIIIZZZZIIZZIIIZZZII\n", + "+0.011 * ZIZZIIZIZIZZIZZIIXIZ\n", + "-0.011 * IIZZZZIIZIIIIZZZZXIZ\n", + "+0.002 * ZIZZIIZIZIZXZIIZZIIZ\n", + "-0.002 * IIZZZZIIZIIXZIIIIZIZ\n", + "-0.001 * ZIZZIIXXZIZZIZZIIZXZ\n", + "-0.001 * ZIZZIIYYZIZZIZZIIZXZ\n", + "-0.001 * IIZZZZYXZIIIIZZZZIYZ\n", + "+0.001 * IIZZZZXYZIIIIZZZZIYZ\n", + "-0.000 * ZIZZIIXXZIZZIZXZZIIZ\n", + "-0.000 * ZIZZIIYYZIZZIZXZZIIZ\n", + "-0.000 * IIZZZZYXZIIIIZYIIZIZ\n", + "+0.000 * IIZZZZXYZIIIIZYIIZIZ\n", + "+0.004 * ZIZZIIXXZIZZIXIZZIIZ\n", + "+0.004 * ZIZZIIYYZIZZIXIZZIIZ\n", + "+0.004 * IIZZZZYXZIIIIYIIIZIZ\n", + "-0.004 * IIZZZZXYZIIIIYIIIZIZ\n", + "+0.015 * ZIIIZXIYIIZZIIIZZZIY\n", + "-0.015 * ZIIIZYIXIIZZIIIZZZIY\n", + "-0.015 * IIIIIYZYIIIIIIIIIIIX\n", + "-0.015 * IIIIIXZXIIIIIIIIIIIX\n", + "+0.018 * ZIZZIYIXZIZZYIIZZIIZ\n", + "-0.018 * ZIZZIXIYZIZZYIIZZIIZ\n", + "+0.018 * IIZZZXZXZIIIXIIIIZIZ\n", + "+0.018 * IIZZZYZYZIIIXIIIIZIZ\n", + "-0.001 * ZIIIXIIYIIZZIIIZZZIY\n", + "+0.001 * ZIIIYIIXIIZZIIIZZZIY\n", + "+0.001 * IIIIYZZYIIIIIIIIIIIX\n", + "+0.001 * IIIIXZZXIIIIIIIIIIIX\n", + "-0.001 * ZIZZYZIXZIZZYIIZZIIZ\n", + "+0.001 * ZIZZXZIYZIZZYIIZZIIZ\n", + "-0.001 * IIZZXIZXZIIIXIIIIZIZ\n", + "-0.001 * IIZZYIZYZIIIXIIIIZIZ\n", + "-0.000 * ZIIYIIIYIIZZIIIZZZII\n", + "-0.000 * ZIIXIIIXIIZZIIIZZZII\n", + "-0.001 * ZIZXZZIXZIZZIZZIIXIZ\n", + "-0.001 * ZIZYZZIYZIZZIZZIIXIZ\n", + "+0.001 * IIZXIIZXZIIIIZZZZXIZ\n", + "+0.001 * IIZYIIZYZIIIIZZZZXIZ\n", + "+0.001 * ZIZXZZIXZIZXZIIZZIIZ\n", + "+0.001 * ZIZYZZIYZIZXZIIZZIIZ\n", + "-0.001 * IIZXIIZXZIIXZIIIIZIZ\n", + "-0.001 * IIZYIIZYZIIXZIIIIZIZ\n", + "+0.004 * ZIYZIIIYIIZZIIIZZZII\n", + "+0.004 * ZIXZIIIXIIZZIIIZZZII\n", + "+0.014 * ZIXIZZIXZIZZIZZIIXIZ\n", + "+0.014 * ZIYIZZIYZIZZIZZIIXIZ\n", + "-0.014 * IIXIIIZXZIIIIZZZZXIZ\n", + "-0.014 * IIYIIIZYZIIIIZZZZXIZ\n", + "-0.015 * ZIXIZZIXZIZXZIIZZIIZ\n", + "-0.015 * ZIYIZZIYZIZXZIIZZIIZ\n", + "+0.015 * IIXIIIZXZIIXZIIIIZIZ\n", + "+0.015 * IIYIIIZYZIIXZIIIIZIZ\n", + "+0.002 * ZYIIZZIXZIZZIZZIYIIZ\n", + "-0.002 * ZXIIZZIYZIZZIZZIYIIZ\n", + "-0.002 * IYIIIIZXZIIIIZZZYZIZ\n", + "+0.002 * IXIIIIZYZIIIIZZZYZIZ\n", + "-0.000 * ZYIIZZIXZIZZIZZYZIIZ\n", + "+0.000 * ZXIIZZIYZIZZIZZYZIIZ\n", + "+0.000 * IYIIIIZXZIIIIZZYIZIZ\n", + "-0.000 * IXIIIIZYZIIIIZZYIZIZ\n", + "+0.002 * XZIIZZIXZIZZIZZIIZXZ\n", + "+0.002 * YZIIZZIYZIZZIZZIIZXZ\n", + "+0.002 * YZIIIIZXZIIIIZZZZIYZ\n", + "-0.002 * XZIIIIZYZIIIIZZZZIYZ\n", + "+0.000 * XZIIZZIXZIZZIZXZZIIZ\n", + "+0.000 * YZIIZZIYZIZZIZXZZIIZ\n", + "+0.000 * YZIIIIZXZIIIIZYIIZIZ\n", + "-0.000 * XZIIIIZYZIIIIZYIIZIZ\n", + "-0.004 * XZIIZZIXZIZZIXIZZIIZ\n", + "-0.004 * YZIIZZIYZIZZIXIZZIIZ\n", + "-0.004 * YZIIIIZXZIIIIYIIIZIZ\n", + "+0.004 * XZIIIIZYZIIIIYIIIZIZ\n", + "+0.121 * ZIIIZZIIIIZZIIIZZZII\n", + "-0.004 * ZIZZIIIZZIZZIZZIIXIZ\n", + "+0.004 * IIZZZZZZZIIIIZZZZXIZ\n", + "+0.004 * ZIZZIIIZZIZXZIIZZIIZ\n", + "-0.004 * IIZZZZZZZIIXZIIIIZIZ\n", + "+0.006 * ZIZZIYXZZIZZIZZIYIIZ\n", + "-0.006 * ZIZZIXYZZIZZIZZIYIIZ\n", + "-0.006 * IIZZZXYZZIIIIZZZYZIZ\n", + "+0.006 * IIZZZYXZZIIIIZZZYZIZ\n", + "+0.006 * ZIZZYZXZZIZZIZZYZIIZ\n", + "-0.006 * ZIZZXZYZZIZZIZZYZIIZ\n", + "-0.006 * IIZZXIYZZIIIIZZYIZIZ\n", + "+0.006 * IIZZYIXZZIIIIZZYIZIZ\n", + "+0.006 * ZIZXZZXZZIZZIZZIIZZZ\n", + "+0.006 * ZIZYZZYZZIZZIZZIIZZZ\n", + "+0.006 * IIIYZZYIIIIIIIIIIIIZ\n", + "+0.006 * IIIXZZXIIIIIIIIIIIIZ\n", + "-0.000 * ZIZXZZXZZIZZIZZIIZXZ\n", + "-0.000 * ZIZYZZYZZIZZIZZIIZXZ\n", + "-0.000 * IIZXIIYZZIIIIZZZZIYZ\n", + "+0.000 * IIZYIIXZZIIIIZZZZIYZ\n", + "-0.003 * ZIZXZZXZZIZZIZXZZIIZ\n", + "-0.003 * ZIZYZZYZZIZZIZXZZIIZ\n", + "-0.003 * IIZXIIYZZIIIIZYIIZIZ\n", + "+0.003 * IIZYIIXZZIIIIZYIIZIZ\n", + "+0.000 * ZIXIZZXZZIZZIZZIIZZZ\n", + "+0.000 * ZIYIZZYZZIZZIZZIIZZZ\n", + "+0.000 * IIYZZZYIIIIIIIIIIIIZ\n", + "+0.000 * IIXZZZXIIIIIIIIIIIIZ\n", + "+0.006 * ZIXIZZXZZIZZIZZIIZXZ\n", + "+0.006 * ZIYIZZYZZIZZIZZIIZXZ\n", + "+0.006 * IIXIIIYZZIIIIZZZZIYZ\n", + "-0.006 * IIYIIIXZZIIIIZZZZIYZ\n", + "-0.003 * ZIXIZZXZZIZZIXIZZIIZ\n", + "-0.003 * ZIYIZZYZZIZZIXIZZIIZ\n", + "-0.003 * IIXIIIYZZIIIIYIIIZIZ\n", + "+0.003 * IIYIIIXZZIIIIYIIIZIZ\n", + "-0.010 * ZYZZIIXIIIZZIIIZZZIY\n", + "+0.010 * ZXZZIIYIIIZZIIIZZZIY\n", + "+0.010 * IYZZZZYIIIIIIIIIIIIX\n", + "+0.010 * IXZZZZXIIIIIIIIIIIIX\n", + "-0.009 * ZYIIZZXZZIZZYIIZZIIZ\n", + "+0.009 * ZXIIZZYZZIZZYIIZZIIZ\n", + "+0.009 * IYIIIIYZZIIIXIIIIZIZ\n", + "+0.009 * IXIIIIXZZIIIXIIIIZIZ\n", + "-0.004 * XZZZIIXIIIZZIIIZZZII\n", + "-0.004 * YZZZIIYIIIZZIIIZZZII\n", + "-0.012 * XZIIZZXZZIZZIZZIIXIZ\n", + "-0.012 * YZIIZZYZZIZZIZZIIXIZ\n", + "-0.012 * YZIIIIYZZIIIIZZZZXIZ\n", + "-0.012 * XZIIIIXZZIIIIZZZZXIZ\n", + "+0.011 * XZIIZZXZZIZXZIIZZIIZ\n", + "+0.011 * YZIIZZYZZIZXZIIZZIIZ\n", + "+0.011 * YZIIIIYZZIIXZIIIIZIZ\n", + "+0.011 * XZIIIIXZZIIXZIIIIZIZ\n", + "+0.126 * ZIIIZIZIIIZZIIIZZZII\n", + "-0.001 * ZIZZIZZZZIZZIZZIIXIZ\n", + "+0.001 * IIZZZIIZZIIIIZZZZXIZ\n", + "+0.015 * ZIZZIZZZZIZXZIIZZIIZ\n", + "-0.015 * IIZZZIIZZIIXZIIIIZIZ\n", + "+0.000 * ZIIYIXZIIIZZIIIZZZIY\n", + "-0.000 * ZIIXIYZIIIZZIIIZZZIY\n", + "-0.000 * IIIYZYIIIIIIIIIIIIIX\n", + "-0.000 * IIIXZXIIIIIIIIIIIIIX\n", + "+0.000 * ZIZXZYZZZIZZYIIZZIIZ\n", + "-0.000 * ZIZYZXZZZIZZYIIZZIIZ\n", + "+0.000 * IIZXIXIZZIIIXIIIIZIZ\n", + "+0.000 * IIZYIYIZZIIIXIIIIZIZ\n", + "-0.016 * ZIYZIXZIIIZZIIIZZZIY\n", + "+0.016 * ZIXZIYZIIIZZIIIZZZIY\n", + "+0.016 * IIYZZYIIIIIIIIIIIIIX\n", + "+0.016 * IIXZZXIIIIIIIIIIIIIX\n", + "-0.015 * ZIXIZYZZZIZZYIIZZIIZ\n", + "+0.015 * ZIYIZXZZZIZZYIIZZIIZ\n", + "-0.015 * IIXIIXIZZIIIXIIIIZIZ\n", + "-0.015 * IIYIIYIZZIIIXIIIIZIZ\n", + "+0.000 * ZYIIZYZZZIZZIZZIIZZZ\n", + "+0.000 * ZXIIZXZZZIZZIZZIIZZZ\n", + "-0.000 * IYZZZYIIIIIIIIIIIIIZ\n", + "-0.000 * IXZZZXIIIIIIIIIIIIIZ\n", + "+0.005 * ZYIIZYZZZIZZIZZIIZXZ\n", + "+0.005 * ZXIIZXZZZIZZIZZIIZXZ\n", + "-0.005 * IYIIIXIZZIIIIZZZZIYZ\n", + "+0.005 * IXIIIYIZZIIIIZZZZIYZ\n", + "+0.000 * ZYIIZYZZZIZZIZXZZIIZ\n", + "+0.000 * ZXIIZXZZZIZZIZXZZIIZ\n", + "-0.000 * IYIIIXIZZIIIIZYIIZIZ\n", + "+0.000 * IXIIIYIZZIIIIZYIIZIZ\n", + "-0.003 * ZYIIZYZZZIZZIXIZZIIZ\n", + "-0.003 * ZXIIZXZZZIZZIXIZZIIZ\n", + "+0.003 * IYIIIXIZZIIIIYIIIZIZ\n", + "-0.003 * IXIIIYIZZIIIIYIIIZIZ\n", + "-0.007 * XZIIZYZZZIZZIZZIYIIZ\n", + "+0.007 * YZIIZXZZZIZZIZZIYIIZ\n", + "+0.007 * YZIIIXIZZIIIIZZZYZIZ\n", + "-0.007 * XZIIIYIZZIIIIZZZYZIZ\n", + "+0.126 * ZIIIIZZIIIZZIIIZZZII\n", + "-0.001 * ZIZZZIZZZIZZIZZIIXIZ\n", + "+0.001 * IIZZIZIZZIIIIZZZZXIZ\n", + "+0.015 * ZIZZZIZZZIZXZIIZZIIZ\n", + "-0.015 * IIZZIZIZZIIXZIIIIZIZ\n", + "-0.016 * ZIIYXZZIIIZZIIIZZZIY\n", + "+0.016 * ZIIXYZZIIIZZIIIZZZIY\n", + "+0.016 * IIIYYIIIIIIIIIIIIIIX\n", + "+0.016 * IIIXXIIIIIIIIIIIIIIX\n", + "-0.015 * ZIZXYIZZZIZZYIIZZIIZ\n", + "+0.015 * ZIZYXIZZZIZZYIIZZIIZ\n", + "-0.015 * IIZXXZIZZIIIXIIIIZIZ\n", + "-0.015 * IIZYYZIZZIIIXIIIIZIZ\n", + "-0.000 * ZIYZXZZIIIZZIIIZZZIY\n", + "+0.000 * ZIXZYZZIIIZZIIIZZZIY\n", + "+0.000 * IIYZYIIIIIIIIIIIIIIX\n", + "+0.000 * IIXZXIIIIIIIIIIIIIIX\n", + "-0.000 * ZIXIYIZZZIZZYIIZZIIZ\n", + "+0.000 * ZIYIXIZZZIZZYIIZZIIZ\n", + "-0.000 * IIXIXZIZZIIIXIIIIZIZ\n", + "-0.000 * IIYIYZIZZIIIXIIIIZIZ\n", + "+0.005 * ZYIIYIZZZIZZIZZIIZZZ\n", + "+0.005 * ZXIIXIZZZIZZIZZIIZZZ\n", + "-0.005 * IYZZYIIIIIIIIIIIIIIZ\n", + "-0.005 * IXZZXIIIIIIIIIIIIIIZ\n", + "-0.000 * ZYIIYIZZZIZZIZZIIZXZ\n", + "-0.000 * ZXIIXIZZZIZZIZZIIZXZ\n", + "+0.000 * IYIIXZIZZIIIIZZZZIYZ\n", + "-0.000 * IXIIYZIZZIIIIZZZZIYZ\n", + "-0.003 * ZYIIYIZZZIZZIZXZZIIZ\n", + "-0.003 * ZXIIXIZZZIZZIZXZZIIZ\n", + "+0.003 * IYIIXZIZZIIIIZYIIZIZ\n", + "-0.003 * IXIIYZIZZIIIIZYIIZIZ\n", + "-0.000 * ZYIIYIZZZIZZIXIZZIIZ\n", + "-0.000 * ZXIIXIZZZIZZIXIZZIIZ\n", + "+0.000 * IYIIXZIZZIIIIYIIIZIZ\n", + "-0.000 * IXIIYZIZZIIIIYIIIZIZ\n", + "-0.007 * XZIIYIZZZIZZIZZYZIIZ\n", + "+0.007 * YZIIXIZZZIZZIZZYZIIZ\n", + "+0.007 * YZIIXZIZZIIIIZZYIZIZ\n", + "-0.007 * XZIIYZIZZIIIIZZYIZIZ\n", + "+0.123 * ZIIZZZZIIIZZIIIZZZII\n", + "+0.012 * ZIZIIIZZZIZZIZZIIXIZ\n", + "-0.012 * IIZIZZIZZIIIIZZZZXIZ\n", + "-0.002 * ZIZIIIZZZIZXZIIZZIIZ\n", + "+0.002 * IIZIZZIZZIIXZIIIIZIZ\n", + "+0.000 * ZYIXIIZZZIZZIZZIYIIZ\n", + "-0.000 * ZXIYIIZZZIZZIZZIYIIZ\n", + "-0.000 * IYIXZZIZZIIIIZZZYZIZ\n", + "+0.000 * IXIYZZIZZIIIIZZZYZIZ\n", + "-0.009 * ZYIXIIZZZIZZIZZYZIIZ\n", + "+0.009 * ZXIYIIZZZIZZIZZYZIIZ\n", + "+0.009 * IYIXZZIZZIIIIZZYIZIZ\n", + "-0.009 * IXIYZZIZZIIIIZZYIZIZ\n", + "-0.007 * XZIXIIZZZIZZIZZIIZZZ\n", + "-0.007 * YZIYIIZZZIZZIZZIIZZZ\n", + "-0.007 * YZZYIIIIIIIIIIIIIIIZ\n", + "-0.007 * XZZXIIIIIIIIIIIIIIIZ\n", + "+0.000 * XZIXIIZZZIZZIZZIIZXZ\n", + "+0.000 * YZIYIIZZZIZZIZZIIZXZ\n", + "+0.000 * YZIXZZIZZIIIIZZZZIYZ\n", + "-0.000 * XZIYZZIZZIIIIZZZZIYZ\n", + "+0.002 * XZIXIIZZZIZZIZXZZIIZ\n", + "+0.002 * YZIYIIZZZIZZIZXZZIIZ\n", + "+0.002 * YZIXZZIZZIIIIZYIIZIZ\n", + "-0.002 * XZIYZZIZZIIIIZYIIZIZ\n", + "+0.123 * ZIZIZZZIIIZZIIIZZZII\n", + "+0.012 * ZIIZIIZZZIZZIZZIIXIZ\n", + "-0.012 * IIIZZZIZZIIIIZZZZXIZ\n", + "-0.002 * ZIIZIIZZZIZXZIIZZIIZ\n", + "+0.002 * IIIZZZIZZIIXZIIIIZIZ\n", + "-0.009 * ZYXZIIZZZIZZIZZIYIIZ\n", + "+0.009 * ZXYZIIZZZIZZIZZIYIIZ\n", + "+0.009 * IYXZZZIZZIIIIZZZYZIZ\n", + "-0.009 * IXYZZZIZZIIIIZZZYZIZ\n", + "-0.000 * ZYXZIIZZZIZZIZZYZIIZ\n", + "+0.000 * ZXYZIIZZZIZZIZZYZIIZ\n", + "+0.000 * IYXZZZIZZIIIIZZYIZIZ\n", + "-0.000 * IXYZZZIZZIIIIZZYIZIZ\n", + "-0.000 * XZXZIIZZZIZZIZZIIZZZ\n", + "-0.000 * YZYZIIZZZIZZIZZIIZZZ\n", + "-0.000 * YZYIIIIIIIIIIIIIIIIZ\n", + "-0.000 * XZXIIIIIIIIIIIIIIIIZ\n", + "-0.007 * XZXZIIZZZIZZIZZIIZXZ\n", + "-0.007 * YZYZIIZZZIZZIZZIIZXZ\n", + "-0.007 * YZXZZZIZZIIIIZZZZIYZ\n", + "+0.007 * XZYZZZIZZIIIIZZZZIYZ\n", + "+0.002 * XZXZIIZZZIZZIXIZZIIZ\n", + "+0.002 * YZYZIIZZZIZZIXIZZIIZ\n", + "+0.002 * YZXZZZIZZIIIIYIIIZIZ\n", + "-0.002 * XZYZZZIZZIIIIYIIIZIZ\n", + "+0.132 * ZZIIZZZIIIZZIIIZZZII\n", + "+0.016 * ZZZZIIZZZIZZIZZIIXIZ\n", + "-0.016 * IZZZZZIZZIIIIZZZZXIZ\n", + "+0.005 * ZZZZIIZZZIZXZIIZZIIZ\n", + "-0.005 * IZZZZZIZZIIXZIIIIZIZ\n", + "-0.007 * XYIIZZZIIIZZIIIZZZIY\n", + "+0.007 * YXIIZZZIIIZZIIIZZZIY\n", + "+0.007 * YYIIIIIIIIIIIIIIIIIX\n", + "+0.007 * XXIIIIIIIIIIIIIIIIIX\n", + "-0.020 * XYZZIIZZZIZZYIIZZIIZ\n", + "+0.020 * YXZZIIZZZIZZYIIZZIIZ\n", + "+0.020 * YYZZZZIZZIIIXIIIIZIZ\n", + "+0.020 * XXZZZZIZZIIIXIIIIZIZ\n", + "+0.143 * IIIIZZZIIIZZIIIZZZII\n", + "+0.024 * IIZZIIZZZIZZIZZIIXIZ\n", + "-0.024 * ZIZZZZIZZIIIIZZZZXIZ\n", + "-0.002 * IIZZIIZZZIZXZIIZZIIZ\n", + "+0.002 * ZIZZZZIZZIIXZIIIIZIZ\n", + "+0.102 * IIZZZZIZZIIIIZZZZIZZ\n", + "-0.008 * IIZZZZIZZIIIIZXIIZIZ\n", + "+0.008 * IIIIIIIIIIIIIIXZZZZZ\n", + "-0.000 * IIZZZZIZZIIIIXIIIZIZ\n", + "+0.000 * IIIIIIIIIIIIIXZZZZZZ\n", + "+0.102 * IIIIIIIIIIIIIIIIIIZZ\n", + "-0.000 * IIIIIIIIIIIIIIYZZZYZ\n", + "-0.000 * IIIIIIIIIIIIIIXZZZXZ\n", + "+0.008 * IIIIIIIIIIIIIYZZZZYZ\n", + "+0.008 * IIIIIIIIIIIIIXZZZZXZ\n", + "+0.060 * IIIIIIIIIIIIIIIIIZIZ\n", + "+0.005 * IIIIIIIIIIIYZZZZZYIZ\n", + "+0.005 * IIIIIIIIIIIXZZZZZXIZ\n", + "+0.109 * IIIIIIIIIIIIIIIIZIIZ\n", + "+0.109 * IIIIIIIIIIIIIIIZIIIZ\n", + "+0.101 * IIIIIIIIIIIIIIZIIIIZ\n", + "+0.101 * IIIIIIIIIIIIIZIIIIIZ\n", + "+0.100 * IIIIIIIIIIIIZIIIIIIZ\n", + "+0.113 * IIIIIIIIIIIZIIIIIIIZ\n", + "-0.002 * IIIIIIIIIIIIYZZZZZZY\n", + "-0.002 * IIIIIIIIIIIIXZZZZZZX\n", + "+0.001 * IIIIIIIIIIIIIIIIYXIY\n", + "-0.000 * IIZZZZIZZIIIIZZZXYZY\n", + "-0.001 * IIZZZZIZZIIIIZZZYXZY\n", + "-0.001 * IIIIIIIIIIIIIIIIYYIX\n", + "+0.000 * IIIIIIIIIIIIIIIIXXIX\n", + "+0.001 * IIZZZZIZZIIIIZZZYYZX\n", + "+0.042 * IIIIIIIIIIIIIIIYZXIY\n", + "-0.000 * IIZZZZIZZIIIIZZXIYZY\n", + "-0.041 * IIZZZZIZZIIIIZZYIXZY\n", + "-0.041 * IIIIIIIIIIIIIIIYZYIX\n", + "+0.000 * IIIIIIIIIIIIIIIXZXIX\n", + "+0.042 * IIZZZZIZZIIIIZZYIYZX\n", + "-0.000 * IIIIIIIIIIIYZZZZXIIY\n", + "+0.000 * IIZZZZIZZIIYZIIIXIZY\n", + "+0.000 * IIZZZZIZZIIXZIIIYIZY\n", + "+0.000 * IIIIIIIIIIIYZZZZYIIX\n", + "-0.000 * IIIIIIIIIIIXZZZZXIIX\n", + "+0.000 * IIZZZZIZZIIXZIIIXIZX\n", + "-0.006 * IIIIIIIIIIIYZZZXIIIY\n", + "+0.005 * IIZZZZIZZIIYZIIXZIZY\n", + "+0.000 * IIZZZZIZZIIXZIIYZIZY\n", + "+0.000 * IIIIIIIIIIIYZZZYIIIX\n", + "-0.005 * IIIIIIIIIIIXZZZXIIIX\n", + "+0.006 * IIZZZZIZZIIXZIIXZIZX\n", + "-0.011 * IIIIIIIIIIIIYZXIIIIY\n", + "+0.010 * IIZZZZIZZIIIYIXZZIZY\n", + "+0.001 * IIZZZZIZZIIIXIYZZIZY\n", + "+0.001 * IIIIIIIIIIIIYZYIIIIX\n", + "-0.010 * IIIIIIIIIIIIXZXIIIIX\n", + "+0.011 * IIZZZZIZZIIIXIXZZIZX\n", + "-0.001 * IIIIIIIIIIIIYXIIIIIY\n", + "+0.001 * IIZZZZIZZIIIYXZZZIZY\n", + "+0.000 * IIZZZZIZZIIIXYZZZIZY\n", + "+0.000 * IIIIIIIIIIIIYYIIIIIX\n", + "-0.001 * IIIIIIIIIIIIXXIIIIIX\n", + "+0.001 * IIZZZZIZZIIIXXZZZIZX\n", + "-0.002 * IIZZZZIZZIIIYIIIIZZY\n", + "-0.002 * IIZZZZIZZIIIXIIIIZZX\n", + "+0.042 * IIZZZZIZZIIIIZZZXXYY\n", + "-0.000 * IIZZZZIZZIIIIZZZXYXY\n", + "-0.041 * IIZZZZIZZIIIIZZZYXXY\n", + "-0.041 * IIZZZZIZZIIIIZZZXYYX\n", + "-0.000 * IIZZZZIZZIIIIZZZYXYX\n", + "+0.042 * IIZZZZIZZIIIIZZZYYXX\n", + "-0.001 * IIZZZZIZZIIIIZZXIXYY\n", + "+0.000 * IIZZZZIZZIIIIZZXIYXY\n", + "+0.001 * IIZZZZIZZIIIIZZYIXXY\n", + "+0.001 * IIZZZZIZZIIIIZZXIYYX\n", + "+0.000 * IIZZZZIZZIIIIZZYIXYX\n", + "-0.001 * IIZZZZIZZIIIIZZYIYXX\n", + "+0.006 * IIZZZZIZZIIYZIIIYIYY\n", + "+0.005 * IIZZZZIZZIIYZIIIXIXY\n", + "+0.000 * IIZZZZIZZIIXZIIIYIXY\n", + "+0.000 * IIZZZZIZZIIYZIIIXIYX\n", + "+0.005 * IIZZZZIZZIIXZIIIYIYX\n", + "+0.006 * IIZZZZIZZIIXZIIIXIXX\n", + "-0.000 * IIZZZZIZZIIYZIIYZIYY\n", + "-0.000 * IIZZZZIZZIIYZIIXZIXY\n", + "-0.000 * IIZZZZIZZIIXZIIYZIXY\n", + "-0.000 * IIZZZZIZZIIYZIIXZIYX\n", + "-0.000 * IIZZZZIZZIIXZIIYZIYX\n", + "-0.000 * IIZZZZIZZIIXZIIXZIXX\n", + "-0.001 * IIZZZZIZZIIIYIYZZIYY\n", + "-0.001 * IIZZZZIZZIIIYIXZZIXY\n", + "-0.000 * IIZZZZIZZIIIXIYZZIXY\n", + "-0.000 * IIZZZZIZZIIIYIXZZIYX\n", + "-0.001 * IIZZZZIZZIIIXIYZZIYX\n", + "-0.001 * IIZZZZIZZIIIXIXZZIXX\n", + "+0.011 * IIZZZZIZZIIIYYZZZIYY\n", + "+0.010 * IIZZZZIZZIIIYXZZZIXY\n", + "+0.001 * IIZZZZIZZIIIXYZZZIXY\n", + "+0.001 * IIZZZZIZZIIIYXZZZIYX\n", + "+0.010 * IIZZZZIZZIIIXYZZZIYX\n", + "+0.011 * IIZZZZIZZIIIXXZZZIXX\n", + "-0.018 * IIZZZZIZZIIIYIIIIIIY\n", + "-0.018 * IIZZZZIZZIIIXIIIIIIX\n", + "+0.000 * IIZZZZIZZIIIIZXIYXIY\n", + "-0.001 * IIZZZZIZZIIIIZXIXYIY\n", + "-0.001 * IIZZZZIZZIIIIZYIYYIY\n", + "-0.001 * IIZZZZIZZIIIIZXIXXIX\n", + "-0.001 * IIZZZZIZZIIIIZYIYXIX\n", + "+0.000 * IIZZZZIZZIIIIZYIXYIX\n", + "-0.000 * IIZZZZIZZIIIIXIIYXIY\n", + "+0.036 * IIZZZZIZZIIIIXIIXYIY\n", + "+0.035 * IIZZZZIZZIIIIYIIYYIY\n", + "+0.035 * IIZZZZIZZIIIIXIIXXIX\n", + "+0.036 * IIZZZZIZZIIIIYIIYXIX\n", + "-0.000 * IIZZZZIZZIIIIYIIXYIX\n", + "-0.000 * IIZZZZIZZIIIIZXYZXIY\n", + "+0.036 * IIZZZZIZZIIIIZXXZYIY\n", + "+0.035 * IIZZZZIZZIIIIZYYZYIY\n", + "+0.035 * IIZZZZIZZIIIIZXXZXIX\n", + "+0.036 * IIZZZZIZZIIIIZYYZXIX\n", + "-0.000 * IIZZZZIZZIIIIZYXZYIX\n", + "-0.000 * IIZZZZIZZIIIIXIYZXIY\n", + "+0.001 * IIZZZZIZZIIIIXIXZYIY\n", + "+0.001 * IIZZZZIZZIIIIYIYZYIY\n", + "+0.001 * IIZZZZIZZIIIIXIXZXIX\n", + "+0.001 * IIZZZZIZZIIIIYIYZXIX\n", + "-0.000 * IIZZZZIZZIIIIYIXZYIX\n", + "-0.006 * IIZZZZIZZIIYXZZZZXIY\n", + "-0.032 * IIZZZZIZZIIYYZZZZYIY\n", + "-0.026 * IIZZZZIZZIIXXZZZZYIY\n", + "-0.026 * IIZZZZIZZIIYYZZZZXIX\n", + "-0.032 * IIZZZZIZZIIXXZZZZXIX\n", + "-0.006 * IIZZZZIZZIIXYZZZZYIX\n", + "+0.009 * IIZZZZIZZIIIYIIIZZIY\n", + "+0.009 * IIZZZZIZZIIIXIIIZZIX\n", + "+0.000 * IIZZZZIZZIIYZIYZYZIY\n", + "+0.000 * IIZZZZIZZIIYZIXZXZIY\n", + "+0.000 * IIZZZZIZZIIXZIYZXZIY\n", + "+0.000 * IIZZZZIZZIIYZIXZYZIX\n", + "+0.000 * IIZZZZIZZIIXZIYZYZIX\n", + "+0.000 * IIZZZZIZZIIXZIXZXZIX\n", + "-0.007 * IIZZZZIZZIIYZYZZYZIY\n", + "-0.007 * IIZZZZIZZIIYZXZZXZIY\n", + "-0.001 * IIZZZZIZZIIXZYZZXZIY\n", + "-0.001 * IIZZZZIZZIIYZXZZYZIX\n", + "-0.007 * IIZZZZIZZIIXZYZZYZIX\n", + "-0.007 * IIZZZZIZZIIXZXZZXZIX\n", + "+0.009 * IIZZZZIZZIIIYIIZIZIY\n", + "+0.009 * IIZZZZIZZIIIXIIZIZIX\n", + "-0.007 * IIZZZZIZZIIYZIYYIZIY\n", + "-0.007 * IIZZZZIZZIIYZIXXIZIY\n", + "-0.001 * IIZZZZIZZIIXZIYXIZIY\n", + "-0.001 * IIZZZZIZZIIYZIXYIZIX\n", + "-0.007 * IIZZZZIZZIIXZIYYIZIX\n", + "-0.007 * IIZZZZIZZIIXZIXXIZIX\n", + "-0.000 * IIZZZZIZZIIYZYZYIZIY\n", + "-0.000 * IIZZZZIZZIIYZXZXIZIY\n", + "-0.000 * IIZZZZIZZIIXZYZXIZIY\n", + "-0.000 * IIZZZZIZZIIYZXZYIZIX\n", + "-0.000 * IIZZZZIZZIIXZYZYIZIX\n", + "-0.000 * IIZZZZIZZIIXZXZXIZIX\n", + "+0.000 * IIZZZZIZZIIIYIZIIZIY\n", + "+0.000 * IIZZZZIZZIIIXIZIIZIX\n", + "+0.000 * IIZZZZIZZIIIYZIIIZIY\n", + "+0.000 * IIZZZZIZZIIIXZIIIZIX\n", + "-0.011 * IIZZZZIZZIIZYIIIIZIY\n", + "-0.011 * IIZZZZIZZIIZXIIIIZIX\n", + "+0.113 * ZZZZZZZZZZZIIIIIIIIZ\n", + "-0.004 * ZZIIIIZIIZZIYIIIIZIY\n", + "-0.004 * ZZIIIIZIIZZIXIIIIZIX\n", + "-0.048 * ZZIIIIZIIZXIIZZZZYIY\n", + "+0.048 * IIZZZZIZZIXIIZZZZYIY\n", + "-0.048 * ZZIIIIZIIZXIIZZZZXIX\n", + "+0.048 * IIZZZZIZZIXIIZZZZXIX\n", + "-0.000 * ZZIIIIZIIZXYZIIIIZIY\n", + "+0.000 * IIZZZZIZZIXYZIIIIZIY\n", + "-0.000 * ZZIIIIZIIZXXZIIIIZIX\n", + "+0.000 * IIZZZZIZZIXXZIIIIZIX\n", + "-0.006 * ZZZZZZZZZXIIIIIIIIIZ\n", + "+0.006 * IIIIIIIIIXZIIIIIIIIZ\n", + "-0.013 * ZZIIIIZIIXIIYIIIIZIY\n", + "+0.013 * IIZZZZIZZXZIYIIIIZIY\n", + "-0.013 * ZZIIIIZIIXIIXIIIIZIX\n", + "+0.013 * IIZZZZIZZXZIXIIIIZIX\n", + "-0.001 * ZZIIIIZIYIIIIZZZZIZY\n", + "+0.001 * IIZZZZIZYZZIIZZZZIZY\n", + "-0.001 * ZZZZZZZZXIIIIIIIIIIX\n", + "+0.001 * IIIIIIIIXZZIIIIIIIIX\n", + "-0.013 * ZZIIIIZIYIIIIZXIIZIY\n", + "+0.013 * IIZZZZIZYZZIIZXIIZIY\n", + "+0.013 * ZZIIIIZIYIIIIZYIIZIX\n", + "-0.013 * IIZZZZIZYZZIIZYIIZIX\n", + "-0.001 * ZZIIIIZIYIIIIXIIIZIY\n", + "+0.001 * IIZZZZIZYZZIIXIIIZIY\n", + "+0.001 * ZZIIIIZIYIIIIYIIIZIX\n", + "-0.001 * IIZZZZIZYZZIIYIIIZIX\n", + "-0.001 * ZZIIIIZYZIIIIZZZZIXY\n", + "+0.001 * IIZZZZIYIZZIIZZZZIXY\n", + "+0.001 * ZZIIIIZYZIIIIZZZZIYX\n", + "-0.001 * IIZZZZIYIZZIIZZZZIYX\n", + "+0.001 * ZZIIIIZYZIIIIZXIIZIY\n", + "-0.001 * IIZZZZIYIZZIIZXIIZIY\n", + "-0.001 * ZZIIIIZYZIIIIZYIIZIX\n", + "+0.001 * IIZZZZIYIZZIIZYIIZIX\n", + "-0.013 * ZZIIIIZYZIIIIXIIIZIY\n", + "+0.013 * IIZZZZIYIZZIIXIIIZIY\n", + "+0.013 * ZZIIIIZYZIIIIYIIIZIX\n", + "-0.013 * IIZZZZIYIZZIIYIIIZIX\n", + "+0.011 * ZZIIIIXZZIIIIZZZZYIY\n", + "-0.011 * IIZZZZXIIZZIIZZZZYIY\n", + "+0.011 * ZZIIIIXZZIIIIZZZZXIX\n", + "-0.011 * IIZZZZXIIZZIIZZZZXIX\n", + "+0.007 * ZZIIIIXZZIIYZIIIIZIY\n", + "-0.007 * IIZZZZXIIZZYZIIIIZIY\n", + "+0.007 * ZZIIIIXZZIIXZIIIIZIX\n", + "-0.007 * IIZZZZXIIZZXZIIIIZIX\n", + "+0.008 * ZZIIIYIZZIIIIZZZXZIY\n", + "-0.008 * IIZZZYZIIZZIIZZZXZIY\n", + "-0.008 * ZZIIIYIZZIIIIZZZYZIX\n", + "+0.008 * IIZZZYZIIZZIIZZZYZIX\n", + "+0.008 * ZZIIYZIZZIIIIZZXIZIY\n", + "-0.008 * IIZZYIZIIZZIIZZXIZIY\n", + "-0.008 * ZZIIYZIZZIIIIZZYIZIX\n", + "+0.008 * IIZZYIZIIZZIIZZYIZIX\n", + "-0.007 * ZZIYZZIZZIIIIZZZZIZY\n", + "+0.007 * IIZYIIZIIZZIIZZZZIZY\n", + "-0.007 * ZZZXIIIIIIIIIIIIIIIX\n", + "+0.007 * IIIXZZZZZZZIIIIIIIIX\n", + "+0.000 * ZZIYZZIZZIIIIZZZZIXY\n", + "-0.000 * IIZYIIZIIZZIIZZZZIXY\n", + "-0.000 * ZZIYZZIZZIIIIZZZZIYX\n", + "+0.000 * IIZYIIZIIZZIIZZZZIYX\n", + "-0.000 * ZZIYZZIZZIIIIZXIIZIY\n", + "+0.000 * IIZYIIZIIZZIIZXIIZIY\n", + "+0.000 * ZZIYZZIZZIIIIZYIIZIX\n", + "-0.000 * IIZYIIZIIZZIIZYIIZIX\n", + "-0.000 * ZZYZZZIZZIIIIZZZZIZY\n", + "+0.000 * IIYIIIZIIZZIIZZZZIZY\n", + "-0.000 * ZZXIIIIIIIIIIIIIIIIX\n", + "+0.000 * IIXZZZZZZZZIIIIIIIIX\n", + "-0.007 * ZZYZZZIZZIIIIZZZZIXY\n", + "+0.007 * IIYIIIZIIZZIIZZZZIXY\n", + "+0.007 * ZZYZZZIZZIIIIZZZZIYX\n", + "-0.007 * IIYIIIZIIZZIIZZZZIYX\n", + "-0.000 * ZZYZZZIZZIIIIXIIIZIY\n", + "+0.000 * IIYIIIZIIZZIIXIIIZIY\n", + "+0.000 * ZZYZZZIZZIIIIYIIIZIX\n", + "-0.000 * IIYIIIZIIZZIIYIIIZIX\n", + "-0.005 * ZXIIIIIIIIIIIIIIIIIZ\n", + "+0.005 * IXZZZZZZZZZIIIIIIIIZ\n", + "-0.007 * ZXZZZZIZZIIIYIIIIZIY\n", + "+0.007 * IXIIIIZIIZZIYIIIIZIY\n", + "-0.007 * ZXZZZZIZZIIIXIIIIZIX\n", + "+0.007 * IXIIIIZIIZZIXIIIIZIX\n", + "-0.009 * XIZZZZIZZIIIIZZZZYIY\n", + "+0.009 * XZIIIIZIIZZIIZZZZYIY\n", + "-0.009 * XIZZZZIZZIIIIZZZZXIX\n", + "+0.009 * XZIIIIZIIZZIIZZZZXIX\n", + "-0.004 * XIZZZZIZZIIYZIIIIZIY\n", + "+0.004 * XZIIIIZIIZZYZIIIIZIY\n", + "-0.004 * XIZZZZIZZIIXZIIIIZIX\n", + "+0.004 * XZIIIIZIIZZXZIIIIZIX\n", + "+0.115 * IIIIIIIIIIZIIIIIIIIZ\n", + "-0.000 * IIZZZZIZZIZIYIIIIZIY\n", + "-0.000 * IIZZZZIZZIZIXIIIIZIX\n", + "-0.022 * IIZZZZIZZYYIIZZZZYIY\n", + "-0.022 * IIZZZZIZZXXIIZZZZYIY\n", + "-0.022 * IIZZZZIZZYYIIZZZZXIX\n", + "-0.022 * IIZZZZIZZXXIIZZZZXIX\n", + "-0.008 * IIZZZZIZZYYYZIIIIZIY\n", + "-0.008 * IIZZZZIZZXXYZIIIIZIY\n", + "-0.008 * IIZZZZIZZYYXZIIIIZIX\n", + "-0.008 * IIZZZZIZZXXXZIIIIZIX\n", + "+0.000 * IIZZZZIZXZYIIZZZXZIY\n", + "-0.000 * IIZZZZIZYZXIIZZZXZIY\n", + "-0.000 * IIZZZZIZXZYIIZZZYZIX\n", + "+0.000 * IIZZZZIZYZXIIZZZYZIX\n", + "+0.006 * IIZZZZIZXZYIIZZXIZIY\n", + "-0.006 * IIZZZZIZYZXIIZZXIZIY\n", + "-0.006 * IIZZZZIZXZYIIZZYIZIX\n", + "+0.006 * IIZZZZIZYZXIIZZYIZIX\n", + "+0.006 * IIZZZZIXIZYIIZZZXZIY\n", + "-0.006 * IIZZZZIYIZXIIZZZXZIY\n", + "-0.006 * IIZZZZIXIZYIIZZZYZIX\n", + "+0.006 * IIZZZZIYIZXIIZZZYZIX\n", + "-0.000 * IIZZZZIXIZYIIZZXIZIY\n", + "+0.000 * IIZZZZIYIZXIIZZXIZIY\n", + "+0.000 * IIZZZZIXIZYIIZZYIZIX\n", + "-0.000 * IIZZZZIYIZXIIZZYIZIX\n", + "+0.005 * IIIIIIYZZZYIIIIIIIIZ\n", + "+0.005 * IIIIIIXZZZXIIIIIIIIZ\n", + "+0.011 * IIZZZZYIIZYIYIIIIZIY\n", + "+0.011 * IIZZZZXIIZXIYIIIIZIY\n", + "+0.011 * IIZZZZYIIZYIXIIIIZIX\n", + "+0.011 * IIZZZZXIIZXIXIIIIZIX\n", + "+0.000 * IIZZZXZIIZYIIZZZZIZY\n", + "-0.000 * IIZZZYZIIZXIIZZZZIZY\n", + "-0.000 * IIIIIYZZZZYIIIIIIIIX\n", + "-0.000 * IIIIIXZZZZXIIIIIIIIX\n", + "+0.004 * IIZZZXZIIZYIIZZZZIXY\n", + "-0.004 * IIZZZYZIIZXIIZZZZIXY\n", + "-0.004 * IIZZZXZIIZYIIZZZZIYX\n", + "+0.004 * IIZZZYZIIZXIIZZZZIYX\n", + "+0.000 * IIZZZXZIIZYIIZXIIZIY\n", + "-0.000 * IIZZZYZIIZXIIZXIIZIY\n", + "-0.000 * IIZZZXZIIZYIIZYIIZIX\n", + "+0.000 * IIZZZYZIIZXIIZYIIZIX\n", + "-0.011 * IIZZZXZIIZYIIXIIIZIY\n", + "+0.011 * IIZZZYZIIZXIIXIIIZIY\n", + "+0.011 * IIZZZXZIIZYIIYIIIZIX\n", + "-0.011 * IIZZZYZIIZXIIYIIIZIX\n", + "+0.004 * IIZZXIZIIZYIIZZZZIZY\n", + "-0.004 * IIZZYIZIIZXIIZZZZIZY\n", + "-0.004 * IIIIYZZZZZYIIIIIIIIX\n", + "-0.004 * IIIIXZZZZZXIIIIIIIIX\n", + "-0.000 * IIZZXIZIIZYIIZZZZIXY\n", + "+0.000 * IIZZYIZIIZXIIZZZZIXY\n", + "+0.000 * IIZZXIZIIZYIIZZZZIYX\n", + "-0.000 * IIZZYIZIIZXIIZZZZIYX\n", + "-0.011 * IIZZXIZIIZYIIZXIIZIY\n", + "+0.011 * IIZZYIZIIZXIIZXIIZIY\n", + "+0.011 * IIZZXIZIIZYIIZYIIZIX\n", + "-0.011 * IIZZYIZIIZXIIZYIIZIX\n", + "-0.000 * IIZZXIZIIZYIIXIIIZIY\n", + "+0.000 * IIZZYIZIIZXIIXIIIZIY\n", + "+0.000 * IIZZXIZIIZYIIYIIIZIX\n", + "-0.000 * IIZZYIZIIZXIIYIIIZIX\n", + "+0.000 * IIZXIIZIIZYIIZZZXZIY\n", + "-0.000 * IIZYIIZIIZXIIZZZXZIY\n", + "-0.000 * IIZXIIZIIZYIIZZZYZIX\n", + "+0.000 * IIZYIIZIIZXIIZZZYZIX\n", + "-0.006 * IIZXIIZIIZYIIZZXIZIY\n", + "+0.006 * IIZYIIZIIZXIIZZXIZIY\n", + "+0.006 * IIZXIIZIIZYIIZZYIZIX\n", + "-0.006 * IIZYIIZIIZXIIZZYIZIX\n", + "-0.006 * IIXIIIZIIZYIIZZZXZIY\n", + "+0.006 * IIYIIIZIIZXIIZZZXZIY\n", + "+0.006 * IIXIIIZIIZYIIZZZYZIX\n", + "-0.006 * IIYIIIZIIZXIIZZZYZIX\n", + "-0.000 * IIXIIIZIIZYIIZZXIZIY\n", + "+0.000 * IIYIIIZIIZXIIZZXIZIY\n", + "+0.000 * IIXIIIZIIZYIIZZYIZIX\n", + "-0.000 * IIYIIIZIIZXIIZZYIZIX\n", + "-0.012 * IYIIIIZIIZYIIZZZZYIY\n", + "-0.012 * IXIIIIZIIZXIIZZZZYIY\n", + "-0.012 * IYIIIIZIIZYIIZZZZXIX\n", + "-0.012 * IXIIIIZIIZXIIZZZZXIX\n", + "-0.000 * IYIIIIZIIZYYZIIIIZIY\n", + "-0.000 * IXIIIIZIIZXYZIIIIZIY\n", + "-0.000 * IYIIIIZIIZYXZIIIIZIX\n", + "-0.000 * IXIIIIZIIZXXZIIIIZIX\n", + "-0.002 * YZZZZZZZZZYIIIIIIIIZ\n", + "-0.002 * XZZZZZZZZZXIIIIIIIIZ\n", + "-0.007 * YZIIIIZIIZYIYIIIIZIY\n", + "-0.007 * XZIIIIZIIZXIYIIIIZIY\n", + "-0.007 * YZIIIIZIIZYIXIIIIZIX\n", + "-0.007 * XZIIIIZIIZXIXIIIIZIX\n", + "+0.125 * IIIIIIIIIZIIIIIIIIIZ\n", + "+0.010 * IIZZZZIZZZIIYIIIIZIY\n", + "+0.010 * IIZZZZIZZZIIXIIIIZIX\n", + "-0.008 * IIZZZZIZXYIIIZZZZIZY\n", + "+0.008 * IIZZZZIZYXIIIZZZZIZY\n", + "+0.008 * IIIIIIIIYYIIIIIIIIIX\n", + "+0.008 * IIIIIIIIXXIIIIIIIIIX\n", + "+0.000 * IIZZZZIZXYIIIZXIIZIY\n", + "-0.000 * IIZZZZIZYXIIIZXIIZIY\n", + "-0.000 * IIZZZZIZXYIIIZYIIZIX\n", + "+0.000 * IIZZZZIZYXIIIZYIIZIX\n", + "+0.000 * IIZZZZIZXYIIIXIIIZIY\n", + "-0.000 * IIZZZZIZYXIIIXIIIZIY\n", + "-0.000 * IIZZZZIZXYIIIYIIIZIX\n", + "+0.000 * IIZZZZIZYXIIIYIIIZIX\n", + "-0.008 * IIZZZZIXIYIIIZZZZIXY\n", + "+0.008 * IIZZZZIYIXIIIZZZZIXY\n", + "+0.008 * IIZZZZIXIYIIIZZZZIYX\n", + "-0.008 * IIZZZZIYIXIIIZZZZIYX\n", + "-0.000 * IIZZZZIXIYIIIZXIIZIY\n", + "+0.000 * IIZZZZIYIXIIIZXIIZIY\n", + "+0.000 * IIZZZZIXIYIIIZYIIZIX\n", + "-0.000 * IIZZZZIYIXIIIZYIIZIX\n", + "+0.000 * IIZZZZIXIYIIIXIIIZIY\n", + "-0.000 * IIZZZZIYIXIIIXIIIZIY\n", + "-0.000 * IIZZZZIXIYIIIYIIIZIX\n", + "+0.000 * IIZZZZIYIXIIIYIIIZIX\n", + "+0.068 * IIZZZZYIIYIIIZZZZYIY\n", + "+0.068 * IIZZZZXIIXIIIZZZZYIY\n", + "+0.068 * IIZZZZYIIYIIIZZZZXIX\n", + "+0.068 * IIZZZZXIIXIIIZZZZXIX\n", + "+0.011 * IIZZZZYIIYIYZIIIIZIY\n", + "+0.011 * IIZZZZXIIXIYZIIIIZIY\n", + "+0.011 * IIZZZZYIIYIXZIIIIZIX\n", + "+0.011 * IIZZZZXIIXIXZIIIIZIX\n", + "-0.009 * IIZZZXZIIYIIIZZZXZIY\n", + "+0.009 * IIZZZYZIIXIIIZZZXZIY\n", + "+0.009 * IIZZZXZIIYIIIZZZYZIX\n", + "-0.009 * IIZZZYZIIXIIIZZZYZIX\n", + "-0.009 * IIZZXIZIIYIIIZZXIZIY\n", + "+0.009 * IIZZYIZIIXIIIZZXIZIY\n", + "+0.009 * IIZZXIZIIYIIIZZYIZIX\n", + "-0.009 * IIZZYIZIIXIIIZZYIZIX\n", + "+0.000 * IIZXIIZIIYIIIZZZZIZY\n", + "-0.000 * IIZYIIZIIXIIIZZZZIZY\n", + "-0.000 * IIIYZZZZZYIIIIIIIIIX\n", + "-0.000 * IIIXZZZZZXIIIIIIIIIX\n", + "-0.000 * IIZXIIZIIYIIIZZZZIXY\n", + "+0.000 * IIZYIIZIIXIIIZZZZIXY\n", + "+0.000 * IIZXIIZIIYIIIZZZZIYX\n", + "-0.000 * IIZYIIZIIXIIIZZZZIYX\n", + "-0.012 * IIZXIIZIIYIIIZXIIZIY\n", + "+0.012 * IIZYIIZIIXIIIZXIIZIY\n", + "+0.012 * IIZXIIZIIYIIIZYIIZIX\n", + "-0.012 * IIZYIIZIIXIIIZYIIZIX\n", + "+0.000 * IIXIIIZIIYIIIZZZZIZY\n", + "-0.000 * IIYIIIZIIXIIIZZZZIZY\n", + "-0.000 * IIYZZZZZZYIIIIIIIIIX\n", + "-0.000 * IIXZZZZZZXIIIIIIIIIX\n", + "+0.000 * IIXIIIZIIYIIIZZZZIXY\n", + "-0.000 * IIYIIIZIIXIIIZZZZIXY\n", + "-0.000 * IIXIIIZIIYIIIZZZZIYX\n", + "+0.000 * IIYIIIZIIXIIIZZZZIYX\n", + "-0.012 * IIXIIIZIIYIIIXIIIZIY\n", + "+0.012 * IIYIIIZIIXIIIXIIIZIY\n", + "+0.012 * IIXIIIZIIYIIIYIIIZIX\n", + "-0.012 * IIYIIIZIIXIIIYIIIZIX\n", + "+0.010 * IYZZZZZZZYIIIIIIIIIZ\n", + "+0.010 * IXZZZZZZZXIIIIIIIIIZ\n", + "+0.015 * IYIIIIZIIYIIYIIIIZIY\n", + "+0.015 * IXIIIIZIIXIIYIIIIZIY\n", + "+0.015 * IYIIIIZIIYIIXIIIIZIX\n", + "+0.015 * IXIIIIZIIXIIXIIIIZIX\n", + "+0.011 * YZIIIIZIIYIIIZZZZYIY\n", + "+0.011 * XZIIIIZIIXIIIZZZZYIY\n", + "+0.011 * YZIIIIZIIYIIIZZZZXIX\n", + "+0.011 * XZIIIIZIIXIIIZZZZXIX\n", + "+0.008 * YZIIIIZIIYIYZIIIIZIY\n", + "+0.008 * XZIIIIZIIXIYZIIIIZIY\n", + "+0.008 * YZIIIIZIIYIXZIIIIZIX\n", + "+0.008 * XZIIIIZIIXIXZIIIIZIX\n", + "+0.110 * IIIIIIIIZIIIIIIIIIIZ\n", + "-0.006 * IIZZZZIZIIIIYIIIIZIY\n", + "-0.006 * IIZZZZIZIIIIXIIIIZIX\n", + "-0.000 * IIZZZZYIXIIIIZZZXZIY\n", + "+0.000 * IIZZZZXIYIIIIZZZXZIY\n", + "+0.000 * IIZZZZYIXIIIIZZZYZIX\n", + "-0.000 * IIZZZZXIYIIIIZZZYZIX\n", + "-0.006 * IIZZZZYIXIIIIZZXIZIY\n", + "+0.006 * IIZZZZXIYIIIIZZXIZIY\n", + "+0.006 * IIZZZZYIXIIIIZZYIZIX\n", + "-0.006 * IIZZZZXIYIIIIZZYIZIX\n", + "-0.002 * IIZZZXZIXIIIIZZZZYIY\n", + "-0.002 * IIZZZYZIYIIIIZZZZYIY\n", + "-0.002 * IIZZZXZIXIIIIZZZZXIX\n", + "-0.002 * IIZZZYZIYIIIIZZZZXIX\n", + "-0.000 * IIZZZXZIXIIYZIIIIZIY\n", + "-0.000 * IIZZZYZIYIIYZIIIIZIY\n", + "-0.000 * IIZZZXZIXIIXZIIIIZIX\n", + "-0.000 * IIZZZYZIYIIXZIIIIZIX\n", + "-0.048 * IIZZXIZIXIIIIZZZZYIY\n", + "-0.048 * IIZZYIZIYIIIIZZZZYIY\n", + "-0.048 * IIZZXIZIXIIIIZZZZXIX\n", + "-0.048 * IIZZYIZIYIIIIZZZZXIX\n", + "-0.004 * IIZZXIZIXIIYZIIIIZIY\n", + "-0.004 * IIZZYIZIYIIYZIIIIZIY\n", + "-0.004 * IIZZXIZIXIIXZIIIIZIX\n", + "-0.004 * IIZZYIZIYIIXZIIIIZIX\n", + "+0.009 * IIIYZZZZYIIIIIIIIIIZ\n", + "+0.009 * IIIXZZZZXIIIIIIIIIIZ\n", + "-0.016 * IIZXIIZIXIIIYIIIIZIY\n", + "-0.016 * IIZYIIZIYIIIYIIIIZIY\n", + "-0.016 * IIZXIIZIXIIIXIIIIZIX\n", + "-0.016 * IIZYIIZIYIIIXIIIIZIX\n", + "+0.000 * IIYZZZZZYIIIIIIIIIIZ\n", + "+0.000 * IIXZZZZZXIIIIIIIIIIZ\n", + "-0.001 * IIXIIIZIXIIIYIIIIZIY\n", + "-0.001 * IIYIIIZIYIIIYIIIIZIY\n", + "-0.001 * IIXIIIZIXIIIXIIIIZIX\n", + "-0.001 * IIYIIIZIYIIIXIIIIZIX\n", + "-0.004 * IYIIIIZIXIIIIZZZZIZY\n", + "+0.004 * IXIIIIZIYIIIIZZZZIZY\n", + "+0.004 * IYZZZZZZYIIIIIIIIIIX\n", + "+0.004 * IXZZZZZZXIIIIIIIIIIX\n", + "-0.005 * IYIIIIZIXIIIIZXIIZIY\n", + "+0.005 * IXIIIIZIYIIIIZXIIZIY\n", + "+0.005 * IYIIIIZIXIIIIZYIIZIX\n", + "-0.005 * IXIIIIZIYIIIIZYIIZIX\n", + "-0.000 * IYIIIIZIXIIIIXIIIZIY\n", + "+0.000 * IXIIIIZIYIIIIXIIIZIY\n", + "+0.000 * IYIIIIZIXIIIIYIIIZIX\n", + "-0.000 * IXIIIIZIYIIIIYIIIZIX\n", + "+0.000 * YZIIIIZIXIIIIZZZXZIY\n", + "-0.000 * XZIIIIZIYIIIIZZZXZIY\n", + "-0.000 * YZIIIIZIXIIIIZZZYZIX\n", + "+0.000 * XZIIIIZIYIIIIZZZYZIX\n", + "+0.002 * YZIIIIZIXIIIIZZXIZIY\n", + "-0.002 * XZIIIIZIYIIIIZZXIZIY\n", + "-0.002 * YZIIIIZIXIIIIZZYIZIX\n", + "+0.002 * XZIIIIZIYIIIIZZYIZIX\n", + "+0.110 * IIIIIIIZIIIIIIIIIIIZ\n", + "-0.006 * IIZZZZIIZIIIYIIIIZIY\n", + "-0.006 * IIZZZZIIZIIIXIIIIZIX\n", + "-0.006 * IIZZZZYXZIIIIZZZXZIY\n", + "+0.006 * IIZZZZXYZIIIIZZZXZIY\n", + "+0.006 * IIZZZZYXZIIIIZZZYZIX\n", + "-0.006 * IIZZZZXYZIIIIZZZYZIX\n", + "+0.000 * IIZZZZYXZIIIIZZXIZIY\n", + "-0.000 * IIZZZZXYZIIIIZZXIZIY\n", + "-0.000 * IIZZZZYXZIIIIZZYIZIX\n", + "+0.000 * IIZZZZXYZIIIIZZYIZIX\n", + "-0.048 * IIZZZXZXZIIIIZZZZYIY\n", + "-0.048 * IIZZZYZYZIIIIZZZZYIY\n", + "-0.048 * IIZZZXZXZIIIIZZZZXIX\n", + "-0.048 * IIZZZYZYZIIIIZZZZXIX\n", + "-0.004 * IIZZZXZXZIIYZIIIIZIY\n", + "-0.004 * IIZZZYZYZIIYZIIIIZIY\n", + "-0.004 * IIZZZXZXZIIXZIIIIZIX\n", + "-0.004 * IIZZZYZYZIIXZIIIIZIX\n", + "+0.002 * IIZZXIZXZIIIIZZZZYIY\n", + "+0.002 * IIZZYIZYZIIIIZZZZYIY\n", + "+0.002 * IIZZXIZXZIIIIZZZZXIX\n", + "+0.002 * IIZZYIZYZIIIIZZZZXIX\n", + "+0.000 * IIZZXIZXZIIYZIIIIZIY\n", + "+0.000 * IIZZYIZYZIIYZIIIIZIY\n", + "+0.000 * IIZZXIZXZIIXZIIIIZIX\n", + "+0.000 * IIZZYIZYZIIXZIIIIZIX\n", + "-0.000 * IIIYZZZYIIIIIIIIIIIZ\n", + "-0.000 * IIIXZZZXIIIIIIIIIIIZ\n", + "+0.001 * IIZXIIZXZIIIYIIIIZIY\n", + "+0.001 * IIZYIIZYZIIIYIIIIZIY\n", + "+0.001 * IIZXIIZXZIIIXIIIIZIX\n", + "+0.001 * IIZYIIZYZIIIXIIIIZIX\n", + "+0.009 * IIYZZZZYIIIIIIIIIIIZ\n", + "+0.009 * IIXZZZZXIIIIIIIIIIIZ\n", + "-0.016 * IIXIIIZXZIIIYIIIIZIY\n", + "-0.016 * IIYIIIZYZIIIYIIIIZIY\n", + "-0.016 * IIXIIIZXZIIIXIIIIZIX\n", + "-0.016 * IIYIIIZYZIIIXIIIIZIX\n", + "-0.004 * IYIIIIZXZIIIIZZZZIXY\n", + "+0.004 * IXIIIIZYZIIIIZZZZIXY\n", + "+0.004 * IYIIIIZXZIIIIZZZZIYX\n", + "-0.004 * IXIIIIZYZIIIIZZZZIYX\n", + "+0.000 * IYIIIIZXZIIIIZXIIZIY\n", + "-0.000 * IXIIIIZYZIIIIZXIIZIY\n", + "-0.000 * IYIIIIZXZIIIIZYIIZIX\n", + "+0.000 * IXIIIIZYZIIIIZYIIZIX\n", + "-0.005 * IYIIIIZXZIIIIXIIIZIY\n", + "+0.005 * IXIIIIZYZIIIIXIIIZIY\n", + "+0.005 * IYIIIIZXZIIIIYIIIZIX\n", + "-0.005 * IXIIIIZYZIIIIYIIIZIX\n", + "+0.002 * YZIIIIZXZIIIIZZZXZIY\n", + "-0.002 * XZIIIIZYZIIIIZZZXZIY\n", + "-0.002 * YZIIIIZXZIIIIZZZYZIX\n", + "+0.002 * XZIIIIZYZIIIIZZZYZIX\n", + "-0.000 * YZIIIIZXZIIIIZZXIZIY\n", + "+0.000 * XZIIIIZYZIIIIZZXIZIY\n", + "+0.000 * YZIIIIZXZIIIIZZYIZIX\n", + "-0.000 * XZIIIIZYZIIIIZZYIZIX\n", + "+0.128 * IIIIIIZIIIIIIIIIIIIZ\n", + "+0.013 * IIZZZZZZZIIIYIIIIZIY\n", + "+0.013 * IIZZZZZZZIIIXIIIIZIX\n", + "-0.000 * IIZZZXYZZIIIIZZZZIZY\n", + "+0.000 * IIZZZYXZZIIIIZZZZIZY\n", + "+0.000 * IIIIIYYIIIIIIIIIIIIX\n", + "+0.000 * IIIIIXXIIIIIIIIIIIIX\n", + "-0.006 * IIZZZXYZZIIIIZZZZIXY\n", + "+0.006 * IIZZZYXZZIIIIZZZZIXY\n", + "+0.006 * IIZZZXYZZIIIIZZZZIYX\n", + "-0.006 * IIZZZYXZZIIIIZZZZIYX\n", + "-0.000 * IIZZZXYZZIIIIZXIIZIY\n", + "+0.000 * IIZZZYXZZIIIIZXIIZIY\n", + "+0.000 * IIZZZXYZZIIIIZYIIZIX\n", + "-0.000 * IIZZZYXZZIIIIZYIIZIX\n", + "+0.006 * IIZZZXYZZIIIIXIIIZIY\n", + "-0.006 * IIZZZYXZZIIIIXIIIZIY\n", + "-0.006 * IIZZZXYZZIIIIYIIIZIX\n", + "+0.006 * IIZZZYXZZIIIIYIIIZIX\n", + "-0.006 * IIZZXIYZZIIIIZZZZIZY\n", + "+0.006 * IIZZYIXZZIIIIZZZZIZY\n", + "+0.006 * IIIIYZYIIIIIIIIIIIIX\n", + "+0.006 * IIIIXZXIIIIIIIIIIIIX\n", + "+0.000 * IIZZXIYZZIIIIZZZZIXY\n", + "-0.000 * IIZZYIXZZIIIIZZZZIXY\n", + "-0.000 * IIZZXIYZZIIIIZZZZIYX\n", + "+0.000 * IIZZYIXZZIIIIZZZZIYX\n", + "+0.006 * IIZZXIYZZIIIIZXIIZIY\n", + "-0.006 * IIZZYIXZZIIIIZXIIZIY\n", + "-0.006 * IIZZXIYZZIIIIZYIIZIX\n", + "+0.006 * IIZZYIXZZIIIIZYIIZIX\n", + "+0.000 * IIZZXIYZZIIIIXIIIZIY\n", + "-0.000 * IIZZYIXZZIIIIXIIIZIY\n", + "-0.000 * IIZZXIYZZIIIIYIIIZIX\n", + "+0.000 * IIZZYIXZZIIIIYIIIZIX\n", + "-0.000 * IIZXIIYZZIIIIZZZXZIY\n", + "+0.000 * IIZYIIXZZIIIIZZZXZIY\n", + "+0.000 * IIZXIIYZZIIIIZZZYZIX\n", + "-0.000 * IIZYIIXZZIIIIZZZYZIX\n", + "+0.006 * IIZXIIYZZIIIIZZXIZIY\n", + "-0.006 * IIZYIIXZZIIIIZZXIZIY\n", + "-0.006 * IIZXIIYZZIIIIZZYIZIX\n", + "+0.006 * IIZYIIXZZIIIIZZYIZIX\n", + "+0.006 * IIXIIIYZZIIIIZZZXZIY\n", + "-0.006 * IIYIIIXZZIIIIZZZXZIY\n", + "-0.006 * IIXIIIYZZIIIIZZZYZIX\n", + "+0.006 * IIYIIIXZZIIIIZZZYZIX\n", + "+0.000 * IIXIIIYZZIIIIZZXIZIY\n", + "-0.000 * IIYIIIXZZIIIIZZXIZIY\n", + "-0.000 * IIXIIIYZZIIIIZZYIZIX\n", + "+0.000 * IIYIIIXZZIIIIZZYIZIX\n", + "-0.031 * IYIIIIYZZIIIIZZZZYIY\n", + "-0.031 * IXIIIIXZZIIIIZZZZYIY\n", + "-0.031 * IYIIIIYZZIIIIZZZZXIX\n", + "-0.031 * IXIIIIXZZIIIIZZZZXIX\n", + "-0.008 * IYIIIIYZZIIYZIIIIZIY\n", + "-0.008 * IXIIIIXZZIIYZIIIIZIY\n", + "-0.008 * IYIIIIYZZIIXZIIIIZIX\n", + "-0.008 * IXIIIIXZZIIXZIIIIZIX\n", + "-0.006 * YZZZZZYIIIIIIIIIIIIZ\n", + "-0.006 * XZZZZZXIIIIIIIIIIIIZ\n", + "-0.014 * YZIIIIYZZIIIYIIIIZIY\n", + "-0.014 * XZIIIIXZZIIIYIIIIZIY\n", + "-0.014 * YZIIIIYZZIIIXIIIIZIX\n", + "-0.014 * XZIIIIXZZIIIXIIIIZIX\n", + "+0.118 * IIIIIZIIIIIIIIIIIIIZ\n", + "+0.008 * IIZZZIIZZIIIYIIIIZIY\n", + "+0.008 * IIZZZIIZZIIIXIIIIZIX\n", + "-0.001 * IIZXIXIZZIIIIZZZZYIY\n", + "-0.001 * IIZYIYIZZIIIIZZZZYIY\n", + "-0.001 * IIZXIXIZZIIIIZZZZXIX\n", + "-0.001 * IIZYIYIZZIIIIZZZZXIX\n", + "-0.000 * IIZXIXIZZIIYZIIIIZIY\n", + "-0.000 * IIZYIYIZZIIYZIIIIZIY\n", + "-0.000 * IIZXIXIZZIIXZIIIIZIX\n", + "-0.000 * IIZYIYIZZIIXZIIIIZIX\n", + "+0.042 * IIXIIXIZZIIIIZZZZYIY\n", + "+0.042 * IIYIIYIZZIIIIZZZZYIY\n", + "+0.042 * IIXIIXIZZIIIIZZZZXIX\n", + "+0.042 * IIYIIYIZZIIIIZZZZXIX\n", + "+0.006 * IIXIIXIZZIIYZIIIIZIY\n", + "+0.006 * IIYIIYIZZIIYZIIIIZIY\n", + "+0.006 * IIXIIXIZZIIXZIIIIZIX\n", + "+0.006 * IIYIIYIZZIIXZIIIIZIX\n", + "-0.001 * IYIIIXIZZIIIIZZZXZIY\n", + "+0.001 * IXIIIYIZZIIIIZZZXZIY\n", + "+0.001 * IYIIIXIZZIIIIZZZYZIX\n", + "-0.001 * IXIIIYIZZIIIIZZZYZIX\n", + "+0.000 * YZIIIXIZZIIIIZZZZIZY\n", + "-0.000 * XZIIIYIZZIIIIZZZZIZY\n", + "-0.000 * YZZZZYIIIIIIIIIIIIIX\n", + "-0.000 * XZZZZXIIIIIIIIIIIIIX\n", + "+0.001 * YZIIIXIZZIIIIZZZZIXY\n", + "-0.001 * XZIIIYIZZIIIIZZZZIXY\n", + "-0.001 * YZIIIXIZZIIIIZZZZIYX\n", + "+0.001 * XZIIIYIZZIIIIZZZZIYX\n", + "+0.000 * YZIIIXIZZIIIIZXIIZIY\n", + "-0.000 * XZIIIYIZZIIIIZXIIZIY\n", + "-0.000 * YZIIIXIZZIIIIZYIIZIX\n", + "+0.000 * XZIIIYIZZIIIIZYIIZIX\n", + "-0.002 * YZIIIXIZZIIIIXIIIZIY\n", + "+0.002 * XZIIIYIZZIIIIXIIIZIY\n", + "+0.002 * YZIIIXIZZIIIIYIIIZIX\n", + "-0.002 * XZIIIYIZZIIIIYIIIZIX\n", + "+0.118 * IIIIZIIIIIIIIIIIIIIZ\n", + "+0.008 * IIZZIZIZZIIIYIIIIZIY\n", + "+0.008 * IIZZIZIZZIIIXIIIIZIX\n", + "+0.042 * IIZXXZIZZIIIIZZZZYIY\n", + "+0.042 * IIZYYZIZZIIIIZZZZYIY\n", + "+0.042 * IIZXXZIZZIIIIZZZZXIX\n", + "+0.042 * IIZYYZIZZIIIIZZZZXIX\n", + "+0.006 * IIZXXZIZZIIYZIIIIZIY\n", + "+0.006 * IIZYYZIZZIIYZIIIIZIY\n", + "+0.006 * IIZXXZIZZIIXZIIIIZIX\n", + "+0.006 * IIZYYZIZZIIXZIIIIZIX\n", + "+0.001 * IIXIXZIZZIIIIZZZZYIY\n", + "+0.001 * IIYIYZIZZIIIIZZZZYIY\n", + "+0.001 * IIXIXZIZZIIIIZZZZXIX\n", + "+0.001 * IIYIYZIZZIIIIZZZZXIX\n", + "+0.000 * IIXIXZIZZIIYZIIIIZIY\n", + "+0.000 * IIYIYZIZZIIYZIIIIZIY\n", + "+0.000 * IIXIXZIZZIIXZIIIIZIX\n", + "+0.000 * IIYIYZIZZIIXZIIIIZIX\n", + "-0.001 * IYIIXZIZZIIIIZZXIZIY\n", + "+0.001 * IXIIYZIZZIIIIZZXIZIY\n", + "+0.001 * IYIIXZIZZIIIIZZYIZIX\n", + "-0.001 * IXIIYZIZZIIIIZZYIZIX\n", + "+0.001 * YZIIXZIZZIIIIZZZZIZY\n", + "-0.001 * XZIIYZIZZIIIIZZZZIZY\n", + "-0.001 * YZZZYIIIIIIIIIIIIIIX\n", + "-0.001 * XZZZXIIIIIIIIIIIIIIX\n", + "-0.000 * YZIIXZIZZIIIIZZZZIXY\n", + "+0.000 * XZIIYZIZZIIIIZZZZIXY\n", + "+0.000 * YZIIXZIZZIIIIZZZZIYX\n", + "-0.000 * XZIIYZIZZIIIIZZZZIYX\n", + "-0.002 * YZIIXZIZZIIIIZXIIZIY\n", + "+0.002 * XZIIYZIZZIIIIZXIIZIY\n", + "+0.002 * YZIIXZIZZIIIIZYIIZIX\n", + "-0.002 * XZIIYZIZZIIIIZYIIZIX\n", + "-0.000 * YZIIXZIZZIIIIXIIIZIY\n", + "+0.000 * XZIIYZIZZIIIIXIIIZIY\n", + "+0.000 * YZIIXZIZZIIIIYIIIZIX\n", + "-0.000 * XZIIYZIZZIIIIYIIIZIX\n", + "+0.113 * IIIZIIIIIIIIIIIIIIIZ\n", + "-0.009 * IIZIZZIZZIIIYIIIIZIY\n", + "-0.009 * IIZIZZIZZIIIXIIIIZIX\n", + "-0.006 * IYIXZZIZZIIIIZZZZIZY\n", + "+0.006 * IXIYZZIZZIIIIZZZZIZY\n", + "+0.006 * IYZYIIIIIIIIIIIIIIIX\n", + "+0.006 * IXZXIIIIIIIIIIIIIIIX\n", + "+0.000 * IYIXZZIZZIIIIZZZZIXY\n", + "-0.000 * IXIYZZIZZIIIIZZZZIXY\n", + "-0.000 * IYIXZZIZZIIIIZZZZIYX\n", + "+0.000 * IXIYZZIZZIIIIZZZZIYX\n", + "-0.009 * IYIXZZIZZIIIIZXIIZIY\n", + "+0.009 * IXIYZZIZZIIIIZXIIZIY\n", + "+0.009 * IYIXZZIZZIIIIZYIIZIX\n", + "-0.009 * IXIYZZIZZIIIIZYIIZIX\n", + "+0.000 * YZIXZZIZZIIIIZZZXZIY\n", + "-0.000 * XZIYZZIZZIIIIZZZXZIY\n", + "-0.000 * YZIXZZIZZIIIIZZZYZIX\n", + "+0.000 * XZIYZZIZZIIIIZZZYZIX\n", + "-0.001 * YZIXZZIZZIIIIZZXIZIY\n", + "+0.001 * XZIYZZIZZIIIIZZXIZIY\n", + "+0.001 * YZIXZZIZZIIIIZZYIZIX\n", + "-0.001 * XZIYZZIZZIIIIZZYIZIX\n", + "+0.113 * IIZIIIIIIIIIIIIIIIIZ\n", + "-0.009 * IIIZZZIZZIIIYIIIIZIY\n", + "-0.009 * IIIZZZIZZIIIXIIIIZIX\n", + "-0.000 * IYXZZZIZZIIIIZZZZIZY\n", + "+0.000 * IXYZZZIZZIIIIZZZZIZY\n", + "+0.000 * IYYIIIIIIIIIIIIIIIIX\n", + "+0.000 * IXXIIIIIIIIIIIIIIIIX\n", + "-0.006 * IYXZZZIZZIIIIZZZZIXY\n", + "+0.006 * IXYZZZIZZIIIIZZZZIXY\n", + "+0.006 * IYXZZZIZZIIIIZZZZIYX\n", + "-0.006 * IXYZZZIZZIIIIZZZZIYX\n", + "-0.009 * IYXZZZIZZIIIIXIIIZIY\n", + "+0.009 * IXYZZZIZZIIIIXIIIZIY\n", + "+0.009 * IYXZZZIZZIIIIYIIIZIX\n", + "-0.009 * IXYZZZIZZIIIIYIIIZIX\n", + "-0.001 * YZXZZZIZZIIIIZZZXZIY\n", + "+0.001 * XZYZZZIZZIIIIZZZXZIY\n", + "+0.001 * YZXZZZIZZIIIIZZZYZIX\n", + "-0.001 * XZYZZZIZZIIIIZZZYZIX\n", + "-0.000 * YZXZZZIZZIIIIZZXIZIY\n", + "+0.000 * XZYZZZIZZIIIIZZXIZIY\n", + "+0.000 * YZXZZZIZZIIIIZZYIZIX\n", + "-0.000 * XZYZZZIZZIIIIZZYIZIX\n", + "+0.115 * IZIIIIIIIIIIIIIIIIIZ\n", + "-0.005 * IZZZZZIZZIIIYIIIIZIY\n", + "-0.005 * IZZZZZIZZIIIXIIIIZIX\n", + "-0.040 * YYZZZZIZZIIIIZZZZYIY\n", + "-0.040 * XXZZZZIZZIIIIZZZZYIY\n", + "-0.040 * YYZZZZIZZIIIIZZZZXIX\n", + "-0.040 * XXZZZZIZZIIIIZZZZXIX\n", + "-0.002 * YYZZZZIZZIIYZIIIIZIY\n", + "-0.002 * XXZZZZIZZIIYZIIIIZIY\n", + "-0.002 * YYZZZZIZZIIXZIIIIZIX\n", + "-0.002 * XXZZZZIZZIIXZIIIIZIX\n", + "+0.120 * ZIIIIIIIIIIIIIIIIIIZ\n", + "-0.009 * ZIZZZZIZZIIIYIIIIZIY\n", + "-0.009 * ZIZZZZIZZIIIXIIIIZIX\n", + "+0.110 * IIZZZZIZZIIIIZZZZIII\n", + "-0.000 * IIZZZZIZZIIIIZXIIZXI\n", + "-0.000 * IIZZZZIZZIIIIZYIIZYI\n", + "+0.003 * IIZZZZIZZIIIIXIIIZXI\n", + "+0.003 * IIZZZZIZZIIIIYIIIZYI\n", + "+0.106 * IIZZZZIZZIIIIZZZZZZI\n", + "+0.006 * IIZZZZIZZIIYZIIIIYZI\n", + "+0.006 * IIZZZZIZZIIXZIIIIXZI\n", + "+0.108 * IIZZZZIZZIIIIZZZIIZI\n", + "-0.001 * IIZZZZIZZIIIIZZXXIZI\n", + "-0.001 * IIZZZZIZZIIIIZZYYIZI\n", + "+0.071 * IIZZZZIZZIIIIZZIZIZI\n", + "+0.097 * IIZZZZIZZIIIIZIZZIZI\n", + "-0.001 * IIZZZZIZZIIIIXXZZIZI\n", + "-0.001 * IIZZZZIZZIIIIYYZZIZI\n", + "+0.114 * IIZZZZIZZIIIIIZZZIZI\n", + "+0.115 * IIZZZZIZZIIIZZZZZIZI\n", + "+0.127 * IIZZZZIZZIIZIZZZZIZI\n", + "+0.003 * IIZZZZIZZIIIIZXIIZZI\n", + "-0.003 * IIIIIIIIIIIIIIXZZZII\n", + "+0.000 * IIZZZZIZZIIIIXIIIZZI\n", + "-0.000 * IIIIIIIIIIIIIXZZZZII\n", + "-0.001 * IIZZZZIZZIIIIZZZIIXI\n", + "+0.001 * IIIIIIIIIIIIIIIIZIXI\n", + "-0.038 * IIZZZZIZZIIIIZZXYIYI\n", + "-0.038 * IIZZZZIZZIIIIZZXXIXI\n", + "+0.000 * IIZZZZIZZIIIIZZYYIXI\n", + "+0.000 * IIIIIIIIIIIIIIIYYIXI\n", + "-0.038 * IIIIIIIIIIIIIIIXXIXI\n", + "-0.038 * IIIIIIIIIIIIIIIXYIYI\n", + "+0.001 * IIZZZZIZZIIIIZZIZIXI\n", + "-0.001 * IIIIIIIIIIIIIIIZIIXI\n", + "+0.001 * IIZZZZIZZIIIIZIZZIXI\n", + "-0.001 * IIIIIIIIIIIIIIZIIIXI\n", + "+0.019 * IIZZZZIZZIIIIXYZZIYI\n", + "+0.001 * IIZZZZIZZIIIIXXZZIXI\n", + "-0.018 * IIZZZZIZZIIIIYYZZIXI\n", + "-0.018 * IIIIIIIIIIIIIYYIIIXI\n", + "+0.001 * IIIIIIIIIIIIIXXIIIXI\n", + "+0.019 * IIIIIIIIIIIIIXYIIIYI\n", + "-0.001 * IIZZZZIZZIIIIIZZZIXI\n", + "+0.001 * IIIIIIIIIIIIIZIIIIXI\n", + "-0.008 * IIZZZZIZZIIIIZXIIIII\n", + "+0.008 * IIIIIIIIIIIIIIXZZIZI\n", + "-0.000 * IIZZZZIZZIIIIXIIIIII\n", + "+0.000 * IIIIIIIIIIIIIXZZZIZI\n", + "-0.001 * IIZZZZIZZIIIYIIIYXII\n", + "+0.000 * IIZZZZIZZIIIYIIIXYII\n", + "+0.001 * IIZZZZIZZIIIXIIIYYII\n", + "+0.001 * IIIIIIIIIIIIYZZZYXZI\n", + "-0.000 * IIIIIIIIIIIIXZZZXXZI\n", + "-0.001 * IIIIIIIIIIIIXZZZYYZI\n", + "-0.021 * IIZZZZIZZIIIYIIYZXII\n", + "+0.001 * IIZZZZIZZIIIYIIXZYII\n", + "+0.020 * IIZZZZIZZIIIXIIYZYII\n", + "+0.020 * IIIIIIIIIIIIYZZYIXZI\n", + "-0.001 * IIIIIIIIIIIIXZZXIXZI\n", + "-0.021 * IIIIIIIIIIIIXZZYIYZI\n", + "-0.015 * IIZZZZIZZIIYZIYZZXII\n", + "+0.001 * IIZZZZIZZIIYZIXZZYII\n", + "+0.014 * IIZZZZIZZIIXZIYZZYII\n", + "+0.014 * IIIIIIIIIIIYZZYIIXZI\n", + "-0.001 * IIIIIIIIIIIXZZXIIXZI\n", + "-0.015 * IIIIIIIIIIIXZZYIIYZI\n", + "-0.001 * IIZZZZIZZIIYZYZZZXII\n", + "+0.000 * IIZZZZIZZIIYZXZZZYII\n", + "+0.001 * IIZZZZIZZIIXZYZZZYII\n", + "+0.001 * IIIIIIIIIIIYZYIIIXZI\n", + "-0.000 * IIIIIIIIIIIXZXIIIXZI\n", + "-0.001 * IIIIIIIIIIIXZYIIIYZI\n", + "-0.013 * IIZZZZIZZIIIIZXIZZII\n", + "+0.013 * IIIIIIIIIIIIIIXZIZZI\n", + "+0.000 * IIZZZZIZZIIIIXIIZZII\n", + "-0.000 * IIIIIIIIIIIIIXZZIZZI\n", + "+0.001 * IIZZZZIZZIIIIZXYYZII\n", + "-0.001 * IIZZZZIZZIIIIZXXXZII\n", + "-0.002 * IIZZZZIZZIIIIZYYXZII\n", + "-0.002 * IIIIIIIIIIIIIIYYXZZI\n", + "-0.001 * IIIIIIIIIIIIIIXXXZZI\n", + "+0.001 * IIIIIIIIIIIIIIXYYZZI\n", + "-0.033 * IIZZZZIZZIIIIXIYYZII\n", + "-0.000 * IIZZZZIZZIIIIXIXXZII\n", + "+0.033 * IIZZZZIZZIIIIYIYXZII\n", + "+0.033 * IIIIIIIIIIIIIYZYXZZI\n", + "-0.000 * IIIIIIIIIIIIIXZXXZZI\n", + "-0.033 * IIIIIIIIIIIIIXZYYZZI\n", + "-0.000 * IIZZZZIZZIIYXZZZYZII\n", + "+0.001 * IIZZZZIZZIIYYZZZXZII\n", + "+0.001 * IIZZZZIZZIIXXZZZXZII\n", + "-0.001 * IIIIIIIIIIIYYIIIXZZI\n", + "-0.001 * IIIIIIIIIIIXXIIIXZZI\n", + "-0.000 * IIIIIIIIIIIXYIIIYZZI\n", + "+0.021 * IIZZZZIZZIIIIZXZIZII\n", + "-0.021 * IIIIIIIIIIIIIIXIZZZI\n", + "-0.000 * IIZZZZIZZIIIIXIZIZII\n", + "+0.000 * IIIIIIIIIIIIIXZIZZZI\n", + "-0.000 * IIZZZZIZZIIYXZZYIZII\n", + "+0.033 * IIZZZZIZZIIYYZZXIZII\n", + "+0.033 * IIZZZZIZZIIXXZZXIZII\n", + "-0.033 * IIIIIIIIIIIYYIIXZZZI\n", + "-0.033 * IIIIIIIIIIIXXIIXZZZI\n", + "-0.000 * IIIIIIIIIIIXYIIYZZZI\n", + "+0.000 * IIZZZZIZZIIIIXZIIZII\n", + "-0.000 * IIIIIIIIIIIIIXIZZZZI\n", + "+0.007 * IIZZZZIZZIIIIIXIIZII\n", + "-0.007 * IIIIIIIIIIIIIZXZZZZI\n", + "+0.000 * IIZZZZIZZIIIZZXIIZII\n", + "-0.000 * IIIIIIIIIIIIZIXZZZZI\n", + "+0.011 * IIZZZZIZZIIZIZXIIZII\n", + "-0.011 * IIIIIIIIIIIZIIXZZZZI\n", + "+0.000 * IIZZZZIZZIIIZXIIIZII\n", + "-0.000 * IIIIIIIIIIIIZXZZZZZI\n", + "+0.001 * IIZZZZIZZIIZIXIIIZII\n", + "-0.001 * IIIIIIIIIIIZIXZZZZZI\n", + "+0.123 * ZZIIIIZIIZZIIZZZZIZI\n", + "+0.001 * ZZIIIIZIIZZIIZXIIZII\n", + "-0.001 * ZZZZZZZZZZZIIIXZZZZI\n", + "+0.000 * ZZIIIIZIIZZIIXIIIZII\n", + "-0.000 * ZZZZZZZZZZZIIXZZZZZI\n", + "+0.002 * ZZIIIIZIIZXIIZZZXZII\n", + "-0.002 * IIZZZZIZZIXIIZZZXZII\n", + "-0.002 * ZZZZZZZZZZXIIIIIXZZI\n", + "+0.002 * IIIIIIIIIIXIIIIIXZZI\n", + "+0.047 * ZZIIIIZIIZXIIZZXIZII\n", + "-0.047 * IIZZZZIZZIXIIZZXIZII\n", + "-0.047 * ZZZZZZZZZZXIIIIXZZZI\n", + "+0.047 * IIIIIIIIIIXIIIIXZZZI\n", + "+0.008 * ZZIIIIZIIXIIIZZZZIZI\n", + "-0.008 * IIZZZZIZZXZIIZZZZIZI\n", + "+0.017 * ZZIIIIZIIXIIIZXIIZII\n", + "-0.017 * IIZZZZIZZXZIIZXIIZII\n", + "-0.017 * ZZZZZZZZZXIIIIXZZZZI\n", + "+0.017 * IIIIIIIIIXZIIIXZZZZI\n", + "+0.001 * ZZIIIIZIIXIIIXIIIZII\n", + "-0.001 * IIZZZZIZZXZIIXIIIZII\n", + "-0.001 * ZZZZZZZZZXIIIXZZZZZI\n", + "+0.001 * IIIIIIIIIXZIIXZZZZZI\n", + "-0.003 * ZZIIIIZIYIIIYIIIIZII\n", + "+0.003 * IIZZZZIZYZZIYIIIIZII\n", + "-0.003 * ZZZZZZZZXIIIXZZZZZZI\n", + "+0.003 * IIIIIIIIXZZIXZZZZZZI\n", + "-0.000 * ZZIIIIXZZIIIIZZZXZII\n", + "+0.000 * IIZZZZXIIZZIIZZZXZII\n", + "+0.000 * ZZZZZZXIIIIIIIIIXZZI\n", + "-0.000 * IIIIIIXZZZZIIIIIXZZI\n", + "-0.004 * ZZIIIIXZZIIIIZZXIZII\n", + "+0.004 * IIZZZZXIIZZIIZZXIZII\n", + "+0.004 * ZZZZZZXIIIIIIIIXZZZI\n", + "-0.004 * IIIIIIXZZZZIIIIXZZZI\n", + "+0.000 * ZZIIIYIZZIIIIZZZZYII\n", + "-0.000 * IIZZZYZIIZZIIZZZZYII\n", + "+0.000 * ZZZZZXIIIIIIIIIIIXZI\n", + "-0.000 * IIIIIXZZZZZIIIIIIXZI\n", + "-0.000 * ZZIIIYIZZIIYZIIIIZII\n", + "+0.000 * IIZZZYZIIZZYZIIIIZII\n", + "-0.000 * ZZZZZXIIIIIXZZZZZZZI\n", + "+0.000 * IIIIIXZZZZZXZZZZZZZI\n", + "+0.003 * ZZIIYZIZZIIIIZZZZYII\n", + "-0.003 * IIZZYIZIIZZIIZZZZYII\n", + "+0.003 * ZZZZXIIIIIIIIIIIIXZI\n", + "-0.003 * IIIIXZZZZZZIIIIIIXZI\n", + "-0.004 * ZZIIYZIZZIIYZIIIIZII\n", + "+0.004 * IIZZYIZIIZZYZIIIIZII\n", + "-0.004 * ZZZZXIIIIIIXZZZZZZZI\n", + "+0.004 * IIIIXZZZZZZXZZZZZZZI\n", + "-0.007 * ZZIYZZIZZIIIYIIIIZII\n", + "+0.007 * IIZYIIZIIZZIYIIIIZII\n", + "-0.007 * ZZZXIIIIIIIIXZZZZZZI\n", + "+0.007 * IIIXZZZZZZZIXZZZZZZI\n", + "-0.000 * ZZYZZZIZZIIIYIIIIZII\n", + "+0.000 * IIYIIIZIIZZIYIIIIZII\n", + "-0.000 * ZZXIIIIIIIIIXZZZZZZI\n", + "+0.000 * IIXZZZZZZZZIXZZZZZZI\n", + "-0.006 * ZXZZZZIZZIIIIZZZZIZI\n", + "+0.006 * IXIIIIZIIZZIIZZZZIZI\n", + "+0.014 * ZXZZZZIZZIIIIZXIIZII\n", + "-0.014 * IXIIIIZIIZZIIZXIIZII\n", + "-0.014 * ZXIIIIIIIIIIIIXZZZZI\n", + "+0.014 * IXZZZZZZZZZIIIXZZZZI\n", + "+0.001 * ZXZZZZIZZIIIIXIIIZII\n", + "-0.001 * IXIIIIZIIZZIIXIIIZII\n", + "-0.001 * ZXIIIIIIIIIIIXZZZZZI\n", + "+0.001 * IXZZZZZZZZZIIXZZZZZI\n", + "+0.000 * XIZZZZIZZIIIIZZZXZII\n", + "-0.000 * XZIIIIZIIZZIIZZZXZII\n", + "-0.000 * XIIIIIIIIIIIIIIIXZZI\n", + "+0.000 * XZZZZZZZZZZIIIIIXZZI\n", + "+0.014 * XIZZZZIZZIIIIZZXIZII\n", + "-0.014 * XZIIIIZIIZZIIZZXIZII\n", + "-0.014 * XIIIIIIIIIIIIIIXZZZI\n", + "+0.014 * XZZZZZZZZZZIIIIXZZZI\n", + "+0.123 * IIZZZZIZZIZIIZZZZIZI\n", + "-0.004 * IIZZZZIZZIZIIZXIIZII\n", + "+0.004 * IIIIIIIIIIZIIIXZZZZI\n", + "-0.000 * IIZZZZIZZIZIIXIIIZII\n", + "+0.000 * IIIIIIIIIIZIIXZZZZZI\n", + "+0.001 * IIZZZZIZZYYIIZZZXZII\n", + "+0.001 * IIZZZZIZZXXIIZZZXZII\n", + "-0.001 * IIIIIIIIIYYIIIIIXZZI\n", + "-0.001 * IIIIIIIIIXXIIIIIXZZI\n", + "+0.015 * IIZZZZIZZYYIIZZXIZII\n", + "+0.015 * IIZZZZIZZXXIIZZXIZII\n", + "-0.015 * IIIIIIIIIYYIIIIXZZZI\n", + "-0.015 * IIIIIIIIIXXIIIIXZZZI\n", + "+0.001 * IIZZZZIZXZYIIZZZZYII\n", + "-0.001 * IIZZZZIZYZXIIZZZZYII\n", + "-0.001 * IIIIIIIIYZYIIIIIIXZI\n", + "-0.001 * IIIIIIIIXZXIIIIIIXZI\n", + "-0.002 * IIZZZZIZXZYYZIIIIZII\n", + "+0.002 * IIZZZZIZYZXYZIIIIZII\n", + "+0.002 * IIIIIIIIYZYXZZZZZZZI\n", + "+0.002 * IIIIIIIIXZXXZZZZZZZI\n", + "-0.011 * IIZZZZYIIZYIIZZZZIZI\n", + "-0.011 * IIZZZZXIIZXIIZZZZIZI\n", + "-0.014 * IIZZZZYIIZYIIZXIIZII\n", + "-0.014 * IIZZZZXIIZXIIZXIIZII\n", + "+0.014 * IIIIIIYZZZYIIIXZZZZI\n", + "+0.014 * IIIIIIXZZZXIIIXZZZZI\n", + "-0.001 * IIZZZZYIIZYIIXIIIZII\n", + "-0.001 * IIZZZZXIIZXIIXIIIZII\n", + "+0.001 * IIIIIIYZZZYIIXZZZZZI\n", + "+0.001 * IIIIIIXZZZXIIXZZZZZI\n", + "+0.000 * IIZZZXZIIZYIYIIIIZII\n", + "-0.000 * IIZZZYZIIZXIYIIIIZII\n", + "-0.000 * IIIIIYZZZZYIXZZZZZZI\n", + "-0.000 * IIIIIXZZZZXIXZZZZZZI\n", + "+0.002 * IIZZXIZIIZYIYIIIIZII\n", + "-0.002 * IIZZYIZIIZXIYIIIIZII\n", + "-0.002 * IIIIYZZZZZYIXZZZZZZI\n", + "-0.002 * IIIIXZZZZZXIXZZZZZZI\n", + "-0.004 * IIZXIIZIIZYIIZZZZYII\n", + "+0.004 * IIZYIIZIIZXIIZZZZYII\n", + "+0.004 * IIIYZZZZZZYIIIIIIXZI\n", + "+0.004 * IIIXZZZZZZXIIIIIIXZI\n", + "+0.004 * IIZXIIZIIZYYZIIIIZII\n", + "-0.004 * IIZYIIZIIZXYZIIIIZII\n", + "-0.004 * IIIYZZZZZZYXZZZZZZZI\n", + "-0.004 * IIIXZZZZZZXXZZZZZZZI\n", + "-0.000 * IIXIIIZIIZYIIZZZZYII\n", + "+0.000 * IIYIIIZIIZXIIZZZZYII\n", + "+0.000 * IIYZZZZZZZYIIIIIIXZI\n", + "+0.000 * IIXZZZZZZZXIIIIIIXZI\n", + "+0.000 * IIXIIIZIIZYYZIIIIZII\n", + "-0.000 * IIYIIIZIIZXYZIIIIZII\n", + "-0.000 * IIYZZZZZZZYXZZZZZZZI\n", + "-0.000 * IIXZZZZZZZXXZZZZZZZI\n", + "+0.001 * IYIIIIZIIZYIIZZZXZII\n", + "+0.001 * IXIIIIZIIZXIIZZZXZII\n", + "-0.001 * IYZZZZZZZZYIIIIIXZZI\n", + "-0.001 * IXZZZZZZZZXIIIIIXZZI\n", + "+0.018 * IYIIIIZIIZYIIZZXIZII\n", + "+0.018 * IXIIIIZIIZXIIZZXIZII\n", + "-0.018 * IYZZZZZZZZYIIIIXZZZI\n", + "-0.018 * IXZZZZZZZZXIIIIXZZZI\n", + "-0.002 * YZIIIIZIIZYIIZZZZIZI\n", + "-0.002 * XZIIIIZIIZXIIZZZZIZI\n", + "+0.015 * YZIIIIZIIZYIIZXIIZII\n", + "+0.015 * XZIIIIZIIZXIIZXIIZII\n", + "-0.015 * YZZZZZZZZZYIIIXZZZZI\n", + "-0.015 * XZZZZZZZZZXIIIXZZZZI\n", + "+0.001 * YZIIIIZIIZYIIXIIIZII\n", + "+0.001 * XZIIIIZIIZXIIXIIIZII\n", + "-0.001 * YZZZZZZZZZYIIXZZZZZI\n", + "-0.001 * XZZZZZZZZZXIIXZZZZZI\n", + "+0.110 * IIZZZZIZZZIIIZZZZIZI\n", + "-0.009 * IIZZZZIZZZIIIZXIIZII\n", + "+0.009 * IIIIIIIIIZIIIIXZZZZI\n", + "-0.000 * IIZZZZIZZZIIIXIIIZII\n", + "+0.000 * IIIIIIIIIZIIIXZZZZZI\n", + "-0.004 * IIZZZZIZXYIIYIIIIZII\n", + "+0.004 * IIZZZZIZYXIIYIIIIZII\n", + "+0.004 * IIIIIIIIYYIIXZZZZZZI\n", + "+0.004 * IIIIIIIIXXIIXZZZZZZI\n", + "-0.002 * IIZZZZYIIYIIIZZZXZII\n", + "-0.002 * IIZZZZXIIXIIIZZZXZII\n", + "+0.002 * IIIIIIYZZYIIIIIIXZZI\n", + "+0.002 * IIIIIIXZZXIIIIIIXZZI\n", + "-0.048 * IIZZZZYIIYIIIZZXIZII\n", + "-0.048 * IIZZZZXIIXIIIZZXIZII\n", + "+0.048 * IIIIIIYZZYIIIIIXZZZI\n", + "+0.048 * IIIIIIXZZXIIIIIXZZZI\n", + "-0.000 * IIZZZXZIIYIIIZZZZYII\n", + "+0.000 * IIZZZYZIIXIIIZZZZYII\n", + "+0.000 * IIIIIYZZZYIIIIIIIXZI\n", + "+0.000 * IIIIIXZZZXIIIIIIIXZI\n", + "+0.000 * IIZZZXZIIYIYZIIIIZII\n", + "-0.000 * IIZZZYZIIXIYZIIIIZII\n", + "-0.000 * IIIIIYZZZYIXZZZZZZZI\n", + "-0.000 * IIIIIXZZZXIXZZZZZZZI\n", + "-0.006 * IIZZXIZIIYIIIZZZZYII\n", + "+0.006 * IIZZYIZIIXIIIZZZZYII\n", + "+0.006 * IIIIYZZZZYIIIIIIIXZI\n", + "+0.006 * IIIIXZZZZXIIIIIIIXZI\n", + "+0.002 * IIZZXIZIIYIYZIIIIZII\n", + "-0.002 * IIZZYIZIIXIYZIIIIZII\n", + "-0.002 * IIIIYZZZZYIXZZZZZZZI\n", + "-0.002 * IIIIXZZZZXIXZZZZZZZI\n", + "-0.005 * IIZXIIZIIYIIYIIIIZII\n", + "+0.005 * IIZYIIZIIXIIYIIIIZII\n", + "+0.005 * IIIYZZZZZYIIXZZZZZZI\n", + "+0.005 * IIIXZZZZZXIIXZZZZZZI\n", + "-0.000 * IIXIIIZIIYIIYIIIIZII\n", + "+0.000 * IIYIIIZIIXIIYIIIIZII\n", + "+0.000 * IIYZZZZZZYIIXZZZZZZI\n", + "+0.000 * IIXZZZZZZXIIXZZZZZZI\n", + "-0.006 * IYIIIIZIIYIIIZZZZIZI\n", + "-0.006 * IXIIIIZIIXIIIZZZZIZI\n", + "-0.016 * IYIIIIZIIYIIIZXIIZII\n", + "-0.016 * IXIIIIZIIXIIIZXIIZII\n", + "+0.016 * IYZZZZZZZYIIIIXZZZZI\n", + "+0.016 * IXZZZZZZZXIIIIXZZZZI\n", + "-0.001 * IYIIIIZIIYIIIXIIIZII\n", + "-0.001 * IXIIIIZIIXIIIXIIIZII\n", + "+0.001 * IYZZZZZZZYIIIXZZZZZI\n", + "+0.001 * IXZZZZZZZXIIIXZZZZZI\n", + "-0.000 * YZIIIIZIIYIIIZZZXZII\n", + "-0.000 * XZIIIIZIIXIIIZZZXZII\n", + "+0.000 * YZZZZZZZZYIIIIIIXZZI\n", + "+0.000 * XZZZZZZZZXIIIIIIXZZI\n", + "-0.004 * YZIIIIZIIYIIIZZXIZII\n", + "-0.004 * XZIIIIZIIXIIIZZXIZII\n", + "+0.004 * YZZZZZZZZYIIIIIXZZZI\n", + "+0.004 * XZZZZZZZZXIIIIIXZZZI\n", + "+0.122 * IIZZZZIZIIIIIZZZZIZI\n", + "+0.004 * IIZZZZIZIIIIIZXIIZII\n", + "-0.004 * IIIIIIIIZIIIIIXZZZZI\n", + "+0.000 * IIZZZZIZIIIIIXIIIZII\n", + "-0.000 * IIIIIIIIZIIIIXZZZZZI\n", + "+0.004 * IIZZZZIXXIIIIZZZZIXI\n", + "+0.004 * IIZZZZIYYIIIIZZZZIXI\n", + "+0.004 * IIIIIIIYYIIIIIIIIIXI\n", + "+0.004 * IIIIIIIXXIIIIIIIIIXI\n", + "-0.000 * IIZZZZIXXIIIIZXIIZII\n", + "-0.000 * IIZZZZIYYIIIIZXIIZII\n", + "-0.000 * IIIIIIIYYIIIIIXZZZZI\n", + "-0.000 * IIIIIIIXXIIIIIXZZZZI\n", + "+0.000 * IIZZZZIXXIIIIXIIIZII\n", + "+0.000 * IIZZZZIYYIIIIXIIIZII\n", + "+0.000 * IIIIIIIYYIIIIXZZZZZI\n", + "+0.000 * IIIIIIIXXIIIIXZZZZZI\n", + "-0.005 * IIZZZZYIXIIIIZZZZYII\n", + "+0.005 * IIZZZZXIYIIIIZZZZYII\n", + "+0.005 * IIIIIIYZYIIIIIIIIXZI\n", + "+0.005 * IIIIIIXZXIIIIIIIIXZI\n", + "+0.002 * IIZZZZYIXIIYZIIIIZII\n", + "-0.002 * IIZZZZXIYIIYZIIIIZII\n", + "-0.002 * IIIIIIYZYIIXZZZZZZZI\n", + "-0.002 * IIIIIIXZXIIXZZZZZZZI\n", + "+0.004 * IIZZZXZIXIIIIZZZXZII\n", + "+0.004 * IIZZZYZIYIIIIZZZXZII\n", + "+0.004 * IIIIIYZZYIIIIIIIXZZI\n", + "+0.004 * IIIIIXZZXIIIIIIIXZZI\n", + "+0.002 * IIZZZXZIXIIIIZZXIZII\n", + "+0.002 * IIZZZYZIYIIIIZZXIZII\n", + "+0.002 * IIIIIYZZYIIIIIIXZZZI\n", + "+0.002 * IIIIIXZZXIIIIIIXZZZI\n", + "+0.002 * IIZZXIZIXIIIIZZZXZII\n", + "+0.002 * IIZZYIZIYIIIIZZZXZII\n", + "+0.002 * IIIIYZZZYIIIIIIIXZZI\n", + "+0.002 * IIIIXZZZXIIIIIIIXZZI\n", + "+0.049 * IIZZXIZIXIIIIZZXIZII\n", + "+0.049 * IIZZYIZIYIIIIZZXIZII\n", + "+0.049 * IIIIYZZZYIIIIIIXZZZI\n", + "+0.049 * IIIIXZZZXIIIIIIXZZZI\n", + "+0.004 * IIZXIIZIXIIIIZZZZIZI\n", + "+0.004 * IIZYIIZIYIIIIZZZZIZI\n", + "-0.000 * IIZXIIZIXIIIIZZZZIXI\n", + "-0.000 * IIZYIIZIYIIIIZZZZIXI\n", + "-0.000 * IIIYZZZZYIIIIIIIIIXI\n", + "-0.000 * IIIXZZZZXIIIIIIIIIXI\n", + "+0.029 * IIZXIIZIXIIIIZXIIZII\n", + "+0.029 * IIZYIIZIYIIIIZXIIZII\n", + "+0.029 * IIIYZZZZYIIIIIXZZZZI\n", + "+0.029 * IIIXZZZZXIIIIIXZZZZI\n", + "+0.001 * IIZXIIZIXIIIIXIIIZII\n", + "+0.001 * IIZYIIZIYIIIIXIIIZII\n", + "+0.001 * IIIYZZZZYIIIIXZZZZZI\n", + "+0.001 * IIIXZZZZXIIIIXZZZZZI\n", + "+0.000 * IIXIIIZIXIIIIZZZZIZI\n", + "+0.000 * IIYIIIZIYIIIIZZZZIZI\n", + "+0.000 * IIXIIIZIXIIIIZZZZIXI\n", + "+0.000 * IIYIIIZIYIIIIZZZZIXI\n", + "+0.000 * IIYZZZZZYIIIIIIIIIXI\n", + "+0.000 * IIXZZZZZXIIIIIIIIIXI\n", + "+0.001 * IIXIIIZIXIIIIZXIIZII\n", + "+0.001 * IIYIIIZIYIIIIZXIIZII\n", + "+0.001 * IIYZZZZZYIIIIIXZZZZI\n", + "+0.001 * IIXZZZZZXIIIIIXZZZZI\n", + "+0.004 * IIXIIIZIXIIIIXIIIZII\n", + "+0.004 * IIYIIIZIYIIIIXIIIZII\n", + "+0.004 * IIYZZZZZYIIIIXZZZZZI\n", + "+0.004 * IIXZZZZZXIIIIXZZZZZI\n", + "-0.008 * IYIIIIZIXIIIYIIIIZII\n", + "+0.008 * IXIIIIZIYIIIYIIIIZII\n", + "+0.008 * IYZZZZZZYIIIXZZZZZZI\n", + "+0.008 * IXZZZZZZXIIIXZZZZZZI\n", + "+0.002 * YZIIIIZIXIIIIZZZZYII\n", + "-0.002 * XZIIIIZIYIIIIZZZZYII\n", + "-0.002 * YZZZZZZZYIIIIIIIIXZI\n", + "-0.002 * XZZZZZZZXIIIIIIIIXZI\n", + "-0.005 * YZIIIIZIXIIYZIIIIZII\n", + "+0.005 * XZIIIIZIYIIYZIIIIZII\n", + "+0.005 * YZZZZZZZYIIXZZZZZZZI\n", + "+0.005 * XZZZZZZZXIIXZZZZZZZI\n", + "+0.114 * IIZZZZIIZIIIIZZZZIZI\n", + "+0.004 * IIZZZZIIZIIIIZXIIZII\n", + "-0.004 * IIIIIIIZIIIIIIXZZZZI\n", + "+0.000 * IIZZZZIIZIIIIXIIIZII\n", + "-0.000 * IIIIIIIZIIIIIXZZZZZI\n", + "+0.002 * IIZZZXZXZIIIIZZZXZII\n", + "+0.002 * IIZZZYZYZIIIIZZZXZII\n", + "+0.002 * IIIIIYZYIIIIIIIIXZZI\n", + "+0.002 * IIIIIXZXIIIIIIIIXZZI\n", + "+0.042 * IIZZZXZXZIIIIZZXIZII\n", + "+0.042 * IIZZZYZYZIIIIZZXIZII\n", + "+0.042 * IIIIIYZYIIIIIIIXZZZI\n", + "+0.042 * IIIIIXZXIIIIIIIXZZZI\n", + "+0.003 * IIZZXIZXZIIIIZZZXZII\n", + "+0.003 * IIZZYIZYZIIIIZZZXZII\n", + "+0.003 * IIIIYZZYIIIIIIIIXZZI\n", + "+0.003 * IIIIXZZXIIIIIIIIXZZI\n", + "-0.002 * IIZZXIZXZIIIIZZXIZII\n", + "-0.002 * IIZZYIZYZIIIIZZXIZII\n", + "-0.002 * IIIIYZZYIIIIIIIXZZZI\n", + "-0.002 * IIIIXZZXIIIIIIIXZZZI\n", + "-0.000 * IIZXIIZXZIIIIZZZZIZI\n", + "-0.000 * IIZYIIZYZIIIIZZZZIZI\n", + "+0.000 * IIZXIIZXZIIIIZZZZIXI\n", + "+0.000 * IIZYIIZYZIIIIZZZZIXI\n", + "+0.000 * IIIYZZZYIIIIIIIIIIXI\n", + "+0.000 * IIIXZZZXIIIIIIIIIIXI\n", + "-0.001 * IIZXIIZXZIIIIZXIIZII\n", + "-0.001 * IIZYIIZYZIIIIZXIIZII\n", + "-0.001 * IIIYZZZYIIIIIIXZZZZI\n", + "-0.001 * IIIXZZZXIIIIIIXZZZZI\n", + "+0.003 * IIZXIIZXZIIIIXIIIZII\n", + "+0.003 * IIZYIIZYZIIIIXIIIZII\n", + "+0.003 * IIIYZZZYIIIIIXZZZZZI\n", + "+0.003 * IIIXZZZXIIIIIXZZZZZI\n", + "+0.004 * IIXIIIZXZIIIIZZZZIZI\n", + "+0.004 * IIYIIIZYZIIIIZZZZIZI\n", + "+0.000 * IIXIIIZXZIIIIZZZZIXI\n", + "+0.000 * IIYIIIZYZIIIIZZZZIXI\n", + "+0.000 * IIYZZZZYIIIIIIIIIIXI\n", + "+0.000 * IIXZZZZXIIIIIIIIIIXI\n", + "+0.023 * IIXIIIZXZIIIIZXIIZII\n", + "+0.023 * IIYIIIZYZIIIIZXIIZII\n", + "+0.023 * IIYZZZZYIIIIIIXZZZZI\n", + "+0.023 * IIXZZZZXIIIIIIXZZZZI\n", + "+0.001 * IIXIIIZXZIIIIXIIIZII\n", + "+0.001 * IIYIIIZYZIIIIXIIIZII\n", + "+0.001 * IIYZZZZYIIIIIXZZZZZI\n", + "+0.001 * IIXZZZZXIIIIIXZZZZZI\n", + "+0.111 * IIZZZZZZZIIIIZZZZIZI\n", + "-0.011 * IIZZZZZZZIIIIZXIIZII\n", + "+0.011 * IIIIIIZIIIIIIIXZZZZI\n", + "-0.001 * IIZZZZZZZIIIIXIIIZII\n", + "+0.001 * IIIIIIZIIIIIIXZZZZZI\n", + "+0.000 * IIZZZXYZZIIIYIIIIZII\n", + "-0.000 * IIZZZYXZZIIIYIIIIZII\n", + "-0.000 * IIIIIYYIIIIIXZZZZZZI\n", + "-0.000 * IIIIIXXIIIIIXZZZZZZI\n", + "+0.000 * IIZZXIYZZIIIYIIIIZII\n", + "-0.000 * IIZZYIXZZIIIYIIIIZII\n", + "-0.000 * IIIIYZYIIIIIXZZZZZZI\n", + "-0.000 * IIIIXZXIIIIIXZZZZZZI\n", + "+0.003 * IIZXIIYZZIIIIZZZZYII\n", + "-0.003 * IIZYIIXZZIIIIZZZZYII\n", + "-0.003 * IIIYZZYIIIIIIIIIIXZI\n", + "-0.003 * IIIXZZXIIIIIIIIIIXZI\n", + "+0.001 * IIZXIIYZZIIYZIIIIZII\n", + "-0.001 * IIZYIIXZZIIYZIIIIZII\n", + "-0.001 * IIIYZZYIIIIXZZZZZZZI\n", + "-0.001 * IIIXZZXIIIIXZZZZZZZI\n", + "+0.000 * IIXIIIYZZIIIIZZZZYII\n", + "-0.000 * IIYIIIXZZIIIIZZZZYII\n", + "-0.000 * IIYZZZYIIIIIIIIIIXZI\n", + "-0.000 * IIXZZZXIIIIIIIIIIXZI\n", + "+0.000 * IIXIIIYZZIIYZIIIIZII\n", + "-0.000 * IIYIIIXZZIIYZIIIIZII\n", + "-0.000 * IIYZZZYIIIIXZZZZZZZI\n", + "-0.000 * IIXZZZXIIIIXZZZZZZZI\n", + "+0.001 * IYIIIIYZZIIIIZZZXZII\n", + "+0.001 * IXIIIIXZZIIIIZZZXZII\n", + "-0.001 * IYZZZZYIIIIIIIIIXZZI\n", + "-0.001 * IXZZZZXIIIIIIIIIXZZI\n", + "+0.021 * IYIIIIYZZIIIIZZXIZII\n", + "+0.021 * IXIIIIXZZIIIIZZXIZII\n", + "-0.021 * IYZZZZYIIIIIIIIXZZZI\n", + "-0.021 * IXZZZZXIIIIIIIIXZZZI\n", + "+0.008 * YZIIIIYZZIIIIZZZZIZI\n", + "+0.008 * XZIIIIXZZIIIIZZZZIZI\n", + "+0.015 * YZIIIIYZZIIIIZXIIZII\n", + "+0.015 * XZIIIIXZZIIIIZXIIZII\n", + "-0.015 * YZZZZZYIIIIIIIXZZZZI\n", + "-0.015 * XZZZZZXIIIIIIIXZZZZI\n", + "+0.001 * YZIIIIYZZIIIIXIIIZII\n", + "+0.001 * XZIIIIXZZIIIIXIIIZII\n", + "-0.001 * YZZZZZYIIIIIIXZZZZZI\n", + "-0.001 * XZZZZZXIIIIIIXZZZZZI\n", + "+0.112 * IIZZZIIZZIIIIZZZZIZI\n", + "+0.000 * IIZZZIIZZIIIIZZZZIXI\n", + "-0.000 * IIIIIZIIIIIIIIIIIIXI\n", + "-0.016 * IIZZZIIZZIIIIZXIIZII\n", + "+0.016 * IIIIIZIIIIIIIIXZZZZI\n", + "-0.001 * IIZZZIIZZIIIIXIIIZII\n", + "+0.001 * IIIIIZIIIIIIIXZZZZZI\n", + "+0.000 * IIZZXXIZZIIIIZZZZIZI\n", + "+0.000 * IIZZYYIZZIIIIZZZZIZI\n", + "+0.004 * IIZZXXIZZIIIIZZZZIXI\n", + "+0.004 * IIZZYYIZZIIIIZZZZIXI\n", + "+0.004 * IIIIYYIIIIIIIIIIIIXI\n", + "+0.004 * IIIIXXIIIIIIIIIIIIXI\n", + "-0.000 * IIZZXXIZZIIIIZXIIZII\n", + "-0.000 * IIZZYYIZZIIIIZXIIZII\n", + "-0.000 * IIIIYYIIIIIIIIXZZZZI\n", + "-0.000 * IIIIXXIIIIIIIIXZZZZI\n", + "-0.003 * IIZZXXIZZIIIIXIIIZII\n", + "-0.003 * IIZZYYIZZIIIIXIIIZII\n", + "-0.003 * IIIIYYIIIIIIIXZZZZZI\n", + "-0.003 * IIIIXXIIIIIIIXZZZZZI\n", + "-0.003 * IIZXIXIZZIIIIZZZXZII\n", + "-0.003 * IIZYIYIZZIIIIZZZXZII\n", + "-0.003 * IIIYZYIIIIIIIIIIXZZI\n", + "-0.003 * IIIXZXIIIIIIIIIIXZZI\n", + "+0.001 * IIZXIXIZZIIIIZZXIZII\n", + "+0.001 * IIZYIYIZZIIIIZZXIZII\n", + "+0.001 * IIIYZYIIIIIIIIIXZZZI\n", + "+0.001 * IIIXZXIIIIIIIIIXZZZI\n", + "-0.001 * IIXIIXIZZIIIIZZZXZII\n", + "-0.001 * IIYIIYIZZIIIIZZZXZII\n", + "-0.001 * IIYZZYIIIIIIIIIIXZZI\n", + "-0.001 * IIXZZXIIIIIIIIIIXZZI\n", + "-0.035 * IIXIIXIZZIIIIZZXIZII\n", + "-0.035 * IIYIIYIZZIIIIZZXIZII\n", + "-0.035 * IIYZZYIIIIIIIIIXZZZI\n", + "-0.035 * IIXZZXIIIIIIIIIXZZZI\n", + "+0.000 * IYIIIXIZZIIIIZZZZYII\n", + "-0.000 * IXIIIYIZZIIIIZZZZYII\n", + "-0.000 * IYZZZYIIIIIIIIIIIXZI\n", + "-0.000 * IXZZZXIIIIIIIIIIIXZI\n", + "+0.000 * IYIIIXIZZIIYZIIIIZII\n", + "-0.000 * IXIIIYIZZIIYZIIIIZII\n", + "-0.000 * IYZZZYIIIIIXZZZZZZZI\n", + "-0.000 * IXZZZXIIIIIXZZZZZZZI\n", + "+0.000 * YZIIIXIZZIIIYIIIIZII\n", + "-0.000 * XZIIIYIZZIIIYIIIIZII\n", + "-0.000 * YZZZZYIIIIIIXZZZZZZI\n", + "-0.000 * XZZZZXIIIIIIXZZZZZZI\n", + "+0.119 * IIZZIZIZZIIIIZZZZIZI\n", + "-0.000 * IIZZIZIZZIIIIZZZZIXI\n", + "+0.000 * IIIIZIIIIIIIIIIIIIXI\n", + "-0.021 * IIZZIZIZZIIIIZXIIZII\n", + "+0.021 * IIIIZIIIIIIIIIXZZZZI\n", + "-0.001 * IIZZIZIZZIIIIXIIIZII\n", + "+0.001 * IIIIZIIIIIIIIXZZZZZI\n", + "-0.001 * IIZXXZIZZIIIIZZZXZII\n", + "-0.001 * IIZYYZIZZIIIIZZZXZII\n", + "-0.001 * IIIYYIIIIIIIIIIIXZZI\n", + "-0.001 * IIIXXIIIIIIIIIIIXZZI\n", + "-0.041 * IIZXXZIZZIIIIZZXIZII\n", + "-0.041 * IIZYYZIZZIIIIZZXIZII\n", + "-0.041 * IIIYYIIIIIIIIIIXZZZI\n", + "-0.041 * IIIXXIIIIIIIIIIXZZZI\n", + "-0.003 * IIXIXZIZZIIIIZZZXZII\n", + "-0.003 * IIYIYZIZZIIIIZZZXZII\n", + "-0.003 * IIYZYIIIIIIIIIIIXZZI\n", + "-0.003 * IIXZXIIIIIIIIIIIXZZI\n", + "-0.001 * IIXIXZIZZIIIIZZXIZII\n", + "-0.001 * IIYIYZIZZIIIIZZXIZII\n", + "-0.001 * IIYZYIIIIIIIIIIXZZZI\n", + "-0.001 * IIXZXIIIIIIIIIIXZZZI\n", + "+0.001 * IYIIXZIZZIIIIZZZZYII\n", + "-0.001 * IXIIYZIZZIIIIZZZZYII\n", + "-0.001 * IYZZYIIIIIIIIIIIIXZI\n", + "-0.001 * IXZZXIIIIIIIIIIIIXZI\n", + "+0.003 * IYIIXZIZZIIYZIIIIZII\n", + "-0.003 * IXIIYZIZZIIYZIIIIZII\n", + "-0.003 * IYZZYIIIIIIXZZZZZZZI\n", + "-0.003 * IXZZXIIIIIIXZZZZZZZI\n", + "+0.004 * YZIIXZIZZIIIYIIIIZII\n", + "-0.004 * XZIIYZIZZIIIYIIIIZII\n", + "-0.004 * YZZZYIIIIIIIXZZZZZZI\n", + "-0.004 * XZZZXIIIIIIIXZZZZZZI\n", + "+0.126 * IIZIZZIZZIIIIZZZZIZI\n", + "-0.000 * IIZIZZIZZIIIIZZZZIXI\n", + "+0.000 * IIIZIIIIIIIIIIIIIIXI\n", + "+0.011 * IIZIZZIZZIIIIZXIIZII\n", + "-0.011 * IIIZIIIIIIIIIIXZZZZI\n", + "+0.000 * IIZIZZIZZIIIIXIIIZII\n", + "-0.000 * IIIZIIIIIIIIIXZZZZZI\n", + "+0.000 * IIXXZZIZZIIIIZZZZIZI\n", + "+0.000 * IIYYZZIZZIIIIZZZZIZI\n", + "+0.004 * IIXXZZIZZIIIIZZZZIXI\n", + "+0.004 * IIYYZZIZZIIIIZZZZIXI\n", + "+0.004 * IIYYIIIIIIIIIIIIIIXI\n", + "+0.004 * IIXXIIIIIIIIIIIIIIXI\n", + "+0.000 * IIXXZZIZZIIIIZXIIZII\n", + "+0.000 * IIYYZZIZZIIIIZXIIZII\n", + "+0.000 * IIYYIIIIIIIIIIXZZZZI\n", + "+0.000 * IIXXIIIIIIIIIIXZZZZI\n", + "+0.001 * IIXXZZIZZIIIIXIIIZII\n", + "+0.001 * IIYYZZIZZIIIIXIIIZII\n", + "+0.001 * IIYYIIIIIIIIIXZZZZZI\n", + "+0.001 * IIXXIIIIIIIIIXZZZZZI\n", + "-0.006 * IYIXZZIZZIIIYIIIIZII\n", + "+0.006 * IXIYZZIZZIIIYIIIIZII\n", + "+0.006 * IYZYIIIIIIIIXZZZZZZI\n", + "+0.006 * IXZXIIIIIIIIXZZZZZZI\n", + "+0.002 * YZIXZZIZZIIIIZZZZYII\n", + "-0.002 * XZIYZZIZZIIIIZZZZYII\n", + "-0.002 * YZZYIIIIIIIIIIIIIXZI\n", + "-0.002 * XZZXIIIIIIIIIIIIIXZI\n", + "-0.000 * YZIXZZIZZIIYZIIIIZII\n", + "+0.000 * XZIYZZIZZIIYZIIIIZII\n", + "+0.000 * YZZYIIIIIIIXZZZZZZZI\n", + "+0.000 * XZZXIIIIIIIXZZZZZZZI\n", + "+0.118 * IIIZZZIZZIIIIZZZZIZI\n", + "+0.000 * IIIZZZIZZIIIIZZZZIXI\n", + "-0.000 * IIZIIIIIIIIIIIIIIIXI\n", + "+0.009 * IIIZZZIZZIIIIZXIIZII\n", + "-0.009 * IIZIIIIIIIIIIIXZZZZI\n", + "+0.001 * IIIZZZIZZIIIIXIIIZII\n", + "-0.001 * IIZIIIIIIIIIIXZZZZZI\n", + "-0.000 * IYXZZZIZZIIIYIIIIZII\n", + "+0.000 * IXYZZZIZZIIIYIIIIZII\n", + "+0.000 * IYYIIIIIIIIIXZZZZZZI\n", + "+0.000 * IXXIIIIIIIIIXZZZZZZI\n", + "+0.000 * YZXZZZIZZIIIIZZZZYII\n", + "-0.000 * XZYZZZIZZIIIIZZZZYII\n", + "-0.000 * YZYIIIIIIIIIIIIIIXZI\n", + "-0.000 * XZXIIIIIIIIIIIIIIXZI\n", + "-0.000 * YZXZZZIZZIIYZIIIIZII\n", + "+0.000 * XZYZZZIZZIIYZIIIIZII\n", + "+0.000 * YZYIIIIIIIIXZZZZZZZI\n", + "+0.000 * XZXIIIIIIIIXZZZZZZZI\n", + "+0.124 * IZZZZZIZZIIIIZZZZIZI\n", + "+0.006 * IZZZZZIZZIIIIZXIIZII\n", + "-0.006 * IZIIIIIIIIIIIIXZZZZI\n", + "+0.000 * IZZZZZIZZIIIIXIIIZII\n", + "-0.000 * IZIIIIIIIIIIIXZZZZZI\n", + "+0.001 * YYZZZZIZZIIIIZZZXZII\n", + "+0.001 * XXZZZZIZZIIIIZZZXZII\n", + "-0.001 * YYIIIIIIIIIIIIIIXZZI\n", + "-0.001 * XXIIIIIIIIIIIIIIXZZI\n", + "+0.037 * YYZZZZIZZIIIIZZXIZII\n", + "+0.037 * XXZZZZIZZIIIIZZXIZII\n", + "-0.037 * YYIIIIIIIIIIIIIXZZZI\n", + "-0.037 * XXIIIIIIIIIIIIIXZZZI\n", + "+0.132 * ZIZZZZIZZIIIIZZZZIZI\n", + "+0.011 * ZIZZZZIZZIIIIZXIIZII\n", + "-0.011 * ZIIIIIIIIIIIIIXZZZZI\n", + "+0.001 * ZIZZZZIZZIIIIXIIIZII\n", + "-0.001 * ZIIIIIIIIIIIIXZZZZZI\n", + "+0.106 * IIIIIIIIIIIIIIIIIZZI\n", + "+0.006 * IIIIIIIIIIIYZZZZZYZI\n", + "+0.006 * IIIIIIIIIIIXZZZZZXZI\n", + "+0.071 * IIIIIIIIIIIIIIIIZIZI\n", + "-0.001 * IIIIIIIIIIIIIIIYYIZI\n", + "-0.001 * IIIIIIIIIIIIIIIXXIZI\n", + "+0.108 * IIIIIIIIIIIIIIIZIIZI\n", + "+0.114 * IIIIIIIIIIIIIIZIIIZI\n", + "-0.001 * IIIIIIIIIIIIIYYIIIZI\n", + "-0.001 * IIIIIIIIIIIIIXXIIIZI\n", + "+0.097 * IIIIIIIIIIIIIZIIIIZI\n", + "+0.115 * IIIIIIIIIIIIZIIIIIZI\n", + "+0.127 * IIIIIIIIIIIZIIIIIIZI\n", + "-0.000 * IIIIIIIIIIIIIIYZZIYI\n", + "-0.000 * IIIIIIIIIIIIIIXZZIXI\n", + "+0.008 * IIIIIIIIIIIIIYZZZIYI\n", + "+0.008 * IIIIIIIIIIIIIXZZZIXI\n", + "-0.021 * IIIIIIIIIIIIYZZZXXYI\n", + "-0.001 * IIIIIIIIIIIIYZZZYYYI\n", + "+0.020 * IIIIIIIIIIIIXZZZXYYI\n", + "+0.020 * IIIIIIIIIIIIYZZZYXXI\n", + "-0.001 * IIIIIIIIIIIIXZZZXXXI\n", + "-0.021 * IIIIIIIIIIIIXZZZYYXI\n", + "+0.001 * IIIIIIIIIIIIYZZXIXYI\n", + "+0.000 * IIIIIIIIIIIIYZZYIYYI\n", + "-0.001 * IIIIIIIIIIIIXZZXIYYI\n", + "-0.001 * IIIIIIIIIIIIYZZYIXXI\n", + "+0.000 * IIIIIIIIIIIIXZZXIXXI\n", + "+0.001 * IIIIIIIIIIIIXZZYIYXI\n", + "+0.001 * IIIIIIIIIIIYZZXIIXYI\n", + "+0.000 * IIIIIIIIIIIYZZYIIYYI\n", + "-0.001 * IIIIIIIIIIIXZZXIIYYI\n", + "-0.001 * IIIIIIIIIIIYZZYIIXXI\n", + "+0.000 * IIIIIIIIIIIXZZXIIXXI\n", + "+0.001 * IIIIIIIIIIIXZZYIIYXI\n", + "-0.015 * IIIIIIIIIIIYZXIIIXYI\n", + "-0.001 * IIIIIIIIIIIYZYIIIYYI\n", + "+0.014 * IIIIIIIIIIIXZXIIIYYI\n", + "+0.014 * IIIIIIIIIIIYZYIIIXXI\n", + "-0.001 * IIIIIIIIIIIXZXIIIXXI\n", + "-0.015 * IIIIIIIIIIIXZYIIIYXI\n", + "-0.000 * IIIIIIIIIIIIIIYZIZYI\n", + "-0.000 * IIIIIIIIIIIIIIXZIZXI\n", + "-0.021 * IIIIIIIIIIIIIYZZIZYI\n", + "-0.021 * IIIIIIIIIIIIIXZZIZXI\n", + "-0.000 * IIIIIIIIIIIIIIYXXZYI\n", + "-0.033 * IIIIIIIIIIIIIIYYYZYI\n", + "-0.033 * IIIIIIIIIIIIIIXXYZYI\n", + "-0.033 * IIIIIIIIIIIIIIYYXZXI\n", + "-0.033 * IIIIIIIIIIIIIIXXXZXI\n", + "-0.000 * IIIIIIIIIIIIIIXYYZXI\n", + "+0.001 * IIIIIIIIIIIIIYZXXZYI\n", + "-0.001 * IIIIIIIIIIIIIYZYYZYI\n", + "-0.002 * IIIIIIIIIIIIIXZXYZYI\n", + "-0.002 * IIIIIIIIIIIIIYZYXZXI\n", + "-0.001 * IIIIIIIIIIIIIXZXXZXI\n", + "+0.001 * IIIIIIIIIIIIIXZYYZXI\n", + "-0.000 * IIIIIIIIIIIYXIIIXZYI\n", + "-0.033 * IIIIIIIIIIIYYIIIYZYI\n", + "-0.033 * IIIIIIIIIIIXXIIIYZYI\n", + "-0.033 * IIIIIIIIIIIYYIIIXZXI\n", + "-0.033 * IIIIIIIIIIIXXIIIXZXI\n", + "-0.000 * IIIIIIIIIIIXYIIIYZXI\n", + "+0.000 * IIIIIIIIIIIIIIYIZZYI\n", + "+0.000 * IIIIIIIIIIIIIIXIZZXI\n", + "+0.013 * IIIIIIIIIIIIIYZIZZYI\n", + "+0.013 * IIIIIIIIIIIIIXZIZZXI\n", + "+0.000 * IIIIIIIIIIIYXIIXZZYI\n", + "+0.001 * IIIIIIIIIIIYYIIYZZYI\n", + "+0.001 * IIIIIIIIIIIXXIIYZZYI\n", + "+0.001 * IIIIIIIIIIIYYIIXZZXI\n", + "+0.001 * IIIIIIIIIIIXXIIXZZXI\n", + "+0.000 * IIIIIIIIIIIXYIIYZZXI\n", + "-0.007 * IIIIIIIIIIIIIYIZZZYI\n", + "-0.007 * IIIIIIIIIIIIIXIZZZXI\n", + "+0.000 * IIIIIIIIIIIIIZYZZZYI\n", + "+0.000 * IIIIIIIIIIIIIZXZZZXI\n", + "+0.000 * IIIIIIIIIIIIZIYZZZYI\n", + "+0.000 * IIIIIIIIIIIIZIXZZZXI\n", + "+0.001 * IIIIIIIIIIIZIIYZZZYI\n", + "+0.001 * IIIIIIIIIIIZIIXZZZXI\n", + "-0.000 * IIIIIIIIIIIIZYZZZZYI\n", + "-0.000 * IIIIIIIIIIIIZXZZZZXI\n", + "-0.011 * IIIIIIIIIIIZIYZZZZYI\n", + "-0.011 * IIIIIIIIIIIZIXZZZZXI\n", + "+0.123 * ZZZZZZZZZZZIIIIIIIZI\n", + "+0.000 * ZZZZZZZZZZZIIIYZZZYI\n", + "+0.000 * ZZZZZZZZZZZIIIXZZZXI\n", + "-0.001 * ZZZZZZZZZZZIIYZZZZYI\n", + "-0.001 * ZZZZZZZZZZZIIXZZZZXI\n", + "-0.047 * ZZZZZZZZZZXIIIIIYZYI\n", + "+0.047 * IIIIIIIIIIXIIIIIYZYI\n", + "-0.047 * ZZZZZZZZZZXIIIIIXZXI\n", + "+0.047 * IIIIIIIIIIXIIIIIXZXI\n", + "+0.002 * ZZZZZZZZZZXIIIIYZZYI\n", + "-0.002 * IIIIIIIIIIXIIIIYZZYI\n", + "+0.002 * ZZZZZZZZZZXIIIIXZZXI\n", + "-0.002 * IIIIIIIIIIXIIIIXZZXI\n", + "+0.008 * ZZZZZZZZZXIIIIIIIIZI\n", + "-0.008 * IIIIIIIIIXZIIIIIIIZI\n", + "+0.001 * ZZZZZZZZZXIIIIYZZZYI\n", + "-0.001 * IIIIIIIIIXZIIIYZZZYI\n", + "+0.001 * ZZZZZZZZZXIIIIXZZZXI\n", + "-0.001 * IIIIIIIIIXZIIIXZZZXI\n", + "-0.017 * ZZZZZZZZZXIIIYZZZZYI\n", + "+0.017 * IIIIIIIIIXZIIYZZZZYI\n", + "-0.017 * ZZZZZZZZZXIIIXZZZZXI\n", + "+0.017 * IIIIIIIIIXZIIXZZZZXI\n", + "-0.003 * ZZZZZZZXIIIIYZZZZZYI\n", + "+0.003 * IIIIIIIXZZZIYZZZZZYI\n", + "-0.003 * ZZZZZZZXIIIIXZZZZZXI\n", + "+0.003 * IIIIIIIXZZZIXZZZZZXI\n", + "+0.004 * ZZZZZZXIIIIIIIIIYZYI\n", + "-0.004 * IIIIIIXZZZZIIIIIYZYI\n", + "+0.004 * ZZZZZZXIIIIIIIIIXZXI\n", + "-0.004 * IIIIIIXZZZZIIIIIXZXI\n", + "-0.000 * ZZZZZZXIIIIIIIIYZZYI\n", + "+0.000 * IIIIIIXZZZZIIIIYZZYI\n", + "-0.000 * ZZZZZZXIIIIIIIIXZZXI\n", + "+0.000 * IIIIIIXZZZZIIIIXZZXI\n", + "+0.003 * ZZZZZXIIIIIIIIIIIYYI\n", + "-0.003 * IIIIIXZZZZZIIIIIIYYI\n", + "+0.003 * ZZZZZXIIIIIIIIIIIXXI\n", + "-0.003 * IIIIIXZZZZZIIIIIIXXI\n", + "-0.004 * ZZZZZXIIIIIYZZZZZZYI\n", + "+0.004 * IIIIIXZZZZZYZZZZZZYI\n", + "-0.004 * ZZZZZXIIIIIXZZZZZZXI\n", + "+0.004 * IIIIIXZZZZZXZZZZZZXI\n", + "-0.000 * ZZZZXIIIIIIIIIIIIYYI\n", + "+0.000 * IIIIXZZZZZZIIIIIIYYI\n", + "-0.000 * ZZZZXIIIIIIIIIIIIXXI\n", + "+0.000 * IIIIXZZZZZZIIIIIIXXI\n", + "+0.000 * ZZZZXIIIIIIYZZZZZZYI\n", + "-0.000 * IIIIXZZZZZZYZZZZZZYI\n", + "+0.000 * ZZZZXIIIIIIXZZZZZZXI\n", + "-0.000 * IIIIXZZZZZZXZZZZZZXI\n", + "+0.000 * ZZZXIIIIIIIIYZZZZZYI\n", + "-0.000 * IIIXZZZZZZZIYZZZZZYI\n", + "+0.000 * ZZZXIIIIIIIIXZZZZZXI\n", + "-0.000 * IIIXZZZZZZZIXZZZZZXI\n", + "-0.007 * ZZXIIIIIIIIIYZZZZZYI\n", + "+0.007 * IIXZZZZZZZZIYZZZZZYI\n", + "-0.007 * ZZXIIIIIIIIIXZZZZZXI\n", + "+0.007 * IIXZZZZZZZZIXZZZZZXI\n", + "-0.006 * ZXIIIIIIIIIIIIIIIIZI\n", + "+0.006 * IXZZZZZZZZZIIIIIIIZI\n", + "+0.001 * ZXIIIIIIIIIIIIYZZZYI\n", + "-0.001 * IXZZZZZZZZZIIIYZZZYI\n", + "+0.001 * ZXIIIIIIIIIIIIXZZZXI\n", + "-0.001 * IXZZZZZZZZZIIIXZZZXI\n", + "-0.014 * ZXIIIIIIIIIIIYZZZZYI\n", + "+0.014 * IXZZZZZZZZZIIYZZZZYI\n", + "-0.014 * ZXIIIIIIIIIIIXZZZZXI\n", + "+0.014 * IXZZZZZZZZZIIXZZZZXI\n", + "-0.014 * XIIIIIIIIIIIIIIIYZYI\n", + "+0.014 * XZZZZZZZZZZIIIIIYZYI\n", + "-0.014 * XIIIIIIIIIIIIIIIXZXI\n", + "+0.014 * XZZZZZZZZZZIIIIIXZXI\n", + "+0.000 * XIIIIIIIIIIIIIIYZZYI\n", + "-0.000 * XZZZZZZZZZZIIIIYZZYI\n", + "+0.000 * XIIIIIIIIIIIIIIXZZXI\n", + "-0.000 * XZZZZZZZZZZIIIIXZZXI\n", + "+0.123 * IIIIIIIIIIZIIIIIIIZI\n", + "-0.000 * IIIIIIIIIIZIIIYZZZYI\n", + "-0.000 * IIIIIIIIIIZIIIXZZZXI\n", + "+0.004 * IIIIIIIIIIZIIYZZZZYI\n", + "+0.004 * IIIIIIIIIIZIIXZZZZXI\n", + "-0.015 * IIIIIIIIIYYIIIIIYZYI\n", + "-0.015 * IIIIIIIIIXXIIIIIYZYI\n", + "-0.015 * IIIIIIIIIYYIIIIIXZXI\n", + "-0.015 * IIIIIIIIIXXIIIIIXZXI\n", + "+0.001 * IIIIIIIIIYYIIIIYZZYI\n", + "+0.001 * IIIIIIIIIXXIIIIYZZYI\n", + "+0.001 * IIIIIIIIIYYIIIIXZZXI\n", + "+0.001 * IIIIIIIIIXXIIIIXZZXI\n", + "-0.001 * IIIIIIIYZZYIIIIIIYYI\n", + "-0.001 * IIIIIIIXZZXIIIIIIYYI\n", + "-0.001 * IIIIIIIYZZYIIIIIIXXI\n", + "-0.001 * IIIIIIIXZZXIIIIIIXXI\n", + "+0.002 * IIIIIIIYZZYYZZZZZZYI\n", + "+0.002 * IIIIIIIXZZXYZZZZZZYI\n", + "+0.002 * IIIIIIIYZZYXZZZZZZXI\n", + "+0.002 * IIIIIIIXZZXXZZZZZZXI\n", + "-0.011 * IIIIIIYZZZYIIIIIIIZI\n", + "-0.011 * IIIIIIXZZZXIIIIIIIZI\n", + "-0.001 * IIIIIIYZZZYIIIYZZZYI\n", + "-0.001 * IIIIIIXZZZXIIIYZZZYI\n", + "-0.001 * IIIIIIYZZZYIIIXZZZXI\n", + "-0.001 * IIIIIIXZZZXIIIXZZZXI\n", + "+0.014 * IIIIIIYZZZYIIYZZZZYI\n", + "+0.014 * IIIIIIXZZZXIIYZZZZYI\n", + "+0.014 * IIIIIIYZZZYIIXZZZZXI\n", + "+0.014 * IIIIIIXZZZXIIXZZZZXI\n", + "-0.002 * IIIIIYZZZZYIYZZZZZYI\n", + "-0.002 * IIIIIXZZZZXIYZZZZZYI\n", + "-0.002 * IIIIIYZZZZYIXZZZZZXI\n", + "-0.002 * IIIIIXZZZZXIXZZZZZXI\n", + "+0.000 * IIIIYZZZZZYIYZZZZZYI\n", + "+0.000 * IIIIXZZZZZXIYZZZZZYI\n", + "+0.000 * IIIIYZZZZZYIXZZZZZXI\n", + "+0.000 * IIIIXZZZZZXIXZZZZZXI\n", + "-0.000 * IIIYZZZZZZYIIIIIIYYI\n", + "-0.000 * IIIXZZZZZZXIIIIIIYYI\n", + "-0.000 * IIIYZZZZZZYIIIIIIXXI\n", + "-0.000 * IIIXZZZZZZXIIIIIIXXI\n", + "+0.000 * IIIYZZZZZZYYZZZZZZYI\n", + "+0.000 * IIIXZZZZZZXYZZZZZZYI\n", + "+0.000 * IIIYZZZZZZYXZZZZZZXI\n", + "+0.000 * IIIXZZZZZZXXZZZZZZXI\n", + "+0.004 * IIYZZZZZZZYIIIIIIYYI\n", + "+0.004 * IIXZZZZZZZXIIIIIIYYI\n", + "+0.004 * IIYZZZZZZZYIIIIIIXXI\n", + "+0.004 * IIXZZZZZZZXIIIIIIXXI\n", + "-0.004 * IIYZZZZZZZYYZZZZZZYI\n", + "-0.004 * IIXZZZZZZZXYZZZZZZYI\n", + "-0.004 * IIYZZZZZZZYXZZZZZZXI\n", + "-0.004 * IIXZZZZZZZXXZZZZZZXI\n", + "-0.018 * IYZZZZZZZZYIIIIIYZYI\n", + "-0.018 * IXZZZZZZZZXIIIIIYZYI\n", + "-0.018 * IYZZZZZZZZYIIIIIXZXI\n", + "-0.018 * IXZZZZZZZZXIIIIIXZXI\n", + "+0.001 * IYZZZZZZZZYIIIIYZZYI\n", + "+0.001 * IXZZZZZZZZXIIIIYZZYI\n", + "+0.001 * IYZZZZZZZZYIIIIXZZXI\n", + "+0.001 * IXZZZZZZZZXIIIIXZZXI\n", + "-0.002 * YZZZZZZZZZYIIIIIIIZI\n", + "-0.002 * XZZZZZZZZZXIIIIIIIZI\n", + "+0.001 * YZZZZZZZZZYIIIYZZZYI\n", + "+0.001 * XZZZZZZZZZXIIIYZZZYI\n", + "+0.001 * YZZZZZZZZZYIIIXZZZXI\n", + "+0.001 * XZZZZZZZZZXIIIXZZZXI\n", + "-0.015 * YZZZZZZZZZYIIYZZZZYI\n", + "-0.015 * XZZZZZZZZZXIIYZZZZYI\n", + "-0.015 * YZZZZZZZZZYIIXZZZZXI\n", + "-0.015 * XZZZZZZZZZXIIXZZZZXI\n", + "+0.110 * IIIIIIIIIZIIIIIIIIZI\n", + "-0.000 * IIIIIIIIIZIIIIYZZZYI\n", + "-0.000 * IIIIIIIIIZIIIIXZZZXI\n", + "+0.009 * IIIIIIIIIZIIIYZZZZYI\n", + "+0.009 * IIIIIIIIIZIIIXZZZZXI\n", + "+0.004 * IIIIIIIYZYIIYZZZZZYI\n", + "+0.004 * IIIIIIIXZXIIYZZZZZYI\n", + "+0.004 * IIIIIIIYZYIIXZZZZZXI\n", + "+0.004 * IIIIIIIXZXIIXZZZZZXI\n", + "+0.048 * IIIIIIYZZYIIIIIIYZYI\n", + "+0.048 * IIIIIIXZZXIIIIIIYZYI\n", + "+0.048 * IIIIIIYZZYIIIIIIXZXI\n", + "+0.048 * IIIIIIXZZXIIIIIIXZXI\n", + "-0.002 * IIIIIIYZZYIIIIIYZZYI\n", + "-0.002 * IIIIIIXZZXIIIIIYZZYI\n", + "-0.002 * IIIIIIYZZYIIIIIXZZXI\n", + "-0.002 * IIIIIIXZZXIIIIIXZZXI\n", + "+0.006 * IIIIIYZZZYIIIIIIIYYI\n", + "+0.006 * IIIIIXZZZXIIIIIIIYYI\n", + "+0.006 * IIIIIYZZZYIIIIIIIXXI\n", + "+0.006 * IIIIIXZZZXIIIIIIIXXI\n", + "-0.002 * IIIIIYZZZYIYZZZZZZYI\n", + "-0.002 * IIIIIXZZZXIYZZZZZZYI\n", + "-0.002 * IIIIIYZZZYIXZZZZZZXI\n", + "-0.002 * IIIIIXZZZXIXZZZZZZXI\n", + "-0.000 * IIIIYZZZZYIIIIIIIYYI\n", + "-0.000 * IIIIXZZZZXIIIIIIIYYI\n", + "-0.000 * IIIIYZZZZYIIIIIIIXXI\n", + "-0.000 * IIIIXZZZZXIIIIIIIXXI\n", + "+0.000 * IIIIYZZZZYIYZZZZZZYI\n", + "+0.000 * IIIIXZZZZXIYZZZZZZYI\n", + "+0.000 * IIIIYZZZZYIXZZZZZZXI\n", + "+0.000 * IIIIXZZZZXIXZZZZZZXI\n", + "-0.000 * IIIYZZZZZYIIYZZZZZYI\n", + "-0.000 * IIIXZZZZZXIIYZZZZZYI\n", + "-0.000 * IIIYZZZZZYIIXZZZZZXI\n", + "-0.000 * IIIXZZZZZXIIXZZZZZXI\n", + "+0.005 * IIYZZZZZZYIIYZZZZZYI\n", + "+0.005 * IIXZZZZZZXIIYZZZZZYI\n", + "+0.005 * IIYZZZZZZYIIXZZZZZXI\n", + "+0.005 * IIXZZZZZZXIIXZZZZZXI\n", + "-0.006 * IYZZZZZZZYIIIIIIIIZI\n", + "-0.006 * IXZZZZZZZXIIIIIIIIZI\n", + "-0.001 * IYZZZZZZZYIIIIYZZZYI\n", + "-0.001 * IXZZZZZZZXIIIIYZZZYI\n", + "-0.001 * IYZZZZZZZYIIIIXZZZXI\n", + "-0.001 * IXZZZZZZZXIIIIXZZZXI\n", + "+0.016 * IYZZZZZZZYIIIYZZZZYI\n", + "+0.016 * IXZZZZZZZXIIIYZZZZYI\n", + "+0.016 * IYZZZZZZZYIIIXZZZZXI\n", + "+0.016 * IXZZZZZZZXIIIXZZZZXI\n", + "+0.004 * YZZZZZZZZYIIIIIIYZYI\n", + "+0.004 * XZZZZZZZZXIIIIIIYZYI\n", + "+0.004 * YZZZZZZZZYIIIIIIXZXI\n", + "+0.004 * XZZZZZZZZXIIIIIIXZXI\n", + "-0.000 * YZZZZZZZZYIIIIIYZZYI\n", + "-0.000 * XZZZZZZZZXIIIIIYZZYI\n", + "-0.000 * YZZZZZZZZYIIIIIXZZXI\n", + "-0.000 * XZZZZZZZZXIIIIIXZZXI\n", + "+0.114 * IIIIIIIIZIIIIIIIIIZI\n", + "+0.000 * IIIIIIIIZIIIIIYZZZYI\n", + "+0.000 * IIIIIIIIZIIIIIXZZZXI\n", + "-0.004 * IIIIIIIIZIIIIYZZZZYI\n", + "-0.004 * IIIIIIIIZIIIIXZZZZXI\n", + "+0.000 * IIIIIIIYYIIIIIYZZZYI\n", + "+0.000 * IIIIIIIXXIIIIIYZZZYI\n", + "+0.000 * IIIIIIIYYIIIIIXZZZXI\n", + "+0.000 * IIIIIIIXXIIIIIXZZZXI\n", + "+0.000 * IIIIIIIYYIIIIYZZZZYI\n", + "+0.000 * IIIIIIIXXIIIIYZZZZYI\n", + "+0.000 * IIIIIIIYYIIIIXZZZZXI\n", + "+0.000 * IIIIIIIXXIIIIXZZZZXI\n", + "+0.002 * IIIIIYZZYIIIIIIIYZYI\n", + "+0.002 * IIIIIXZZXIIIIIIIYZYI\n", + "+0.002 * IIIIIYZZYIIIIIIIXZXI\n", + "+0.002 * IIIIIXZZXIIIIIIIXZXI\n", + "+0.003 * IIIIIYZZYIIIIIIYZZYI\n", + "+0.003 * IIIIIXZZXIIIIIIYZZYI\n", + "+0.003 * IIIIIYZZYIIIIIIXZZXI\n", + "+0.003 * IIIIIXZZXIIIIIIXZZXI\n", + "+0.042 * IIIIYZZZYIIIIIIIYZYI\n", + "+0.042 * IIIIXZZZXIIIIIIIYZYI\n", + "+0.042 * IIIIYZZZYIIIIIIIXZXI\n", + "+0.042 * IIIIXZZZXIIIIIIIXZXI\n", + "-0.002 * IIIIYZZZYIIIIIIYZZYI\n", + "-0.002 * IIIIXZZZXIIIIIIYZZYI\n", + "-0.002 * IIIIYZZZYIIIIIIXZZXI\n", + "-0.002 * IIIIXZZZXIIIIIIXZZXI\n", + "-0.004 * IIIYZZZZYIIIIIIIIIZI\n", + "-0.004 * IIIXZZZZXIIIIIIIIIZI\n", + "-0.001 * IIIYZZZZYIIIIIYZZZYI\n", + "-0.001 * IIIXZZZZXIIIIIYZZZYI\n", + "-0.001 * IIIYZZZZYIIIIIXZZZXI\n", + "-0.001 * IIIXZZZZXIIIIIXZZZXI\n", + "+0.023 * IIIYZZZZYIIIIYZZZZYI\n", + "+0.023 * IIIXZZZZXIIIIYZZZZYI\n", + "+0.023 * IIIYZZZZYIIIIXZZZZXI\n", + "+0.023 * IIIXZZZZXIIIIXZZZZXI\n", + "-0.000 * IIYZZZZZYIIIIIIIIIZI\n", + "-0.000 * IIXZZZZZXIIIIIIIIIZI\n", + "+0.003 * IIYZZZZZYIIIIIYZZZYI\n", + "+0.003 * IIXZZZZZXIIIIIYZZZYI\n", + "+0.003 * IIYZZZZZYIIIIIXZZZXI\n", + "+0.003 * IIXZZZZZXIIIIIXZZZXI\n", + "+0.001 * IIYZZZZZYIIIIYZZZZYI\n", + "+0.001 * IIXZZZZZXIIIIYZZZZYI\n", + "+0.001 * IIYZZZZZYIIIIXZZZZXI\n", + "+0.001 * IIXZZZZZXIIIIXZZZZXI\n", + "+0.122 * IIIIIIIZIIIIIIIIIIZI\n", + "+0.000 * IIIIIIIZIIIIIIYZZZYI\n", + "+0.000 * IIIIIIIZIIIIIIXZZZXI\n", + "-0.004 * IIIIIIIZIIIIIYZZZZYI\n", + "-0.004 * IIIIIIIZIIIIIXZZZZXI\n", + "+0.005 * IIIIIIYYIIIIIIIIIYYI\n", + "+0.005 * IIIIIIXXIIIIIIIIIYYI\n", + "+0.005 * IIIIIIYYIIIIIIIIIXXI\n", + "+0.005 * IIIIIIXXIIIIIIIIIXXI\n", + "-0.002 * IIIIIIYYIIIYZZZZZZYI\n", + "-0.002 * IIIIIIXXIIIYZZZZZZYI\n", + "-0.002 * IIIIIIYYIIIXZZZZZZXI\n", + "-0.002 * IIIIIIXXIIIXZZZZZZXI\n", + "+0.049 * IIIIIYZYIIIIIIIIYZYI\n", + "+0.049 * IIIIIXZXIIIIIIIIYZYI\n", + "+0.049 * IIIIIYZYIIIIIIIIXZXI\n", + "+0.049 * IIIIIXZXIIIIIIIIXZXI\n", + "-0.002 * IIIIIYZYIIIIIIIYZZYI\n", + "-0.002 * IIIIIXZXIIIIIIIYZZYI\n", + "-0.002 * IIIIIYZYIIIIIIIXZZXI\n", + "-0.002 * IIIIIXZXIIIIIIIXZZXI\n", + "-0.002 * IIIIYZZYIIIIIIIIYZYI\n", + "-0.002 * IIIIXZZXIIIIIIIIYZYI\n", + "-0.002 * IIIIYZZYIIIIIIIIXZXI\n", + "-0.002 * IIIIXZZXIIIIIIIIXZXI\n", + "+0.004 * IIIIYZZYIIIIIIIYZZYI\n", + "+0.004 * IIIIXZZXIIIIIIIYZZYI\n", + "+0.004 * IIIIYZZYIIIIIIIXZZXI\n", + "+0.004 * IIIIXZZXIIIIIIIXZZXI\n", + "+0.000 * IIIYZZZYIIIIIIIIIIZI\n", + "+0.000 * IIIXZZZXIIIIIIIIIIZI\n", + "+0.004 * IIIYZZZYIIIIIIYZZZYI\n", + "+0.004 * IIIXZZZXIIIIIIYZZZYI\n", + "+0.004 * IIIYZZZYIIIIIIXZZZXI\n", + "+0.004 * IIIXZZZXIIIIIIXZZZXI\n", + "-0.001 * IIIYZZZYIIIIIYZZZZYI\n", + "-0.001 * IIIXZZZXIIIIIYZZZZYI\n", + "-0.001 * IIIYZZZYIIIIIXZZZZXI\n", + "-0.001 * IIIXZZZXIIIIIXZZZZXI\n", + "-0.004 * IIYZZZZYIIIIIIIIIIZI\n", + "-0.004 * IIXZZZZXIIIIIIIIIIZI\n", + "-0.001 * IIYZZZZYIIIIIIYZZZYI\n", + "-0.001 * IIXZZZZXIIIIIIYZZZYI\n", + "-0.001 * IIYZZZZYIIIIIIXZZZXI\n", + "-0.001 * IIXZZZZXIIIIIIXZZZXI\n", + "+0.029 * IIYZZZZYIIIIIYZZZZYI\n", + "+0.029 * IIXZZZZXIIIIIYZZZZYI\n", + "+0.029 * IIYZZZZYIIIIIXZZZZXI\n", + "+0.029 * IIXZZZZXIIIIIXZZZZXI\n", + "+0.008 * IYZZZZZYIIIIYZZZZZYI\n", + "+0.008 * IXZZZZZXIIIIYZZZZZYI\n", + "+0.008 * IYZZZZZYIIIIXZZZZZXI\n", + "+0.008 * IXZZZZZXIIIIXZZZZZXI\n", + "-0.002 * YZZZZZZYIIIIIIIIIYYI\n", + "-0.002 * XZZZZZZXIIIIIIIIIYYI\n", + "-0.002 * YZZZZZZYIIIIIIIIIXXI\n", + "-0.002 * XZZZZZZXIIIIIIIIIXXI\n", + "+0.005 * YZZZZZZYIIIYZZZZZZYI\n", + "+0.005 * XZZZZZZXIIIYZZZZZZYI\n", + "+0.005 * YZZZZZZYIIIXZZZZZZXI\n", + "+0.005 * XZZZZZZXIIIXZZZZZZXI\n", + "+0.111 * IIIIIIZIIIIIIIIIIIZI\n", + "-0.001 * IIIIIIZIIIIIIIYZZZYI\n", + "-0.001 * IIIIIIZIIIIIIIXZZZXI\n", + "+0.011 * IIIIIIZIIIIIIYZZZZYI\n", + "+0.011 * IIIIIIZIIIIIIXZZZZXI\n", + "-0.000 * IIIIIYYIIIIIYZZZZZYI\n", + "-0.000 * IIIIIXXIIIIIYZZZZZYI\n", + "-0.000 * IIIIIYYIIIIIXZZZZZXI\n", + "-0.000 * IIIIIXXIIIIIXZZZZZXI\n", + "+0.000 * IIIIYZYIIIIIYZZZZZYI\n", + "+0.000 * IIIIXZXIIIIIYZZZZZYI\n", + "+0.000 * IIIIYZYIIIIIXZZZZZXI\n", + "+0.000 * IIIIXZXIIIIIXZZZZZXI\n", + "+0.000 * IIIYZZYIIIIIIIIIIYYI\n", + "+0.000 * IIIXZZXIIIIIIIIIIYYI\n", + "+0.000 * IIIYZZYIIIIIIIIIIXXI\n", + "+0.000 * IIIXZZXIIIIIIIIIIXXI\n", + "+0.000 * IIIYZZYIIIIYZZZZZZYI\n", + "+0.000 * IIIXZZXIIIIYZZZZZZYI\n", + "+0.000 * IIIYZZYIIIIXZZZZZZXI\n", + "+0.000 * IIIXZZXIIIIXZZZZZZXI\n", + "-0.003 * IIYZZZYIIIIIIIIIIYYI\n", + "-0.003 * IIXZZZXIIIIIIIIIIYYI\n", + "-0.003 * IIYZZZYIIIIIIIIIIXXI\n", + "-0.003 * IIXZZZXIIIIIIIIIIXXI\n", + "-0.001 * IIYZZZYIIIIYZZZZZZYI\n", + "-0.001 * IIXZZZXIIIIYZZZZZZYI\n", + "-0.001 * IIYZZZYIIIIXZZZZZZXI\n", + "-0.001 * IIXZZZXIIIIXZZZZZZXI\n", + "-0.021 * IYZZZZYIIIIIIIIIYZYI\n", + "-0.021 * IXZZZZXIIIIIIIIIYZYI\n", + "-0.021 * IYZZZZYIIIIIIIIIXZXI\n", + "-0.021 * IXZZZZXIIIIIIIIIXZXI\n", + "+0.001 * IYZZZZYIIIIIIIIYZZYI\n", + "+0.001 * IXZZZZXIIIIIIIIYZZYI\n", + "+0.001 * IYZZZZYIIIIIIIIXZZXI\n", + "+0.001 * IXZZZZXIIIIIIIIXZZXI\n", + "+0.008 * YZZZZZYIIIIIIIIIIIZI\n", + "+0.008 * XZZZZZXIIIIIIIIIIIZI\n", + "+0.001 * YZZZZZYIIIIIIIYZZZYI\n", + "+0.001 * XZZZZZXIIIIIIIYZZZYI\n", + "+0.001 * YZZZZZYIIIIIIIXZZZXI\n", + "+0.001 * XZZZZZXIIIIIIIXZZZXI\n", + "-0.015 * YZZZZZYIIIIIIYZZZZYI\n", + "-0.015 * XZZZZZXIIIIIIYZZZZYI\n", + "-0.015 * YZZZZZYIIIIIIXZZZZXI\n", + "-0.015 * XZZZZZXIIIIIIXZZZZXI\n", + "+0.119 * IIIIIZIIIIIIIIIIIIZI\n", + "-0.001 * IIIIIZIIIIIIIIYZZZYI\n", + "-0.001 * IIIIIZIIIIIIIIXZZZXI\n", + "+0.021 * IIIIIZIIIIIIIYZZZZYI\n", + "+0.021 * IIIIIZIIIIIIIXZZZZXI\n", + "+0.000 * IIIIYYIIIIIIIIIIIIZI\n", + "+0.000 * IIIIXXIIIIIIIIIIIIZI\n", + "-0.003 * IIIIYYIIIIIIIIYZZZYI\n", + "-0.003 * IIIIXXIIIIIIIIYZZZYI\n", + "-0.003 * IIIIYYIIIIIIIIXZZZXI\n", + "-0.003 * IIIIXXIIIIIIIIXZZZXI\n", + "+0.000 * IIIIYYIIIIIIIYZZZZYI\n", + "+0.000 * IIIIXXIIIIIIIYZZZZYI\n", + "+0.000 * IIIIYYIIIIIIIXZZZZXI\n", + "+0.000 * IIIIXXIIIIIIIXZZZZXI\n", + "+0.001 * IIIYZYIIIIIIIIIIYZYI\n", + "+0.001 * IIIXZXIIIIIIIIIIYZYI\n", + "+0.001 * IIIYZYIIIIIIIIIIXZXI\n", + "+0.001 * IIIXZXIIIIIIIIIIXZXI\n", + "-0.003 * IIIYZYIIIIIIIIIYZZYI\n", + "-0.003 * IIIXZXIIIIIIIIIYZZYI\n", + "-0.003 * IIIYZYIIIIIIIIIXZZXI\n", + "-0.003 * IIIXZXIIIIIIIIIXZZXI\n", + "-0.041 * IIYZZYIIIIIIIIIIYZYI\n", + "-0.041 * IIXZZXIIIIIIIIIIYZYI\n", + "-0.041 * IIYZZYIIIIIIIIIIXZXI\n", + "-0.041 * IIXZZXIIIIIIIIIIXZXI\n", + "+0.001 * IIYZZYIIIIIIIIIYZZYI\n", + "+0.001 * IIXZZXIIIIIIIIIYZZYI\n", + "+0.001 * IIYZZYIIIIIIIIIXZZXI\n", + "+0.001 * IIXZZXIIIIIIIIIXZZXI\n", + "-0.001 * IYZZZYIIIIIIIIIIIYYI\n", + "-0.001 * IXZZZXIIIIIIIIIIIYYI\n", + "-0.001 * IYZZZYIIIIIIIIIIIXXI\n", + "-0.001 * IXZZZXIIIIIIIIIIIXXI\n", + "-0.003 * IYZZZYIIIIIYZZZZZZYI\n", + "-0.003 * IXZZZXIIIIIYZZZZZZYI\n", + "-0.003 * IYZZZYIIIIIXZZZZZZXI\n", + "-0.003 * IXZZZXIIIIIXZZZZZZXI\n", + "-0.004 * YZZZZYIIIIIIYZZZZZYI\n", + "-0.004 * XZZZZXIIIIIIYZZZZZYI\n", + "-0.004 * YZZZZYIIIIIIXZZZZZXI\n", + "-0.004 * XZZZZXIIIIIIXZZZZZXI\n", + "+0.112 * IIIIZIIIIIIIIIIIIIZI\n", + "-0.001 * IIIIZIIIIIIIIIYZZZYI\n", + "-0.001 * IIIIZIIIIIIIIIXZZZXI\n", + "+0.016 * IIIIZIIIIIIIIYZZZZYI\n", + "+0.016 * IIIIZIIIIIIIIXZZZZXI\n", + "-0.035 * IIIYYIIIIIIIIIIIYZYI\n", + "-0.035 * IIIXXIIIIIIIIIIIYZYI\n", + "-0.035 * IIIYYIIIIIIIIIIIXZXI\n", + "-0.035 * IIIXXIIIIIIIIIIIXZXI\n", + "+0.001 * IIIYYIIIIIIIIIIYZZYI\n", + "+0.001 * IIIXXIIIIIIIIIIYZZYI\n", + "+0.001 * IIIYYIIIIIIIIIIXZZXI\n", + "+0.001 * IIIXXIIIIIIIIIIXZZXI\n", + "-0.001 * IIYZYIIIIIIIIIIIYZYI\n", + "-0.001 * IIXZXIIIIIIIIIIIYZYI\n", + "-0.001 * IIYZYIIIIIIIIIIIXZXI\n", + "-0.001 * IIXZXIIIIIIIIIIIXZXI\n", + "-0.003 * IIYZYIIIIIIIIIIYZZYI\n", + "-0.003 * IIXZXIIIIIIIIIIYZZYI\n", + "-0.003 * IIYZYIIIIIIIIIIXZZXI\n", + "-0.003 * IIXZXIIIIIIIIIIXZZXI\n", + "+0.000 * IYZZYIIIIIIIIIIIIYYI\n", + "+0.000 * IXZZXIIIIIIIIIIIIYYI\n", + "+0.000 * IYZZYIIIIIIIIIIIIXXI\n", + "+0.000 * IXZZXIIIIIIIIIIIIXXI\n", + "+0.000 * IYZZYIIIIIIYZZZZZZYI\n", + "+0.000 * IXZZXIIIIIIYZZZZZZYI\n", + "+0.000 * IYZZYIIIIIIXZZZZZZXI\n", + "+0.000 * IXZZXIIIIIIXZZZZZZXI\n", + "+0.000 * YZZZYIIIIIIIYZZZZZYI\n", + "+0.000 * XZZZXIIIIIIIYZZZZZYI\n", + "+0.000 * YZZZYIIIIIIIXZZZZZXI\n", + "+0.000 * XZZZXIIIIIIIXZZZZZXI\n", + "+0.118 * IIIZIIIIIIIIIIIIIIZI\n", + "+0.001 * IIIZIIIIIIIIIIYZZZYI\n", + "+0.001 * IIIZIIIIIIIIIIXZZZXI\n", + "-0.009 * IIIZIIIIIIIIIYZZZZYI\n", + "-0.009 * IIIZIIIIIIIIIXZZZZXI\n", + "+0.000 * IIYYIIIIIIIIIIIIIIZI\n", + "+0.000 * IIXXIIIIIIIIIIIIIIZI\n", + "+0.001 * IIYYIIIIIIIIIIYZZZYI\n", + "+0.001 * IIXXIIIIIIIIIIYZZZYI\n", + "+0.001 * IIYYIIIIIIIIIIXZZZXI\n", + "+0.001 * IIXXIIIIIIIIIIXZZZXI\n", + "-0.000 * IIYYIIIIIIIIIYZZZZYI\n", + "-0.000 * IIXXIIIIIIIIIYZZZZYI\n", + "-0.000 * IIYYIIIIIIIIIXZZZZXI\n", + "-0.000 * IIXXIIIIIIIIIXZZZZXI\n", + "-0.000 * IYZYIIIIIIIIYZZZZZYI\n", + "-0.000 * IXZXIIIIIIIIYZZZZZYI\n", + "-0.000 * IYZYIIIIIIIIXZZZZZXI\n", + "-0.000 * IXZXIIIIIIIIXZZZZZXI\n", + "+0.000 * YZZYIIIIIIIIIIIIIYYI\n", + "+0.000 * XZZXIIIIIIIIIIIIIYYI\n", + "+0.000 * YZZYIIIIIIIIIIIIIXXI\n", + "+0.000 * XZZXIIIIIIIIIIIIIXXI\n", + "-0.000 * YZZYIIIIIIIYZZZZZZYI\n", + "-0.000 * XZZXIIIIIIIYZZZZZZYI\n", + "-0.000 * YZZYIIIIIIIXZZZZZZXI\n", + "-0.000 * XZZXIIIIIIIXZZZZZZXI\n", + "+0.126 * IIZIIIIIIIIIIIIIIIZI\n", + "+0.000 * IIZIIIIIIIIIIIYZZZYI\n", + "+0.000 * IIZIIIIIIIIIIIXZZZXI\n", + "-0.011 * IIZIIIIIIIIIIYZZZZYI\n", + "-0.011 * IIZIIIIIIIIIIXZZZZXI\n", + "+0.006 * IYYIIIIIIIIIYZZZZZYI\n", + "+0.006 * IXXIIIIIIIIIYZZZZZYI\n", + "+0.006 * IYYIIIIIIIIIXZZZZZXI\n", + "+0.006 * IXXIIIIIIIIIXZZZZZXI\n", + "-0.002 * YZYIIIIIIIIIIIIIIYYI\n", + "-0.002 * XZXIIIIIIIIIIIIIIYYI\n", + "-0.002 * YZYIIIIIIIIIIIIIIXXI\n", + "-0.002 * XZXIIIIIIIIIIIIIIXXI\n", + "+0.000 * YZYIIIIIIIIYZZZZZZYI\n", + "+0.000 * XZXIIIIIIIIYZZZZZZYI\n", + "+0.000 * YZYIIIIIIIIXZZZZZZXI\n", + "+0.000 * XZXIIIIIIIIXZZZZZZXI\n", + "+0.124 * IZIIIIIIIIIIIIIIIIZI\n", + "+0.000 * IZIIIIIIIIIIIIYZZZYI\n", + "+0.000 * IZIIIIIIIIIIIIXZZZXI\n", + "-0.006 * IZIIIIIIIIIIIYZZZZYI\n", + "-0.006 * IZIIIIIIIIIIIXZZZZXI\n", + "-0.037 * YYIIIIIIIIIIIIIIYZYI\n", + "-0.037 * XXIIIIIIIIIIIIIIYZYI\n", + "-0.037 * YYIIIIIIIIIIIIIIXZXI\n", + "-0.037 * XXIIIIIIIIIIIIIIXZXI\n", + "+0.001 * YYIIIIIIIIIIIIIYZZYI\n", + "+0.001 * XXIIIIIIIIIIIIIYZZYI\n", + "+0.001 * YYIIIIIIIIIIIIIXZZXI\n", + "+0.001 * XXIIIIIIIIIIIIIXZZXI\n", + "+0.132 * ZIIIIIIIIIIIIIIIIIZI\n", + "+0.001 * ZIIIIIIIIIIIIIYZZZYI\n", + "+0.001 * ZIIIIIIIIIIIIIXZZZXI\n", + "-0.011 * ZIIIIIIIIIIIIYZZZZYI\n", + "-0.011 * ZIIIIIIIIIIIIXZZZZXI\n", + "+0.114 * IIIIIIIIIIIIIIIIZZII\n", + "+0.114 * IIIIIIIIIIIIIIIZIZII\n", + "+0.108 * IIIIIIIIIIIIIIZIIZII\n", + "+0.108 * IIIIIIIIIIIIIZIIIZII\n", + "+0.102 * IIIIIIIIIIIIZIIIIZII\n", + "+0.110 * IIIIIIIIIIIZIIIIIZII\n", + "-0.006 * IIIIIIIIIIIYZZZZIYII\n", + "-0.006 * IIIIIIIIIIIXZZZZIXII\n", + "+0.000 * IIIIIIIIIIIIYZXIXYII\n", + "+0.000 * IIIIIIIIIIIIYZYIYYII\n", + "-0.000 * IIIIIIIIIIIIXZXIYYII\n", + "-0.000 * IIIIIIIIIIIIYZYIXXII\n", + "+0.000 * IIIIIIIIIIIIXZXIXXII\n", + "+0.000 * IIIIIIIIIIIIXZYIYXII\n", + "-0.020 * IIIIIIIIIIIIYXIIXYII\n", + "-0.018 * IIIIIIIIIIIIYYIIYYII\n", + "+0.001 * IIIIIIIIIIIIXXIIYYII\n", + "+0.001 * IIIIIIIIIIIIYYIIXXII\n", + "-0.018 * IIIIIIIIIIIIXXIIXXII\n", + "-0.020 * IIIIIIIIIIIIXYIIYXII\n", + "-0.006 * IIIIIIIIIIIYZZZIZYII\n", + "-0.006 * IIIIIIIIIIIXZZZIZXII\n", + "-0.020 * IIIIIIIIIIIIYZXXZYII\n", + "-0.018 * IIIIIIIIIIIIYZYYZYII\n", + "+0.001 * IIIIIIIIIIIIXZXYZYII\n", + "+0.001 * IIIIIIIIIIIIYZYXZXII\n", + "-0.018 * IIIIIIIIIIIIXZXXZXII\n", + "-0.020 * IIIIIIIIIIIIXZYYZXII\n", + "-0.000 * IIIIIIIIIIIIYXIXZYII\n", + "-0.000 * IIIIIIIIIIIIYYIYZYII\n", + "+0.000 * IIIIIIIIIIIIXXIYZYII\n", + "+0.000 * IIIIIIIIIIIIYYIXZXII\n", + "-0.000 * IIIIIIIIIIIIXXIXZXII\n", + "-0.000 * IIIIIIIIIIIIXYIYZXII\n", + "+0.008 * IIIIIIIIIIIYZZIZZYII\n", + "+0.008 * IIIIIIIIIIIXZZIZZXII\n", + "+0.008 * IIIIIIIIIIIYZIZZZYII\n", + "+0.008 * IIIIIIIIIIIXZIZZZXII\n", + "+0.025 * IIIIIIIIIIIYIZZZZYII\n", + "+0.025 * IIIIIIIIIIIXIZZZZXII\n", + "+0.117 * ZZZZZZZZZZZIIIIIIZII\n", + "+0.007 * ZZZZZZZZZZZYZZZZZYII\n", + "+0.007 * ZZZZZZZZZZZXZZZZZXII\n", + "+0.022 * ZZZZZZZZZZXIYZZZZYII\n", + "-0.022 * IIIIIIIIIIXIYZZZZYII\n", + "+0.022 * ZZZZZZZZZZXIXZZZZXII\n", + "-0.022 * IIIIIIIIIIXIXZZZZXII\n", + "-0.006 * ZZZZZZZZZXIIIIIIIZII\n", + "+0.006 * IIIIIIIIIXZIIIIIIZII\n", + "+0.012 * ZZZZZZZZZXIYZZZZZYII\n", + "-0.012 * IIIIIIIIIXZYZZZZZYII\n", + "+0.012 * ZZZZZZZZZXIXZZZZZXII\n", + "-0.012 * IIIIIIIIIXZXZZZZZXII\n", + "+0.000 * ZZZZZZZZXIIIIIIIYYII\n", + "-0.000 * IIIIIIIIXZZIIIIIYYII\n", + "+0.000 * ZZZZZZZZXIIIIIIIXXII\n", + "-0.000 * IIIIIIIIXZZIIIIIXXII\n", + "+0.004 * ZZZZZZZZXIIIIIIYZYII\n", + "-0.004 * IIIIIIIIXZZIIIIYZYII\n", + "+0.004 * ZZZZZZZZXIIIIIIXZXII\n", + "-0.004 * IIIIIIIIXZZIIIIXZXII\n", + "+0.004 * ZZZZZZZXIIIIIIIIYYII\n", + "-0.004 * IIIIIIIXZZZIIIIIYYII\n", + "+0.004 * ZZZZZZZXIIIIIIIIXXII\n", + "-0.004 * IIIIIIIXZZZIIIIIXXII\n", + "-0.000 * ZZZZZZZXIIIIIIIYZYII\n", + "+0.000 * IIIIIIIXZZZIIIIYZYII\n", + "-0.000 * ZZZZZZZXIIIIIIIXZXII\n", + "+0.000 * IIIIIIIXZZZIIIIXZXII\n", + "-0.005 * ZZZZZZXIIIIIYZZZZYII\n", + "+0.005 * IIIIIIXZZZZIYZZZZYII\n", + "-0.005 * ZZZZZZXIIIIIXZZZZXII\n", + "+0.005 * IIIIIIXZZZZIXZZZZXII\n", + "+0.000 * ZZZZZXIIIIIIIIYZZYII\n", + "-0.000 * IIIIIXZZZZZIIIYZZYII\n", + "+0.000 * ZZZZZXIIIIIIIIXZZXII\n", + "-0.000 * IIIIIXZZZZZIIIXZZXII\n", + "-0.006 * ZZZZZXIIIIIIIYZZZYII\n", + "+0.006 * IIIIIXZZZZZIIYZZZYII\n", + "-0.006 * ZZZZZXIIIIIIIXZZZXII\n", + "+0.006 * IIIIIXZZZZZIIXZZZXII\n", + "-0.006 * ZZZZXIIIIIIIIIYZZYII\n", + "+0.006 * IIIIXZZZZZZIIIYZZYII\n", + "-0.006 * ZZZZXIIIIIIIIIXZZXII\n", + "+0.006 * IIIIXZZZZZZIIIXZZXII\n", + "-0.000 * ZZZZXIIIIIIIIYZZZYII\n", + "+0.000 * IIIIXZZZZZZIIYZZZYII\n", + "-0.000 * ZZZZXIIIIIIIIXZZZXII\n", + "+0.000 * IIIIXZZZZZZIIXZZZXII\n", + "+0.000 * ZZZXIIIIIIIIIIIIYYII\n", + "-0.000 * IIIXZZZZZZZIIIIIYYII\n", + "+0.000 * ZZZXIIIIIIIIIIIIXXII\n", + "-0.000 * IIIXZZZZZZZIIIIIXXII\n", + "-0.005 * ZZZXIIIIIIIIIIIYZYII\n", + "+0.005 * IIIXZZZZZZZIIIIYZYII\n", + "-0.005 * ZZZXIIIIIIIIIIIXZXII\n", + "+0.005 * IIIXZZZZZZZIIIIXZXII\n", + "-0.005 * ZZXIIIIIIIIIIIIIYYII\n", + "+0.005 * IIXZZZZZZZZIIIIIYYII\n", + "-0.005 * ZZXIIIIIIIIIIIIIXXII\n", + "+0.005 * IIXZZZZZZZZIIIIIXXII\n", + "-0.000 * ZZXIIIIIIIIIIIIYZYII\n", + "+0.000 * IIXZZZZZZZZIIIIYZYII\n", + "-0.000 * ZZXIIIIIIIIIIIIXZXII\n", + "+0.000 * IIXZZZZZZZZIIIIXZXII\n", + "-0.008 * ZXIIIIIIIIIIIIIIIZII\n", + "+0.008 * IXZZZZZZZZZIIIIIIZII\n", + "+0.007 * ZXIIIIIIIIIYZZZZZYII\n", + "-0.007 * IXZZZZZZZZZYZZZZZYII\n", + "+0.007 * ZXIIIIIIIIIXZZZZZXII\n", + "-0.007 * IXZZZZZZZZZXZZZZZXII\n", + "+0.008 * XIIIIIIIIIIIYZZZZYII\n", + "-0.008 * XZZZZZZZZZZIYZZZZYII\n", + "+0.008 * XIIIIIIIIIIIXZZZZXII\n", + "-0.008 * XZZZZZZZZZZIXZZZZXII\n", + "+0.121 * IIIIIIIIIIZIIIIIIZII\n", + "+0.004 * IIIIIIIIIIZYZZZZZYII\n", + "+0.004 * IIIIIIIIIIZXZZZZZXII\n", + "+0.010 * IIIIIIIIIYYIYZZZZYII\n", + "+0.010 * IIIIIIIIIXXIYZZZZYII\n", + "+0.010 * IIIIIIIIIYYIXZZZZXII\n", + "+0.010 * IIIIIIIIIXXIXZZZZXII\n", + "+0.006 * IIIIIIIIYZYIIIYZZYII\n", + "+0.006 * IIIIIIIIXZXIIIYZZYII\n", + "+0.006 * IIIIIIIIYZYIIIXZZXII\n", + "+0.006 * IIIIIIIIXZXIIIXZZXII\n", + "+0.000 * IIIIIIIIYZYIIYZZZYII\n", + "+0.000 * IIIIIIIIXZXIIYZZZYII\n", + "+0.000 * IIIIIIIIYZYIIXZZZXII\n", + "+0.000 * IIIIIIIIXZXIIXZZZXII\n", + "-0.000 * IIIIIIIYZZYIIIYZZYII\n", + "-0.000 * IIIIIIIXZZXIIIYZZYII\n", + "-0.000 * IIIIIIIYZZYIIIXZZXII\n", + "-0.000 * IIIIIIIXZZXIIIXZZXII\n", + "+0.006 * IIIIIIIYZZYIIYZZZYII\n", + "+0.006 * IIIIIIIXZZXIIYZZZYII\n", + "+0.006 * IIIIIIIYZZYIIXZZZXII\n", + "+0.006 * IIIIIIIXZZXIIXZZZXII\n", + "+0.004 * IIIIIIYZZZYIIIIIIZII\n", + "+0.004 * IIIIIIXZZZXIIIIIIZII\n", + "-0.012 * IIIIIIYZZZYYZZZZZYII\n", + "-0.012 * IIIIIIXZZZXYZZZZZYII\n", + "-0.012 * IIIIIIYZZZYXZZZZZXII\n", + "-0.012 * IIIIIIXZZZXXZZZZZXII\n", + "-0.006 * IIIIIYZZZZYIIIIIYYII\n", + "-0.006 * IIIIIXZZZZXIIIIIYYII\n", + "-0.006 * IIIIIYZZZZYIIIIIXXII\n", + "-0.006 * IIIIIXZZZZXIIIIIXXII\n", + "-0.006 * IIIIYZZZZZYIIIIYZYII\n", + "-0.006 * IIIIXZZZZZXIIIIYZYII\n", + "-0.006 * IIIIYZZZZZYIIIIXZXII\n", + "-0.006 * IIIIXZZZZZXIIIIXZXII\n", + "-0.003 * IIIYZZZZZZYIIIYZZYII\n", + "-0.003 * IIIXZZZZZZXIIIYZZYII\n", + "-0.003 * IIIYZZZZZZYIIIXZZXII\n", + "-0.003 * IIIXZZZZZZXIIIXZZXII\n", + "-0.003 * IIYZZZZZZZYIIYZZZYII\n", + "-0.003 * IIXZZZZZZZXIIYZZZYII\n", + "-0.003 * IIYZZZZZZZYIIXZZZXII\n", + "-0.003 * IIXZZZZZZZXIIXZZZXII\n", + "+0.009 * IYZZZZZZZZYIYZZZZYII\n", + "+0.009 * IXZZZZZZZZXIYZZZZYII\n", + "+0.009 * IYZZZZZZZZYIXZZZZXII\n", + "+0.009 * IXZZZZZZZZXIXZZZZXII\n", + "-0.004 * YZZZZZZZZZYIIIIIIZII\n", + "-0.004 * XZZZZZZZZZXIIIIIIZII\n", + "+0.011 * YZZZZZZZZZYYZZZZZYII\n", + "+0.011 * XZZZZZZZZZXYZZZZZYII\n", + "+0.011 * YZZZZZZZZZYXZZZZZXII\n", + "+0.011 * XZZZZZZZZZXXZZZZZXII\n", + "+0.128 * IIIIIIIIIZIIIIIIIZII\n", + "-0.006 * IIIIIIIIIZIYZZZZZYII\n", + "-0.006 * IIIIIIIIIZIXZZZZZXII\n", + "+0.000 * IIIIIIIIYYIIIIIIYYII\n", + "+0.000 * IIIIIIIIXXIIIIIIYYII\n", + "+0.000 * IIIIIIIIYYIIIIIIXXII\n", + "+0.000 * IIIIIIIIXXIIIIIIXXII\n", + "+0.006 * IIIIIIIIYYIIIIIYZYII\n", + "+0.006 * IIIIIIIIXXIIIIIYZYII\n", + "+0.006 * IIIIIIIIYYIIIIIXZXII\n", + "+0.006 * IIIIIIIIXXIIIIIXZXII\n", + "+0.006 * IIIIIIIYZYIIIIIIYYII\n", + "+0.006 * IIIIIIIXZXIIIIIIYYII\n", + "+0.006 * IIIIIIIYZYIIIIIIXXII\n", + "+0.006 * IIIIIIIXZXIIIIIIXXII\n", + "-0.000 * IIIIIIIYZYIIIIIYZYII\n", + "-0.000 * IIIIIIIXZXIIIIIYZYII\n", + "-0.000 * IIIIIIIYZYIIIIIXZXII\n", + "-0.000 * IIIIIIIXZXIIIIIXZXII\n", + "-0.031 * IIIIIIYZZYIIYZZZZYII\n", + "-0.031 * IIIIIIXZZXIIYZZZZYII\n", + "-0.031 * IIIIIIYZZYIIXZZZZXII\n", + "-0.031 * IIIIIIXZZXIIXZZZZXII\n", + "+0.000 * IIIIIYZZZYIIIIYZZYII\n", + "+0.000 * IIIIIXZZZXIIIIYZZYII\n", + "+0.000 * IIIIIYZZZYIIIIXZZXII\n", + "+0.000 * IIIIIXZZZXIIIIXZZXII\n", + "-0.006 * IIIIIYZZZYIIIYZZZYII\n", + "-0.006 * IIIIIXZZZXIIIYZZZYII\n", + "-0.006 * IIIIIYZZZYIIIXZZZXII\n", + "-0.006 * IIIIIXZZZXIIIXZZZXII\n", + "-0.006 * IIIIYZZZZYIIIIYZZYII\n", + "-0.006 * IIIIXZZZZXIIIIYZZYII\n", + "-0.006 * IIIIYZZZZYIIIIXZZXII\n", + "-0.006 * IIIIXZZZZXIIIIXZZXII\n", + "-0.000 * IIIIYZZZZYIIIYZZZYII\n", + "-0.000 * IIIIXZZZZXIIIYZZZYII\n", + "-0.000 * IIIIYZZZZYIIIXZZZXII\n", + "-0.000 * IIIIXZZZZXIIIXZZZXII\n", + "+0.000 * IIIYZZZZZYIIIIIIYYII\n", + "+0.000 * IIIXZZZZZXIIIIIIYYII\n", + "+0.000 * IIIYZZZZZYIIIIIIXXII\n", + "+0.000 * IIIXZZZZZXIIIIIIXXII\n", + "-0.006 * IIIYZZZZZYIIIIIYZYII\n", + "-0.006 * IIIXZZZZZXIIIIIYZYII\n", + "-0.006 * IIIYZZZZZYIIIIIXZXII\n", + "-0.006 * IIIXZZZZZXIIIIIXZXII\n", + "-0.006 * IIYZZZZZZYIIIIIIYYII\n", + "-0.006 * IIXZZZZZZXIIIIIIYYII\n", + "-0.006 * IIYZZZZZZYIIIIIIXXII\n", + "-0.006 * IIXZZZZZZXIIIIIIXXII\n", + "-0.000 * IIYZZZZZZYIIIIIYZYII\n", + "-0.000 * IIXZZZZZZXIIIIIYZYII\n", + "-0.000 * IIYZZZZZZYIIIIIXZXII\n", + "-0.000 * IIXZZZZZZXIIIIIXZXII\n", + "+0.013 * IYZZZZZZZYIIIIIIIZII\n", + "+0.013 * IXZZZZZZZXIIIIIIIZII\n", + "-0.014 * IYZZZZZZZYIYZZZZZYII\n", + "-0.014 * IXZZZZZZZXIYZZZZZYII\n", + "-0.014 * IYZZZZZZZYIXZZZZZXII\n", + "-0.014 * IXZZZZZZZXIXZZZZZXII\n", + "-0.008 * YZZZZZZZZYIIYZZZZYII\n", + "-0.008 * XZZZZZZZZXIIYZZZZYII\n", + "-0.008 * YZZZZZZZZYIIXZZZZXII\n", + "-0.008 * XZZZZZZZZXIIXZZZZXII\n", + "+0.111 * IIIIIIIIZIIIIIIIIZII\n", + "+0.008 * IIIIIIIIZIIYZZZZZYII\n", + "+0.008 * IIIIIIIIZIIXZZZZZXII\n", + "-0.003 * IIIIIIYZYIIIIIYZZYII\n", + "-0.003 * IIIIIIXZXIIIIIYZZYII\n", + "-0.003 * IIIIIIYZYIIIIIXZZXII\n", + "-0.003 * IIIIIIXZXIIIIIXZZXII\n", + "-0.000 * IIIIIIYZYIIIIYZZZYII\n", + "-0.000 * IIIIIIXZXIIIIYZZZYII\n", + "-0.000 * IIIIIIYZYIIIIXZZZXII\n", + "-0.000 * IIIIIIXZXIIIIXZZZXII\n", + "-0.001 * IIIIIYZZYIIIYZZZZYII\n", + "-0.001 * IIIIIXZZXIIIYZZZZYII\n", + "-0.001 * IIIIIYZZYIIIXZZZZXII\n", + "-0.001 * IIIIIXZZXIIIXZZZZXII\n", + "-0.021 * IIIIYZZZYIIIYZZZZYII\n", + "-0.021 * IIIIXZZZXIIIYZZZZYII\n", + "-0.021 * IIIIYZZZYIIIXZZZZXII\n", + "-0.021 * IIIIXZZZXIIIXZZZZXII\n", + "+0.011 * IIIYZZZZYIIIIIIIIZII\n", + "+0.011 * IIIXZZZZXIIIIIIIIZII\n", + "-0.015 * IIIYZZZZYIIYZZZZZYII\n", + "-0.015 * IIIXZZZZXIIYZZZZZYII\n", + "-0.015 * IIIYZZZZYIIXZZZZZXII\n", + "-0.015 * IIIXZZZZXIIXZZZZZXII\n", + "+0.001 * IIYZZZZZYIIIIIIIIZII\n", + "+0.001 * IIXZZZZZXIIIIIIIIZII\n", + "-0.001 * IIYZZZZZYIIYZZZZZYII\n", + "-0.001 * IIXZZZZZXIIYZZZZZYII\n", + "-0.001 * IIYZZZZZYIIXZZZZZXII\n", + "-0.001 * IIXZZZZZXIIXZZZZZXII\n", + "-0.000 * IYZZZZZZYIIIIIIIYYII\n", + "-0.000 * IXZZZZZZXIIIIIIIYYII\n", + "-0.000 * IYZZZZZZYIIIIIIIXXII\n", + "-0.000 * IXZZZZZZXIIIIIIIXXII\n", + "-0.000 * IYZZZZZZYIIIIIIYZYII\n", + "-0.000 * IXZZZZZZXIIIIIIYZYII\n", + "-0.000 * IYZZZZZZYIIIIIIXZXII\n", + "-0.000 * IXZZZZZZXIIIIIIXZXII\n", + "-0.001 * YZZZZZZZYIIIIIYZZYII\n", + "-0.001 * XZZZZZZZXIIIIIYZZYII\n", + "-0.001 * YZZZZZZZYIIIIIXZZXII\n", + "-0.001 * XZZZZZZZXIIIIIXZZXII\n", + "-0.000 * YZZZZZZZYIIIIYZZZYII\n", + "-0.000 * XZZZZZZZXIIIIYZZZYII\n", + "-0.000 * YZZZZZZZYIIIIXZZZXII\n", + "-0.000 * XZZZZZZZXIIIIXZZZXII\n", + "+0.111 * IIIIIIIZIIIIIIIIIZII\n", + "+0.008 * IIIIIIIZIIIYZZZZZYII\n", + "+0.008 * IIIIIIIZIIIXZZZZZXII\n", + "+0.000 * IIIIIIYYIIIIIIYZZYII\n", + "+0.000 * IIIIIIXXIIIIIIYZZYII\n", + "+0.000 * IIIIIIYYIIIIIIXZZXII\n", + "+0.000 * IIIIIIXXIIIIIIXZZXII\n", + "-0.003 * IIIIIIYYIIIIIYZZZYII\n", + "-0.003 * IIIIIIXXIIIIIYZZZYII\n", + "-0.003 * IIIIIIYYIIIIIXZZZXII\n", + "-0.003 * IIIIIIXXIIIIIXZZZXII\n", + "-0.021 * IIIIIYZYIIIIYZZZZYII\n", + "-0.021 * IIIIIXZXIIIIYZZZZYII\n", + "-0.021 * IIIIIYZYIIIIXZZZZXII\n", + "-0.021 * IIIIIXZXIIIIXZZZZXII\n", + "+0.001 * IIIIYZZYIIIIYZZZZYII\n", + "+0.001 * IIIIXZZXIIIIYZZZZYII\n", + "+0.001 * IIIIYZZYIIIIXZZZZXII\n", + "+0.001 * IIIIXZZXIIIIXZZZZXII\n", + "-0.001 * IIIYZZZYIIIIIIIIIZII\n", + "-0.001 * IIIXZZZXIIIIIIIIIZII\n", + "+0.001 * IIIYZZZYIIIYZZZZZYII\n", + "+0.001 * IIIXZZZXIIIYZZZZZYII\n", + "+0.001 * IIIYZZZYIIIXZZZZZXII\n", + "+0.001 * IIIXZZZXIIIXZZZZZXII\n", + "+0.011 * IIYZZZZYIIIIIIIIIZII\n", + "+0.011 * IIXZZZZXIIIIIIIIIZII\n", + "-0.015 * IIYZZZZYIIIYZZZZZYII\n", + "-0.015 * IIXZZZZXIIIYZZZZZYII\n", + "-0.015 * IIYZZZZYIIIXZZZZZXII\n", + "-0.015 * IIXZZZZXIIIXZZZZZXII\n", + "-0.000 * IYZZZZZYIIIIIIIIYYII\n", + "-0.000 * IXZZZZZXIIIIIIIIYYII\n", + "-0.000 * IYZZZZZYIIIIIIIIXXII\n", + "-0.000 * IXZZZZZXIIIIIIIIXXII\n", + "+0.000 * IYZZZZZYIIIIIIIYZYII\n", + "+0.000 * IXZZZZZXIIIIIIIYZYII\n", + "+0.000 * IYZZZZZYIIIIIIIXZXII\n", + "+0.000 * IXZZZZZXIIIIIIIXZXII\n", + "+0.000 * YZZZZZZYIIIIIIYZZYII\n", + "+0.000 * XZZZZZZXIIIIIIYZZYII\n", + "+0.000 * YZZZZZZYIIIIIIXZZXII\n", + "+0.000 * XZZZZZZXIIIIIIXZZXII\n", + "-0.001 * YZZZZZZYIIIIIYZZZYII\n", + "-0.001 * XZZZZZZXIIIIIYZZZYII\n", + "-0.001 * YZZZZZZYIIIIIXZZZXII\n", + "-0.001 * XZZZZZZXIIIIIXZZZXII\n", + "+0.133 * IIIIIIZIIIIIIIIIIZII\n", + "-0.007 * IIIIIIZIIIIYZZZZZYII\n", + "-0.007 * IIIIIIZIIIIXZZZZZXII\n", + "+0.008 * IIIIIYYIIIIIIIIIYYII\n", + "+0.008 * IIIIIXXIIIIIIIIIYYII\n", + "+0.008 * IIIIIYYIIIIIIIIIXXII\n", + "+0.008 * IIIIIXXIIIIIIIIIXXII\n", + "+0.008 * IIIIYZYIIIIIIIIYZYII\n", + "+0.008 * IIIIXZXIIIIIIIIYZYII\n", + "+0.008 * IIIIYZYIIIIIIIIXZXII\n", + "+0.008 * IIIIXZXIIIIIIIIXZXII\n", + "+0.006 * IIIYZZYIIIIIIIYZZYII\n", + "+0.006 * IIIXZZXIIIIIIIYZZYII\n", + "+0.006 * IIIYZZYIIIIIIIXZZXII\n", + "+0.006 * IIIXZZXIIIIIIIXZZXII\n", + "+0.006 * IIYZZZYIIIIIIYZZZYII\n", + "+0.006 * IIXZZZXIIIIIIYZZZYII\n", + "+0.006 * IIYZZZYIIIIIIXZZZXII\n", + "+0.006 * IIXZZZXIIIIIIXZZZXII\n", + "+0.017 * IYZZZZYIIIIIYZZZZYII\n", + "+0.017 * IXZZZZXIIIIIYZZZZYII\n", + "+0.017 * IYZZZZYIIIIIXZZZZXII\n", + "+0.017 * IXZZZZXIIIIIXZZZZXII\n", + "-0.007 * YZZZZZYIIIIIIIIIIZII\n", + "-0.007 * XZZZZZXIIIIIIIIIIZII\n", + "+0.016 * YZZZZZYIIIIYZZZZZYII\n", + "+0.016 * XZZZZZXIIIIYZZZZZYII\n", + "+0.016 * YZZZZZYIIIIXZZZZZXII\n", + "+0.016 * XZZZZZXIIIIXZZZZZXII\n", + "+0.122 * IIIIIZIIIIIIIIIIIZII\n", + "-0.006 * IIIIIZIIIIIYZZZZZYII\n", + "-0.006 * IIIIIZIIIIIXZZZZZXII\n", + "-0.000 * IIIYZYIIIIIIYZZZZYII\n", + "-0.000 * IIIXZXIIIIIIYZZZZYII\n", + "-0.000 * IIIYZYIIIIIIXZZZZXII\n", + "-0.000 * IIIXZXIIIIIIXZZZZXII\n", + "+0.019 * IIYZZYIIIIIIYZZZZYII\n", + "+0.019 * IIXZZXIIIIIIYZZZZYII\n", + "+0.019 * IIYZZYIIIIIIXZZZZXII\n", + "+0.019 * IIXZZXIIIIIIXZZZZXII\n", + "+0.000 * IYZZZYIIIIIIIIYZZYII\n", + "+0.000 * IXZZZXIIIIIIIIYZZYII\n", + "+0.000 * IYZZZYIIIIIIIIXZZXII\n", + "+0.000 * IXZZZXIIIIIIIIXZZXII\n", + "-0.000 * IYZZZYIIIIIIIYZZZYII\n", + "-0.000 * IXZZZXIIIIIIIYZZZYII\n", + "-0.000 * IYZZZYIIIIIIIXZZZXII\n", + "-0.000 * IXZZZXIIIIIIIXZZZXII\n", + "-0.001 * YZZZZYIIIIIIIIIIYYII\n", + "-0.001 * XZZZZXIIIIIIIIIIYYII\n", + "-0.001 * YZZZZYIIIIIIIIIIXXII\n", + "-0.001 * XZZZZXIIIIIIIIIIXXII\n", + "+0.122 * IIIIZIIIIIIIIIIIIZII\n", + "-0.006 * IIIIZIIIIIIYZZZZZYII\n", + "-0.006 * IIIIZIIIIIIXZZZZZXII\n", + "+0.019 * IIIYYIIIIIIIYZZZZYII\n", + "+0.019 * IIIXXIIIIIIIYZZZZYII\n", + "+0.019 * IIIYYIIIIIIIXZZZZXII\n", + "+0.019 * IIIXXIIIIIIIXZZZZXII\n", + "+0.000 * IIYZYIIIIIIIYZZZZYII\n", + "+0.000 * IIXZXIIIIIIIYZZZZYII\n", + "+0.000 * IIYZYIIIIIIIXZZZZXII\n", + "+0.000 * IIXZXIIIIIIIXZZZZXII\n", + "-0.000 * IYZZYIIIIIIIIIYZZYII\n", + "-0.000 * IXZZXIIIIIIIIIYZZYII\n", + "-0.000 * IYZZYIIIIIIIIIXZZXII\n", + "-0.000 * IXZZXIIIIIIIIIXZZXII\n", + "-0.000 * IYZZYIIIIIIIIYZZZYII\n", + "-0.000 * IXZZXIIIIIIIIYZZZYII\n", + "-0.000 * IYZZYIIIIIIIIXZZZXII\n", + "-0.000 * IXZZXIIIIIIIIXZZZXII\n", + "-0.001 * YZZZYIIIIIIIIIIYZYII\n", + "-0.001 * XZZZXIIIIIIIIIIYZYII\n", + "-0.001 * YZZZYIIIIIIIIIIXZXII\n", + "-0.001 * XZZZXIIIIIIIIIIXZXII\n", + "+0.113 * IIIZIIIIIIIIIIIIIZII\n", + "+0.011 * IIIZIIIIIIIYZZZZZYII\n", + "+0.011 * IIIZIIIIIIIXZZZZZXII\n", + "-0.000 * IYZYIIIIIIIIIIIIYYII\n", + "-0.000 * IXZXIIIIIIIIIIIIYYII\n", + "-0.000 * IYZYIIIIIIIIIIIIXXII\n", + "-0.000 * IXZXIIIIIIIIIIIIXXII\n", + "+0.001 * IYZYIIIIIIIIIIIYZYII\n", + "+0.001 * IXZXIIIIIIIIIIIYZYII\n", + "+0.001 * IYZYIIIIIIIIIIIXZXII\n", + "+0.001 * IXZXIIIIIIIIIIIXZXII\n", + "-0.003 * YZZYIIIIIIIIIIYZZYII\n", + "-0.003 * XZZXIIIIIIIIIIYZZYII\n", + "-0.003 * YZZYIIIIIIIIIIXZZXII\n", + "-0.003 * XZZXIIIIIIIIIIXZZXII\n", + "+0.113 * IIZIIIIIIIIIIIIIIZII\n", + "+0.011 * IIZIIIIIIIIYZZZZZYII\n", + "+0.011 * IIZIIIIIIIIXZZZZZXII\n", + "+0.001 * IYYIIIIIIIIIIIIIYYII\n", + "+0.001 * IXXIIIIIIIIIIIIIYYII\n", + "+0.001 * IYYIIIIIIIIIIIIIXXII\n", + "+0.001 * IXXIIIIIIIIIIIIIXXII\n", + "+0.000 * IYYIIIIIIIIIIIIYZYII\n", + "+0.000 * IXXIIIIIIIIIIIIYZYII\n", + "+0.000 * IYYIIIIIIIIIIIIXZXII\n", + "+0.000 * IXXIIIIIIIIIIIIXZXII\n", + "-0.003 * YZYIIIIIIIIIIYZZZYII\n", + "-0.003 * XZXIIIIIIIIIIYZZZYII\n", + "-0.003 * YZYIIIIIIIIIIXZZZXII\n", + "-0.003 * XZXIIIIIIIIIIXZZZXII\n", + "+0.118 * IZIIIIIIIIIIIIIIIZII\n", + "+0.006 * IZIIIIIIIIIYZZZZZYII\n", + "+0.006 * IZIIIIIIIIIXZZZZZXII\n", + "+0.019 * YYIIIIIIIIIIYZZZZYII\n", + "+0.019 * XXIIIIIIIIIIYZZZZYII\n", + "+0.019 * YYIIIIIIIIIIXZZZZXII\n", + "+0.019 * XXIIIIIIIIIIXZZZZXII\n", + "+0.126 * ZIIIIIIIIIIIIIIIIZII\n", + "+0.016 * ZIIIIIIIIIIYZZZZZYII\n", + "+0.016 * ZIIIIIIIIIIXZZZZZXII\n", + "+0.120 * IIIIIIIIIIIIIIIZZIII\n", + "+0.109 * IIIIIIIIIIIIIIZIZIII\n", + "-0.000 * IIIIIIIIIIIIIYYIZIII\n", + "-0.000 * IIIIIIIIIIIIIXXIZIII\n", + "+0.081 * IIIIIIIIIIIIIZIIZIII\n", + "+0.115 * IIIIIIIIIIIIZIIIZIII\n", + "+0.119 * IIIIIIIIIIIZIIIIZIII\n", + "-0.000 * IIIIIIIIIIIIIIZYYIII\n", + "-0.000 * IIIIIIIIIIIIIIZXXIII\n", + "-0.029 * IIIIIIIIIIIIIYXXYIII\n", + "-0.028 * IIIIIIIIIIIIIYYYYIII\n", + "+0.001 * IIIIIIIIIIIIIXXYYIII\n", + "+0.001 * IIIIIIIIIIIIIYYXXIII\n", + "-0.028 * IIIIIIIIIIIIIXXXXIII\n", + "-0.029 * IIIIIIIIIIIIIXYYXIII\n", + "+0.000 * IIIIIIIIIIIIIZIYYIII\n", + "+0.000 * IIIIIIIIIIIIIZIXXIII\n", + "-0.000 * IIIIIIIIIIIYXIXZYIII\n", + "-0.000 * IIIIIIIIIIIYYIYZYIII\n", + "-0.000 * IIIIIIIIIIIXXIYZYIII\n", + "-0.000 * IIIIIIIIIIIYYIXZXIII\n", + "-0.000 * IIIIIIIIIIIXXIXZXIII\n", + "-0.000 * IIIIIIIIIIIXYIYZXIII\n", + "+0.000 * IIIIIIIIIIIYXXZZYIII\n", + "+0.026 * IIIIIIIIIIIYYYZZYIII\n", + "+0.026 * IIIIIIIIIIIXXYZZYIII\n", + "+0.026 * IIIIIIIIIIIYYXZZXIII\n", + "+0.026 * IIIIIIIIIIIXXXZZXIII\n", + "+0.000 * IIIIIIIIIIIXYYZZXIII\n", + "+0.122 * ZZZZZZZZZZZIIIIIZIII\n", + "-0.001 * ZZZZZZZZZZXIIIYZYIII\n", + "+0.001 * IIIIIIIIIIXIIIYZYIII\n", + "-0.001 * ZZZZZZZZZZXIIIXZXIII\n", + "+0.001 * IIIIIIIIIIXIIIXZXIII\n", + "+0.038 * ZZZZZZZZZZXIIYZZYIII\n", + "-0.038 * IIIIIIIIIIXIIYZZYIII\n", + "+0.038 * ZZZZZZZZZZXIIXZZXIII\n", + "-0.038 * IIIIIIIIIIXIIXZZXIII\n", + "-0.007 * ZZZZZZZZZXIIIIIIZIII\n", + "+0.007 * IIIIIIIIIXZIIIIIZIII\n", + "-0.000 * ZZZZZZZZXIIYZZZZYIII\n", + "+0.000 * IIIIIIIIXZZYZZZZYIII\n", + "-0.000 * ZZZZZZZZXIIXZZZZXIII\n", + "+0.000 * IIIIIIIIXZZXZZZZXIII\n", + "-0.005 * ZZZZZZZXIIIYZZZZYIII\n", + "+0.005 * IIIIIIIXZZZYZZZZYIII\n", + "-0.005 * ZZZZZZZXIIIXZZZZXIII\n", + "+0.005 * IIIIIIIXZZZXZZZZXIII\n", + "+0.000 * ZZZZZZXIIIIIIIYZYIII\n", + "-0.000 * IIIIIIXZZZZIIIYZYIII\n", + "+0.000 * ZZZZZZXIIIIIIIXZXIII\n", + "-0.000 * IIIIIIXZZZZIIIXZXIII\n", + "-0.007 * ZZZZZZXIIIIIIYZZYIII\n", + "+0.007 * IIIIIIXZZZZIIYZZYIII\n", + "-0.007 * ZZZZZZXIIIIIIXZZXIII\n", + "+0.007 * IIIIIIXZZZZIIXZZXIII\n", + "+0.006 * ZZZZZXIIIIIIYZZZYIII\n", + "-0.006 * IIIIIXZZZZZIYZZZYIII\n", + "+0.006 * ZZZZZXIIIIIIXZZZXIII\n", + "-0.006 * IIIIIXZZZZZIXZZZXIII\n", + "-0.000 * ZZZXIIIIIIIYZZZZYIII\n", + "+0.000 * IIIXZZZZZZZYZZZZYIII\n", + "-0.000 * ZZZXIIIIIIIXZZZZXIII\n", + "+0.000 * IIIXZZZZZZZXZZZZXIII\n", + "+0.004 * ZZXIIIIIIIIYZZZZYIII\n", + "-0.004 * IIXZZZZZZZZYZZZZYIII\n", + "+0.004 * ZZXIIIIIIIIXZZZZXIII\n", + "-0.004 * IIXZZZZZZZZXZZZZXIII\n", + "-0.017 * ZXIIIIIIIIIIIIIIZIII\n", + "+0.017 * IXZZZZZZZZZIIIIIZIII\n", + "-0.000 * XIIIIIIIIIIIIIYZYIII\n", + "+0.000 * XZZZZZZZZZZIIIYZYIII\n", + "-0.000 * XIIIIIIIIIIIIIXZXIII\n", + "+0.000 * XZZZZZZZZZZIIIXZXIII\n", + "+0.013 * XIIIIIIIIIIIIYZZYIII\n", + "-0.013 * XZZZZZZZZZZIIYZZYIII\n", + "+0.013 * XIIIIIIIIIIIIXZZXIII\n", + "-0.013 * XZZZZZZZZZZIIXZZXIII\n", + "+0.126 * IIIIIIIIIIZIIIIIZIII\n", + "-0.000 * IIIIIIIIIYYIIIYZYIII\n", + "-0.000 * IIIIIIIIIXXIIIYZYIII\n", + "-0.000 * IIIIIIIIIYYIIIXZXIII\n", + "-0.000 * IIIIIIIIIXXIIIXZXIII\n", + "+0.016 * IIIIIIIIIYYIIYZZYIII\n", + "+0.016 * IIIIIIIIIXXIIYZZYIII\n", + "+0.016 * IIIIIIIIIYYIIXZZXIII\n", + "+0.016 * IIIIIIIIIXXIIXZZXIII\n", + "-0.000 * IIIIIIIIYZYIYZZZYIII\n", + "-0.000 * IIIIIIIIXZXIYZZZYIII\n", + "-0.000 * IIIIIIIIYZYIXZZZXIII\n", + "-0.000 * IIIIIIIIXZXIXZZZXIII\n", + "-0.005 * IIIIIIIYZZYIYZZZYIII\n", + "-0.005 * IIIIIIIXZZXIYZZZYIII\n", + "-0.005 * IIIIIIIYZZYIXZZZXIII\n", + "-0.005 * IIIIIIIXZZXIXZZZXIII\n", + "+0.001 * IIIIIIYZZZYIIIIIZIII\n", + "+0.001 * IIIIIIXZZZXIIIIIZIII\n", + "+0.007 * IIIIIYZZZZYYZZZZYIII\n", + "+0.007 * IIIIIXZZZZXYZZZZYIII\n", + "+0.007 * IIIIIYZZZZYXZZZZXIII\n", + "+0.007 * IIIIIXZZZZXXZZZZXIII\n", + "-0.000 * IIIYZZZZZZYIYZZZYIII\n", + "-0.000 * IIIXZZZZZZXIYZZZYIII\n", + "-0.000 * IIIYZZZZZZYIXZZZXIII\n", + "-0.000 * IIIXZZZZZZXIXZZZXIII\n", + "+0.003 * IIYZZZZZZZYIYZZZYIII\n", + "+0.003 * IIXZZZZZZZXIYZZZYIII\n", + "+0.003 * IIYZZZZZZZYIXZZZXIII\n", + "+0.003 * IIXZZZZZZZXIXZZZXIII\n", + "-0.000 * IYZZZZZZZZYIIIYZYIII\n", + "-0.000 * IXZZZZZZZZXIIIYZYIII\n", + "-0.000 * IYZZZZZZZZYIIIXZXIII\n", + "-0.000 * IXZZZZZZZZXIIIXZXIII\n", + "+0.015 * IYZZZZZZZZYIIYZZYIII\n", + "+0.015 * IXZZZZZZZZXIIYZZYIII\n", + "+0.015 * IYZZZZZZZZYIIXZZXIII\n", + "+0.015 * IXZZZZZZZZXIIXZZXIII\n", + "-0.015 * YZZZZZZZZZYIIIIIZIII\n", + "-0.015 * XZZZZZZZZZXIIIIIZIII\n", + "+0.118 * IIIIIIIIIZIIIIIIZIII\n", + "-0.000 * IIIIIIIIYYIYZZZZYIII\n", + "-0.000 * IIIIIIIIXXIYZZZZYIII\n", + "-0.000 * IIIIIIIIYYIXZZZZXIII\n", + "-0.000 * IIIIIIIIXXIXZZZZXIII\n", + "-0.001 * IIIIIIIYZYIYZZZZYIII\n", + "-0.001 * IIIIIIIXZXIYZZZZYIII\n", + "-0.001 * IIIIIIIYZYIXZZZZXIII\n", + "-0.001 * IIIIIIIXZXIXZZZZXIII\n", + "+0.001 * IIIIIIYZZYIIIIYZYIII\n", + "+0.001 * IIIIIIXZZXIIIIYZYIII\n", + "+0.001 * IIIIIIYZZYIIIIXZXIII\n", + "+0.001 * IIIIIIXZZXIIIIXZXIII\n", + "-0.042 * IIIIIIYZZYIIIYZZYIII\n", + "-0.042 * IIIIIIXZZXIIIYZZYIII\n", + "-0.042 * IIIIIIYZZYIIIXZZXIII\n", + "-0.042 * IIIIIIXZZXIIIXZZXIII\n", + "+0.001 * IIIIIYZZZYIIYZZZYIII\n", + "+0.001 * IIIIIXZZZXIIYZZZYIII\n", + "+0.001 * IIIIIYZZZYIIXZZZXIII\n", + "+0.001 * IIIIIXZZZXIIXZZZXIII\n", + "-0.000 * IIIYZZZZZYIYZZZZYIII\n", + "-0.000 * IIIXZZZZZXIYZZZZYIII\n", + "-0.000 * IIIYZZZZZYIXZZZZXIII\n", + "-0.000 * IIIXZZZZZXIXZZZZXIII\n", + "+0.002 * IIYZZZZZZYIYZZZZYIII\n", + "+0.002 * IIXZZZZZZXIYZZZZYIII\n", + "+0.002 * IIYZZZZZZYIXZZZZXIII\n", + "+0.002 * IIXZZZZZZXIXZZZZXIII\n", + "+0.008 * IYZZZZZZZYIIIIIIZIII\n", + "+0.008 * IXZZZZZZZXIIIIIIZIII\n", + "+0.000 * YZZZZZZZZYIIIIYZYIII\n", + "+0.000 * XZZZZZZZZXIIIIYZYIII\n", + "+0.000 * YZZZZZZZZYIIIIXZXIII\n", + "+0.000 * XZZZZZZZZXIIIIXZXIII\n", + "-0.006 * YZZZZZZZZYIIIYZZYIII\n", + "-0.006 * XZZZZZZZZXIIIYZZYIII\n", + "-0.006 * YZZZZZZZZYIIIXZZXIII\n", + "-0.006 * XZZZZZZZZXIIIXZZXIII\n", + "+0.112 * IIIIIIIIZIIIIIIIZIII\n", + "-0.000 * IIIIIIIIZIIIIIIYYIII\n", + "-0.000 * IIIIIIIIZIIIIIIXXIII\n", + "-0.000 * IIIIIIIYYIIIIIIIZIII\n", + "-0.000 * IIIIIIIXXIIIIIIIZIII\n", + "+0.004 * IIIIIIIYYIIIIIIYYIII\n", + "+0.004 * IIIIIIIXXIIIIIIYYIII\n", + "+0.004 * IIIIIIIYYIIIIIIXXIII\n", + "+0.004 * IIIIIIIXXIIIIIIXXIII\n", + "-0.000 * IIIIIIYZYIIIYZZZYIII\n", + "-0.000 * IIIIIIXZXIIIYZZZYIII\n", + "-0.000 * IIIIIIYZYIIIXZZZXIII\n", + "-0.000 * IIIIIIXZXIIIXZZZXIII\n", + "-0.003 * IIIIIYZZYIIIIIYZYIII\n", + "-0.003 * IIIIIXZZXIIIIIYZYIII\n", + "-0.003 * IIIIIYZZYIIIIIXZXIII\n", + "-0.003 * IIIIIXZZXIIIIIXZXIII\n", + "-0.001 * IIIIIYZZYIIIIYZZYIII\n", + "-0.001 * IIIIIXZZXIIIIYZZYIII\n", + "-0.001 * IIIIIYZZYIIIIXZZXIII\n", + "-0.001 * IIIIIXZZXIIIIXZZXIII\n", + "+0.001 * IIIIYZZZYIIIIIYZYIII\n", + "+0.001 * IIIIXZZZXIIIIIYZYIII\n", + "+0.001 * IIIIYZZZYIIIIIXZXIII\n", + "+0.001 * IIIIXZZZXIIIIIXZXIII\n", + "-0.035 * IIIIYZZZYIIIIYZZYIII\n", + "-0.035 * IIIIXZZZXIIIIYZZYIII\n", + "-0.035 * IIIIYZZZYIIIIXZZXIII\n", + "-0.035 * IIIIXZZZXIIIIXZZXIII\n", + "+0.016 * IIIYZZZZYIIIIIIIZIII\n", + "+0.016 * IIIXZZZZXIIIIIIIZIII\n", + "-0.000 * IIIYZZZZYIIIIIIYYIII\n", + "-0.000 * IIIXZZZZXIIIIIIYYIII\n", + "-0.000 * IIIYZZZZYIIIIIIXXIII\n", + "-0.000 * IIIXZZZZXIIIIIIXXIII\n", + "+0.001 * IIYZZZZZYIIIIIIIZIII\n", + "+0.001 * IIXZZZZZXIIIIIIIZIII\n", + "-0.003 * IIYZZZZZYIIIIIIYYIII\n", + "-0.003 * IIXZZZZZXIIIIIIYYIII\n", + "-0.003 * IIYZZZZZYIIIIIIXXIII\n", + "-0.003 * IIXZZZZZXIIIIIIXXIII\n", + "-0.000 * IYZZZZZZYIIYZZZZYIII\n", + "-0.000 * IXZZZZZZXIIYZZZZYIII\n", + "-0.000 * IYZZZZZZYIIXZZZZXIII\n", + "-0.000 * IXZZZZZZXIIXZZZZXIII\n", + "-0.000 * YZZZZZZZYIIIYZZZYIII\n", + "-0.000 * XZZZZZZZXIIIYZZZYIII\n", + "-0.000 * YZZZZZZZYIIIXZZZXIII\n", + "-0.000 * XZZZZZZZXIIIXZZZXIII\n", + "+0.119 * IIIIIIIZIIIIIIIIZIII\n", + "+0.000 * IIIIIIIZIIIIIIIYYIII\n", + "+0.000 * IIIIIIIZIIIIIIIXXIII\n", + "-0.001 * IIIIIIYYIIIIYZZZYIII\n", + "-0.001 * IIIIIIXXIIIIYZZZYIII\n", + "-0.001 * IIIIIIYYIIIIXZZZXIII\n", + "-0.001 * IIIIIIXXIIIIXZZZXIII\n", + "+0.001 * IIIIIYZYIIIIIIYZYIII\n", + "+0.001 * IIIIIXZXIIIIIIYZYIII\n", + "+0.001 * IIIIIYZYIIIIIIXZXIII\n", + "+0.001 * IIIIIXZXIIIIIIXZXIII\n", + "-0.041 * IIIIIYZYIIIIIYZZYIII\n", + "-0.041 * IIIIIXZXIIIIIYZZYIII\n", + "-0.041 * IIIIIYZYIIIIIXZZXIII\n", + "-0.041 * IIIIIXZXIIIIIXZZXIII\n", + "-0.003 * IIIIYZZYIIIIIIYZYIII\n", + "-0.003 * IIIIXZZXIIIIIIYZYIII\n", + "-0.003 * IIIIYZZYIIIIIIXZXIII\n", + "-0.003 * IIIIXZZXIIIIIIXZXIII\n", + "+0.001 * IIIIYZZYIIIIIYZZYIII\n", + "+0.001 * IIIIXZZXIIIIIYZZYIII\n", + "+0.001 * IIIIYZZYIIIIIXZZXIII\n", + "+0.001 * IIIIXZZXIIIIIXZZXIII\n", + "-0.001 * IIIYZZZYIIIIIIIIZIII\n", + "-0.001 * IIIXZZZXIIIIIIIIZIII\n", + "-0.003 * IIIYZZZYIIIIIIIYYIII\n", + "-0.003 * IIIXZZZXIIIIIIIYYIII\n", + "-0.003 * IIIYZZZYIIIIIIIXXIII\n", + "-0.003 * IIIXZZZXIIIIIIIXXIII\n", + "+0.021 * IIYZZZZYIIIIIIIIZIII\n", + "+0.021 * IIXZZZZXIIIIIIIIZIII\n", + "+0.000 * IIYZZZZYIIIIIIIYYIII\n", + "+0.000 * IIXZZZZXIIIIIIIYYIII\n", + "+0.000 * IIYZZZZYIIIIIIIXXIII\n", + "+0.000 * IIXZZZZXIIIIIIIXXIII\n", + "-0.004 * IYZZZZZYIIIYZZZZYIII\n", + "-0.004 * IXZZZZZXIIIYZZZZYIII\n", + "-0.004 * IYZZZZZYIIIXZZZZXIII\n", + "-0.004 * IXZZZZZXIIIXZZZZXIII\n", + "-0.003 * YZZZZZZYIIIIYZZZYIII\n", + "-0.003 * XZZZZZZXIIIIYZZZYIII\n", + "-0.003 * YZZZZZZYIIIIXZZZXIII\n", + "-0.003 * XZZZZZZXIIIIXZZZXIII\n", + "+0.122 * IIIIIIZIIIIIIIIIZIII\n", + "-0.001 * IIIIIYYIIIIYZZZZYIII\n", + "-0.001 * IIIIIXXIIIIYZZZZYIII\n", + "-0.001 * IIIIIYYIIIIXZZZZXIII\n", + "-0.001 * IIIIIXXIIIIXZZZZXIII\n", + "+0.000 * IIIYZZYIIIIIYZZZYIII\n", + "+0.000 * IIIXZZXIIIIIYZZZYIII\n", + "+0.000 * IIIYZZYIIIIIXZZZXIII\n", + "+0.000 * IIIXZZXIIIIIXZZZXIII\n", + "-0.000 * IIYZZZYIIIIIYZZZYIII\n", + "-0.000 * IIXZZZXIIIIIYZZZYIII\n", + "-0.000 * IIYZZZYIIIIIXZZZXIII\n", + "-0.000 * IIXZZZXIIIIIXZZZXIII\n", + "-0.000 * IYZZZZYIIIIIIIYZYIII\n", + "-0.000 * IXZZZZXIIIIIIIYZYIII\n", + "-0.000 * IYZZZZYIIIIIIIXZXIII\n", + "-0.000 * IXZZZZXIIIIIIIXZXIII\n", + "+0.019 * IYZZZZYIIIIIIYZZYIII\n", + "+0.019 * IXZZZZXIIIIIIYZZYIII\n", + "+0.019 * IYZZZZYIIIIIIXZZXIII\n", + "+0.019 * IXZZZZXIIIIIIXZZXIII\n", + "-0.006 * YZZZZZYIIIIIIIIIZIII\n", + "-0.006 * XZZZZZXIIIIIIIIIZIII\n", + "+0.138 * IIIIIZIIIIIIIIIIZIII\n", + "+0.006 * IIIIYYIIIIIIIIIYYIII\n", + "+0.006 * IIIIXXIIIIIIIIIYYIII\n", + "+0.006 * IIIIYYIIIIIIIIIXXIII\n", + "+0.006 * IIIIXXIIIIIIIIIXXIII\n", + "+0.003 * IIIYZYIIIIIIIIYZYIII\n", + "+0.003 * IIIXZXIIIIIIIIYZYIII\n", + "+0.003 * IIIYZYIIIIIIIIXZXIII\n", + "+0.003 * IIIXZXIIIIIIIIXZXIII\n", + "-0.001 * IIIYZYIIIIIIIYZZYIII\n", + "-0.001 * IIIXZXIIIIIIIYZZYIII\n", + "-0.001 * IIIYZYIIIIIIIXZZXIII\n", + "-0.001 * IIIXZXIIIIIIIXZZXIII\n", + "-0.001 * IIYZZYIIIIIIIIYZYIII\n", + "-0.001 * IIXZZXIIIIIIIIYZYIII\n", + "-0.001 * IIYZZYIIIIIIIIXZXIII\n", + "-0.001 * IIXZZXIIIIIIIIXZXIII\n", + "+0.037 * IIYZZYIIIIIIIYZZYIII\n", + "+0.037 * IIXZZXIIIIIIIYZZYIII\n", + "+0.037 * IIYZZYIIIIIIIXZZXIII\n", + "+0.037 * IIXZZXIIIIIIIXZZXIII\n", + "+0.005 * IYZZZYIIIIIIYZZZYIII\n", + "+0.005 * IXZZZXIIIIIIYZZZYIII\n", + "+0.005 * IYZZZYIIIIIIXZZZXIII\n", + "+0.005 * IXZZZXIIIIIIXZZZXIII\n", + "+0.005 * YZZZZYIIIIIYZZZZYIII\n", + "+0.005 * XZZZZXIIIIIYZZZZYIII\n", + "+0.005 * YZZZZYIIIIIXZZZZXIII\n", + "+0.005 * XZZZZXIIIIIXZZZZXIII\n", + "+0.126 * IIIIZIIIIIIIIIIIZIII\n", + "-0.001 * IIIYYIIIIIIIIIYZYIII\n", + "-0.001 * IIIXXIIIIIIIIIYZYIII\n", + "-0.001 * IIIYYIIIIIIIIIXZXIII\n", + "-0.001 * IIIXXIIIIIIIIIXZXIII\n", + "+0.031 * IIIYYIIIIIIIIYZZYIII\n", + "+0.031 * IIIXXIIIIIIIIYZZYIII\n", + "+0.031 * IIIYYIIIIIIIIXZZXIII\n", + "+0.031 * IIIXXIIIIIIIIXZZXIII\n", + "+0.003 * IIYZYIIIIIIIIIYZYIII\n", + "+0.003 * IIXZXIIIIIIIIIYZYIII\n", + "+0.003 * IIYZYIIIIIIIIIXZXIII\n", + "+0.003 * IIXZXIIIIIIIIIXZXIII\n", + "+0.001 * IIYZYIIIIIIIIYZZYIII\n", + "+0.001 * IIXZXIIIIIIIIYZZYIII\n", + "+0.001 * IIYZYIIIIIIIIXZZXIII\n", + "+0.001 * IIXZXIIIIIIIIXZZXIII\n", + "+0.112 * IIIZIIIIIIIIIIIIZIII\n", + "+0.000 * IIIZIIIIIIIIIIIYYIII\n", + "+0.000 * IIIZIIIIIIIIIIIXXIII\n", + "+0.000 * IIYYIIIIIIIIIIIIZIII\n", + "+0.000 * IIXXIIIIIIIIIIIIZIII\n", + "+0.003 * IIYYIIIIIIIIIIIYYIII\n", + "+0.003 * IIXXIIIIIIIIIIIYYIII\n", + "+0.003 * IIYYIIIIIIIIIIIXXIII\n", + "+0.003 * IIXXIIIIIIIIIIIXXIII\n", + "-0.000 * IYZYIIIIIIIYZZZZYIII\n", + "-0.000 * IXZXIIIIIIIYZZZZYIII\n", + "-0.000 * IYZYIIIIIIIXZZZZXIII\n", + "-0.000 * IXZXIIIIIIIXZZZZXIII\n", + "-0.000 * YZZYIIIIIIIIYZZZYIII\n", + "-0.000 * XZZXIIIIIIIIYZZZYIII\n", + "-0.000 * YZZYIIIIIIIIXZZZXIII\n", + "-0.000 * XZZXIIIIIIIIXZZZXIII\n", + "+0.118 * IIZIIIIIIIIIIIIIZIII\n", + "-0.000 * IIZIIIIIIIIIIIIYYIII\n", + "-0.000 * IIZIIIIIIIIIIIIXXIII\n", + "+0.003 * IYYIIIIIIIIYZZZZYIII\n", + "+0.003 * IXXIIIIIIIIYZZZZYIII\n", + "+0.003 * IYYIIIIIIIIXZZZZXIII\n", + "+0.003 * IXXIIIIIIIIXZZZZXIII\n", + "+0.004 * YZYIIIIIIIIIYZZZYIII\n", + "+0.004 * XZXIIIIIIIIIYZZZYIII\n", + "+0.004 * YZYIIIIIIIIIXZZZXIII\n", + "+0.004 * XZXIIIIIIIIIXZZZXIII\n", + "+0.119 * IZIIIIIIIIIIIIIIZIII\n", + "-0.001 * YYIIIIIIIIIIIIYZYIII\n", + "-0.001 * XXIIIIIIIIIIIIYZYIII\n", + "-0.001 * YYIIIIIIIIIIIIXZXIII\n", + "-0.001 * XXIIIIIIIIIIIIXZXIII\n", + "+0.030 * YYIIIIIIIIIIIYZZYIII\n", + "+0.030 * XXIIIIIIIIIIIYZZYIII\n", + "+0.030 * YYIIIIIIIIIIIXZZXIII\n", + "+0.030 * XXIIIIIIIIIIIXZZXIII\n", + "+0.124 * ZIIIIIIIIIIIIIIIZIII\n", + "+0.081 * IIIIIIIIIIIIIIZZIIII\n", + "+0.000 * IIIIIIIIIIIIIYYZIIII\n", + "+0.000 * IIIIIIIIIIIIIXXZIIII\n", + "+0.109 * IIIIIIIIIIIIIZIZIIII\n", + "+0.115 * IIIIIIIIIIIIZIIZIIII\n", + "+0.119 * IIIIIIIIIIIZIIIZIIII\n", + "+0.000 * IIIIIIIIIIIYXIXYIIII\n", + "+0.026 * IIIIIIIIIIIYYIYYIIII\n", + "+0.026 * IIIIIIIIIIIXXIYYIIII\n", + "+0.026 * IIIIIIIIIIIYYIXXIIII\n", + "+0.026 * IIIIIIIIIIIXXIXXIIII\n", + "+0.000 * IIIIIIIIIIIXYIYXIIII\n", + "+0.000 * IIIIIIIIIIIYXXZYIIII\n", + "+0.000 * IIIIIIIIIIIYYYZYIIII\n", + "+0.000 * IIIIIIIIIIIXXYZYIIII\n", + "+0.000 * IIIIIIIIIIIYYXZXIIII\n", + "+0.000 * IIIIIIIIIIIXXXZXIIII\n", + "+0.000 * IIIIIIIIIIIXYYZXIIII\n", + "+0.122 * ZZZZZZZZZZZIIIIZIIII\n", + "+0.038 * ZZZZZZZZZZXIIIYYIIII\n", + "-0.038 * IIIIIIIIIIXIIIYYIIII\n", + "+0.038 * ZZZZZZZZZZXIIIXXIIII\n", + "-0.038 * IIIIIIIIIIXIIIXXIIII\n", + "+0.001 * ZZZZZZZZZZXIIYZYIIII\n", + "-0.001 * IIIIIIIIIIXIIYZYIIII\n", + "+0.001 * ZZZZZZZZZZXIIXZXIIII\n", + "-0.001 * IIIIIIIIIIXIIXZXIIII\n", + "-0.007 * ZZZZZZZZZXIIIIIZIIII\n", + "+0.007 * IIIIIIIIIXZIIIIZIIII\n", + "-0.005 * ZZZZZZZZXIIYZZZYIIII\n", + "+0.005 * IIIIIIIIXZZYZZZYIIII\n", + "-0.005 * ZZZZZZZZXIIXZZZXIIII\n", + "+0.005 * IIIIIIIIXZZXZZZXIIII\n", + "+0.000 * ZZZZZZZXIIIYZZZYIIII\n", + "-0.000 * IIIIIIIXZZZYZZZYIIII\n", + "+0.000 * ZZZZZZZXIIIXZZZXIIII\n", + "-0.000 * IIIIIIIXZZZXZZZXIIII\n", + "-0.007 * ZZZZZZXIIIIIIIYYIIII\n", + "+0.007 * IIIIIIXZZZZIIIYYIIII\n", + "-0.007 * ZZZZZZXIIIIIIIXXIIII\n", + "+0.007 * IIIIIIXZZZZIIIXXIIII\n", + "-0.000 * ZZZZZZXIIIIIIYZYIIII\n", + "+0.000 * IIIIIIXZZZZIIYZYIIII\n", + "-0.000 * ZZZZZZXIIIIIIXZXIIII\n", + "+0.000 * IIIIIIXZZZZIIXZXIIII\n", + "+0.006 * ZZZZXIIIIIIIYZZYIIII\n", + "-0.006 * IIIIXZZZZZZIYZZYIIII\n", + "+0.006 * ZZZZXIIIIIIIXZZXIIII\n", + "-0.006 * IIIIXZZZZZZIXZZXIIII\n", + "+0.004 * ZZZXIIIIIIIYZZZYIIII\n", + "-0.004 * IIIXZZZZZZZYZZZYIIII\n", + "+0.004 * ZZZXIIIIIIIXZZZXIIII\n", + "-0.004 * IIIXZZZZZZZXZZZXIIII\n", + "+0.000 * ZZXIIIIIIIIYZZZYIIII\n", + "-0.000 * IIXZZZZZZZZYZZZYIIII\n", + "+0.000 * ZZXIIIIIIIIXZZZXIIII\n", + "-0.000 * IIXZZZZZZZZXZZZXIIII\n", + "-0.017 * ZXIIIIIIIIIIIIIZIIII\n", + "+0.017 * IXZZZZZZZZZIIIIZIIII\n", + "+0.013 * XIIIIIIIIIIIIIYYIIII\n", + "-0.013 * XZZZZZZZZZZIIIYYIIII\n", + "+0.013 * XIIIIIIIIIIIIIXXIIII\n", + "-0.013 * XZZZZZZZZZZIIIXXIIII\n", + "+0.000 * XIIIIIIIIIIIIYZYIIII\n", + "-0.000 * XZZZZZZZZZZIIYZYIIII\n", + "+0.000 * XIIIIIIIIIIIIXZXIIII\n", + "-0.000 * XZZZZZZZZZZIIXZXIIII\n", + "+0.126 * IIIIIIIIIIZIIIIZIIII\n", + "+0.016 * IIIIIIIIIYYIIIYYIIII\n", + "+0.016 * IIIIIIIIIXXIIIYYIIII\n", + "+0.016 * IIIIIIIIIYYIIIXXIIII\n", + "+0.016 * IIIIIIIIIXXIIIXXIIII\n", + "+0.000 * IIIIIIIIIYYIIYZYIIII\n", + "+0.000 * IIIIIIIIIXXIIYZYIIII\n", + "+0.000 * IIIIIIIIIYYIIXZXIIII\n", + "+0.000 * IIIIIIIIIXXIIXZXIIII\n", + "-0.005 * IIIIIIIIYZYIYZZYIIII\n", + "-0.005 * IIIIIIIIXZXIYZZYIIII\n", + "-0.005 * IIIIIIIIYZYIXZZXIIII\n", + "-0.005 * IIIIIIIIXZXIXZZXIIII\n", + "+0.000 * IIIIIIIYZZYIYZZYIIII\n", + "+0.000 * IIIIIIIXZZXIYZZYIIII\n", + "+0.000 * IIIIIIIYZZYIXZZXIIII\n", + "+0.000 * IIIIIIIXZZXIXZZXIIII\n", + "+0.001 * IIIIIIYZZZYIIIIZIIII\n", + "+0.001 * IIIIIIXZZZXIIIIZIIII\n", + "+0.007 * IIIIYZZZZZYYZZZYIIII\n", + "+0.007 * IIIIXZZZZZXYZZZYIIII\n", + "+0.007 * IIIIYZZZZZYXZZZXIIII\n", + "+0.007 * IIIIXZZZZZXXZZZXIIII\n", + "+0.003 * IIIYZZZZZZYIYZZYIIII\n", + "+0.003 * IIIXZZZZZZXIYZZYIIII\n", + "+0.003 * IIIYZZZZZZYIXZZXIIII\n", + "+0.003 * IIIXZZZZZZXIXZZXIIII\n", + "+0.000 * IIYZZZZZZZYIYZZYIIII\n", + "+0.000 * IIXZZZZZZZXIYZZYIIII\n", + "+0.000 * IIYZZZZZZZYIXZZXIIII\n", + "+0.000 * IIXZZZZZZZXIXZZXIIII\n", + "+0.015 * IYZZZZZZZZYIIIYYIIII\n", + "+0.015 * IXZZZZZZZZXIIIYYIIII\n", + "+0.015 * IYZZZZZZZZYIIIXXIIII\n", + "+0.015 * IXZZZZZZZZXIIIXXIIII\n", + "+0.000 * IYZZZZZZZZYIIYZYIIII\n", + "+0.000 * IXZZZZZZZZXIIYZYIIII\n", + "+0.000 * IYZZZZZZZZYIIXZXIIII\n", + "+0.000 * IXZZZZZZZZXIIXZXIIII\n", + "-0.015 * YZZZZZZZZZYIIIIZIIII\n", + "-0.015 * XZZZZZZZZZXIIIIZIIII\n", + "+0.118 * IIIIIIIIIZIIIIIZIIII\n", + "-0.001 * IIIIIIIIYYIYZZZYIIII\n", + "-0.001 * IIIIIIIIXXIYZZZYIIII\n", + "-0.001 * IIIIIIIIYYIXZZZXIIII\n", + "-0.001 * IIIIIIIIXXIXZZZXIIII\n", + "+0.000 * IIIIIIIYZYIYZZZYIIII\n", + "+0.000 * IIIIIIIXZXIYZZZYIIII\n", + "+0.000 * IIIIIIIYZYIXZZZXIIII\n", + "+0.000 * IIIIIIIXZXIXZZZXIIII\n", + "-0.042 * IIIIIIYZZYIIIIYYIIII\n", + "-0.042 * IIIIIIXZZXIIIIYYIIII\n", + "-0.042 * IIIIIIYZZYIIIIXXIIII\n", + "-0.042 * IIIIIIXZZXIIIIXXIIII\n", + "-0.001 * IIIIIIYZZYIIIYZYIIII\n", + "-0.001 * IIIIIIXZZXIIIYZYIIII\n", + "-0.001 * IIIIIIYZZYIIIXZXIIII\n", + "-0.001 * IIIIIIXZZXIIIXZXIIII\n", + "+0.001 * IIIIYZZZZYIIYZZYIIII\n", + "+0.001 * IIIIXZZZZXIIYZZYIIII\n", + "+0.001 * IIIIYZZZZYIIXZZXIIII\n", + "+0.001 * IIIIXZZZZXIIXZZXIIII\n", + "+0.002 * IIIYZZZZZYIYZZZYIIII\n", + "+0.002 * IIIXZZZZZXIYZZZYIIII\n", + "+0.002 * IIIYZZZZZYIXZZZXIIII\n", + "+0.002 * IIIXZZZZZXIXZZZXIIII\n", + "+0.000 * IIYZZZZZZYIYZZZYIIII\n", + "+0.000 * IIXZZZZZZXIYZZZYIIII\n", + "+0.000 * IIYZZZZZZYIXZZZXIIII\n", + "+0.000 * IIXZZZZZZXIXZZZXIIII\n", + "+0.008 * IYZZZZZZZYIIIIIZIIII\n", + "+0.008 * IXZZZZZZZXIIIIIZIIII\n", + "-0.006 * YZZZZZZZZYIIIIYYIIII\n", + "-0.006 * XZZZZZZZZXIIIIYYIIII\n", + "-0.006 * YZZZZZZZZYIIIIXXIIII\n", + "-0.006 * XZZZZZZZZXIIIIXXIIII\n", + "-0.000 * YZZZZZZZZYIIIYZYIIII\n", + "-0.000 * XZZZZZZZZXIIIYZYIIII\n", + "-0.000 * YZZZZZZZZYIIIXZXIIII\n", + "-0.000 * XZZZZZZZZXIIIXZXIIII\n", + "+0.119 * IIIIIIIIZIIIIIIZIIII\n", + "+0.000 * IIIIIIIYYIIIIIIZIIII\n", + "+0.000 * IIIIIIIXXIIIIIIZIIII\n", + "-0.001 * IIIIIIYZYIIIYZZYIIII\n", + "-0.001 * IIIIIIXZXIIIYZZYIIII\n", + "-0.001 * IIIIIIYZYIIIXZZXIIII\n", + "-0.001 * IIIIIIXZXIIIXZZXIIII\n", + "-0.001 * IIIIIYZZYIIIIIYYIIII\n", + "-0.001 * IIIIIXZZXIIIIIYYIIII\n", + "-0.001 * IIIIIYZZYIIIIIXXIIII\n", + "-0.001 * IIIIIXZZXIIIIIXXIIII\n", + "-0.003 * IIIIIYZZYIIIIYZYIIII\n", + "-0.003 * IIIIIXZZXIIIIYZYIIII\n", + "-0.003 * IIIIIYZZYIIIIXZXIIII\n", + "-0.003 * IIIIIXZZXIIIIXZXIIII\n", + "-0.041 * IIIIYZZZYIIIIIYYIIII\n", + "-0.041 * IIIIXZZZXIIIIIYYIIII\n", + "-0.041 * IIIIYZZZYIIIIIXXIIII\n", + "-0.041 * IIIIXZZZXIIIIIXXIIII\n", + "-0.001 * IIIIYZZZYIIIIYZYIIII\n", + "-0.001 * IIIIXZZZXIIIIYZYIIII\n", + "-0.001 * IIIIYZZZYIIIIXZXIIII\n", + "-0.001 * IIIIXZZZXIIIIXZXIIII\n", + "+0.021 * IIIYZZZZYIIIIIIZIIII\n", + "+0.021 * IIIXZZZZXIIIIIIZIIII\n", + "+0.001 * IIYZZZZZYIIIIIIZIIII\n", + "+0.001 * IIXZZZZZXIIIIIIZIIII\n", + "-0.004 * IYZZZZZZYIIYZZZYIIII\n", + "-0.004 * IXZZZZZZXIIYZZZYIIII\n", + "-0.004 * IYZZZZZZYIIXZZZXIIII\n", + "-0.004 * IXZZZZZZXIIXZZZXIIII\n", + "-0.003 * YZZZZZZZYIIIYZZYIIII\n", + "-0.003 * XZZZZZZZXIIIYZZYIIII\n", + "-0.003 * YZZZZZZZYIIIXZZXIIII\n", + "-0.003 * XZZZZZZZXIIIXZZXIIII\n", + "+0.112 * IIIIIIIZIIIIIIIZIIII\n", + "+0.000 * IIIIIIYYIIIIYZZYIIII\n", + "+0.000 * IIIIIIXXIIIIYZZYIIII\n", + "+0.000 * IIIIIIYYIIIIXZZXIIII\n", + "+0.000 * IIIIIIXXIIIIXZZXIIII\n", + "-0.035 * IIIIIYZYIIIIIIYYIIII\n", + "-0.035 * IIIIIXZXIIIIIIYYIIII\n", + "-0.035 * IIIIIYZYIIIIIIXXIIII\n", + "-0.035 * IIIIIXZXIIIIIIXXIIII\n", + "-0.001 * IIIIIYZYIIIIIYZYIIII\n", + "-0.001 * IIIIIXZXIIIIIYZYIIII\n", + "-0.001 * IIIIIYZYIIIIIXZXIIII\n", + "-0.001 * IIIIIXZXIIIIIXZXIIII\n", + "+0.001 * IIIIYZZYIIIIIIYYIIII\n", + "+0.001 * IIIIXZZXIIIIIIYYIIII\n", + "+0.001 * IIIIYZZYIIIIIIXXIIII\n", + "+0.001 * IIIIXZZXIIIIIIXXIIII\n", + "-0.003 * IIIIYZZYIIIIIYZYIIII\n", + "-0.003 * IIIIXZZXIIIIIYZYIIII\n", + "-0.003 * IIIIYZZYIIIIIXZXIIII\n", + "-0.003 * IIIIXZZXIIIIIXZXIIII\n", + "-0.001 * IIIYZZZYIIIIIIIZIIII\n", + "-0.001 * IIIXZZZXIIIIIIIZIIII\n", + "+0.016 * IIYZZZZYIIIIIIIZIIII\n", + "+0.016 * IIXZZZZXIIIIIIIZIIII\n", + "+0.000 * IYZZZZZYIIIYZZZYIIII\n", + "+0.000 * IXZZZZZXIIIYZZZYIIII\n", + "+0.000 * IYZZZZZYIIIXZZZXIIII\n", + "+0.000 * IXZZZZZXIIIXZZZXIIII\n", + "+0.000 * YZZZZZZYIIIIYZZYIIII\n", + "+0.000 * XZZZZZZXIIIIYZZYIIII\n", + "+0.000 * YZZZZZZYIIIIXZZXIIII\n", + "+0.000 * XZZZZZZXIIIIXZZXIIII\n", + "+0.122 * IIIIIIZIIIIIIIIZIIII\n", + "-0.001 * IIIIYZYIIIIYZZZYIIII\n", + "-0.001 * IIIIXZXIIIIYZZZYIIII\n", + "-0.001 * IIIIYZYIIIIXZZZXIIII\n", + "-0.001 * IIIIXZXIIIIXZZZXIIII\n", + "-0.000 * IIIYZZYIIIIIYZZYIIII\n", + "-0.000 * IIIXZZXIIIIIYZZYIIII\n", + "-0.000 * IIIYZZYIIIIIXZZXIIII\n", + "-0.000 * IIIXZZXIIIIIXZZXIIII\n", + "-0.000 * IIYZZZYIIIIIYZZYIIII\n", + "-0.000 * IIXZZZXIIIIIYZZYIIII\n", + "-0.000 * IIYZZZYIIIIIXZZXIIII\n", + "-0.000 * IIXZZZXIIIIIXZZXIIII\n", + "+0.019 * IYZZZZYIIIIIIIYYIIII\n", + "+0.019 * IXZZZZXIIIIIIIYYIIII\n", + "+0.019 * IYZZZZYIIIIIIIXXIIII\n", + "+0.019 * IXZZZZXIIIIIIIXXIIII\n", + "+0.000 * IYZZZZYIIIIIIYZYIIII\n", + "+0.000 * IXZZZZXIIIIIIYZYIIII\n", + "+0.000 * IYZZZZYIIIIIIXZXIIII\n", + "+0.000 * IXZZZZXIIIIIIXZXIIII\n", + "-0.006 * YZZZZZYIIIIIIIIZIIII\n", + "-0.006 * XZZZZZXIIIIIIIIZIIII\n", + "+0.126 * IIIIIZIIIIIIIIIZIIII\n", + "-0.001 * IIIYZYIIIIIIIIYYIIII\n", + "-0.001 * IIIXZXIIIIIIIIYYIIII\n", + "-0.001 * IIIYZYIIIIIIIIXXIIII\n", + "-0.001 * IIIXZXIIIIIIIIXXIIII\n", + "+0.003 * IIIYZYIIIIIIIYZYIIII\n", + "+0.003 * IIIXZXIIIIIIIYZYIIII\n", + "+0.003 * IIIYZYIIIIIIIXZXIIII\n", + "+0.003 * IIIXZXIIIIIIIXZXIIII\n", + "+0.031 * IIYZZYIIIIIIIIYYIIII\n", + "+0.031 * IIXZZXIIIIIIIIYYIIII\n", + "+0.031 * IIYZZYIIIIIIIIXXIIII\n", + "+0.031 * IIXZZXIIIIIIIIXXIIII\n", + "+0.001 * IIYZZYIIIIIIIYZYIIII\n", + "+0.001 * IIXZZXIIIIIIIYZYIIII\n", + "+0.001 * IIYZZYIIIIIIIXZXIIII\n", + "+0.001 * IIXZZXIIIIIIIXZXIIII\n", + "+0.138 * IIIIZIIIIIIIIIIZIIII\n", + "+0.037 * IIIYYIIIIIIIIIYYIIII\n", + "+0.037 * IIIXXIIIIIIIIIYYIIII\n", + "+0.037 * IIIYYIIIIIIIIIXXIIII\n", + "+0.037 * IIIXXIIIIIIIIIXXIIII\n", + "+0.001 * IIIYYIIIIIIIIYZYIIII\n", + "+0.001 * IIIXXIIIIIIIIYZYIIII\n", + "+0.001 * IIIYYIIIIIIIIXZXIIII\n", + "+0.001 * IIIXXIIIIIIIIXZXIIII\n", + "+0.001 * IIYZYIIIIIIIIIYYIIII\n", + "+0.001 * IIXZXIIIIIIIIIYYIIII\n", + "+0.001 * IIYZYIIIIIIIIIXXIIII\n", + "+0.001 * IIXZXIIIIIIIIIXXIIII\n", + "+0.003 * IIYZYIIIIIIIIYZYIIII\n", + "+0.003 * IIXZXIIIIIIIIYZYIIII\n", + "+0.003 * IIYZYIIIIIIIIXZXIIII\n", + "+0.003 * IIXZXIIIIIIIIXZXIIII\n", + "+0.005 * IYZZYIIIIIIIYZZYIIII\n", + "+0.005 * IXZZXIIIIIIIYZZYIIII\n", + "+0.005 * IYZZYIIIIIIIXZZXIIII\n", + "+0.005 * IXZZXIIIIIIIXZZXIIII\n", + "+0.005 * YZZZYIIIIIIYZZZYIIII\n", + "+0.005 * XZZZXIIIIIIYZZZYIIII\n", + "+0.005 * YZZZYIIIIIIXZZZXIIII\n", + "+0.005 * XZZZXIIIIIIXZZZXIIII\n", + "+0.118 * IIIZIIIIIIIIIIIZIIII\n", + "-0.000 * IIYYIIIIIIIIIIIZIIII\n", + "-0.000 * IIXXIIIIIIIIIIIZIIII\n", + "+0.003 * IYZYIIIIIIIYZZZYIIII\n", + "+0.003 * IXZXIIIIIIIYZZZYIIII\n", + "+0.003 * IYZYIIIIIIIXZZZXIIII\n", + "+0.003 * IXZXIIIIIIIXZZZXIIII\n", + "+0.004 * YZZYIIIIIIIIYZZYIIII\n", + "+0.004 * XZZXIIIIIIIIYZZYIIII\n", + "+0.004 * YZZYIIIIIIIIXZZXIIII\n", + "+0.004 * XZZXIIIIIIIIXZZXIIII\n", + "+0.112 * IIZIIIIIIIIIIIIZIIII\n", + "+0.000 * IYYIIIIIIIIYZZZYIIII\n", + "+0.000 * IXXIIIIIIIIYZZZYIIII\n", + "+0.000 * IYYIIIIIIIIXZZZXIIII\n", + "+0.000 * IXXIIIIIIIIXZZZXIIII\n", + "+0.000 * YZYIIIIIIIIIYZZYIIII\n", + "+0.000 * XZXIIIIIIIIIYZZYIIII\n", + "+0.000 * YZYIIIIIIIIIXZZXIIII\n", + "+0.000 * XZXIIIIIIIIIXZZXIIII\n", + "+0.119 * IZIIIIIIIIIIIIIZIIII\n", + "+0.030 * YYIIIIIIIIIIIIYYIIII\n", + "+0.030 * XXIIIIIIIIIIIIYYIIII\n", + "+0.030 * YYIIIIIIIIIIIIXXIIII\n", + "+0.030 * XXIIIIIIIIIIIIXXIIII\n", + "+0.001 * YYIIIIIIIIIIIYZYIIII\n", + "+0.001 * XXIIIIIIIIIIIYZYIIII\n", + "+0.001 * YYIIIIIIIIIIIXZXIIII\n", + "+0.001 * XXIIIIIIIIIIIXZXIIII\n", + "+0.124 * ZIIIIIIIIIIIIIIZIIII\n", + "+0.119 * IIIIIIIIIIIIIZZIIIII\n", + "+0.114 * IIIIIIIIIIIIZIZIIIII\n", + "+0.132 * IIIIIIIIIIIZIIZIIIII\n", + "+0.125 * ZZZZZZZZZZZIIIZIIIII\n", + "+0.011 * ZZZZZZZZZXIIIIZIIIII\n", + "-0.011 * IIIIIIIIIXZIIIZIIIII\n", + "-0.013 * ZZZZZZZZXIIIYZYIIIII\n", + "+0.013 * IIIIIIIIXZZIYZYIIIII\n", + "-0.013 * ZZZZZZZZXIIIXZXIIIII\n", + "+0.013 * IIIIIIIIXZZIXZXIIIII\n", + "+0.001 * ZZZZZZZXIIIIYZYIIIII\n", + "-0.001 * IIIIIIIXZZZIYZYIIIII\n", + "+0.001 * ZZZZZZZXIIIIXZXIIIII\n", + "-0.001 * IIIIIIIXZZZIXZXIIIII\n", + "-0.000 * ZZZZZXIIIIIYZZYIIIII\n", + "+0.000 * IIIIIXZZZZZYZZYIIIII\n", + "-0.000 * ZZZZZXIIIIIXZZXIIIII\n", + "+0.000 * IIIIIXZZZZZXZZXIIIII\n", + "+0.007 * ZZZZXIIIIIIYZZYIIIII\n", + "-0.007 * IIIIXZZZZZZYZZYIIIII\n", + "+0.007 * ZZZZXIIIIIIXZZXIIIII\n", + "-0.007 * IIIIXZZZZZZXZZXIIIII\n", + "-0.004 * ZZZXIIIIIIIIYZYIIIII\n", + "+0.004 * IIIXZZZZZZZIYZYIIIII\n", + "-0.004 * ZZZXIIIIIIIIXZXIIIII\n", + "+0.004 * IIIXZZZZZZZIXZXIIIII\n", + "-0.001 * ZXIIIIIIIIIIIIZIIIII\n", + "+0.001 * IXZZZZZZZZZIIIZIIIII\n", + "+0.123 * IIIIIIIIIIZIIIZIIIII\n", + "-0.007 * IIIIIIIIYZYYZZYIIIII\n", + "-0.007 * IIIIIIIIXZXYZZYIIIII\n", + "-0.007 * IIIIIIIIYZYXZZXIIIII\n", + "-0.007 * IIIIIIIIXZXXZZXIIIII\n", + "+0.000 * IIIIIIIYZZYYZZYIIIII\n", + "+0.000 * IIIIIIIXZZXYZZYIIIII\n", + "+0.000 * IIIIIIIYZZYXZZXIIIII\n", + "+0.000 * IIIIIIIXZZXXZZXIIIII\n", + "-0.012 * IIIIIIYZZZYIIIZIIIII\n", + "-0.012 * IIIIIIXZZZXIIIZIIIII\n", + "-0.000 * IIIIIYZZZZYIYZYIIIII\n", + "-0.000 * IIIIIXZZZZXIYZYIIIII\n", + "-0.000 * IIIIIYZZZZYIXZXIIIII\n", + "-0.000 * IIIIIXZZZZXIXZXIIIII\n", + "+0.009 * IIIIYZZZZZYIYZYIIIII\n", + "+0.009 * IIIIXZZZZZXIYZYIIIII\n", + "+0.009 * IIIIYZZZZZYIXZXIIIII\n", + "+0.009 * IIIIXZZZZZXIXZXIIIII\n", + "+0.002 * IIIYZZZZZZYYZZYIIIII\n", + "+0.002 * IIIXZZZZZZXYZZYIIIII\n", + "+0.002 * IIIYZZZZZZYXZZXIIIII\n", + "+0.002 * IIIXZZZZZZXXZZXIIIII\n", + "+0.002 * YZZZZZZZZZYIIIZIIIII\n", + "+0.002 * XZZZZZZZZZXIIIZIIIII\n", + "+0.113 * IIIIIIIIIZIIIIZIIIII\n", + "+0.006 * IIIIIIIIYYIIYZYIIIII\n", + "+0.006 * IIIIIIIIXXIIYZYIIIII\n", + "+0.006 * IIIIIIIIYYIIXZXIIIII\n", + "+0.006 * IIIIIIIIXXIIXZXIIIII\n", + "-0.000 * IIIIIIIYZYIIYZYIIIII\n", + "-0.000 * IIIIIIIXZXIIYZYIIIII\n", + "-0.000 * IIIIIIIYZYIIXZXIIIII\n", + "-0.000 * IIIIIIIXZXIIXZXIIIII\n", + "-0.000 * IIIIIYZZZYIYZZYIIIII\n", + "-0.000 * IIIIIXZZZXIYZZYIIIII\n", + "-0.000 * IIIIIYZZZYIXZZXIIIII\n", + "-0.000 * IIIIIXZZZXIXZZXIIIII\n", + "+0.001 * IIIIYZZZZYIYZZYIIIII\n", + "+0.001 * IIIIXZZZZXIYZZYIIIII\n", + "+0.001 * IIIIYZZZZYIXZZXIIIII\n", + "+0.001 * IIIIXZZZZXIXZZXIIIII\n", + "+0.009 * IIIYZZZZZYIIYZYIIIII\n", + "+0.009 * IIIXZZZZZXIIYZYIIIII\n", + "+0.009 * IIIYZZZZZYIIXZXIIIII\n", + "+0.009 * IIIXZZZZZXIIXZXIIIII\n", + "-0.009 * IYZZZZZZZYIIIIZIIIII\n", + "-0.009 * IXZZZZZZZXIIIIZIIIII\n", + "+0.126 * IIIIIIIIZIIIIIZIIIII\n", + "-0.000 * IIIIIIIIZIIIIYYIIIII\n", + "-0.000 * IIIIIIIIZIIIIXXIIIII\n", + "+0.000 * IIIIIIIYYIIIIIZIIIII\n", + "+0.000 * IIIIIIIXXIIIIIZIIIII\n", + "+0.004 * IIIIIIIYYIIIIYYIIIII\n", + "+0.004 * IIIIIIIXXIIIIYYIIIII\n", + "+0.004 * IIIIIIIYYIIIIXXIIIII\n", + "+0.004 * IIIIIIIXXIIIIXXIIIII\n", + "-0.002 * IIIIIIYZYIIYZZYIIIII\n", + "-0.002 * IIIIIIXZXIIYZZYIIIII\n", + "-0.002 * IIIIIIYZYIIXZZXIIIII\n", + "-0.002 * IIIIIIXZXIIXZZXIIIII\n", + "-0.011 * IIIYZZZZYIIIIIZIIIII\n", + "-0.011 * IIIXZZZZXIIIIIZIIIII\n", + "+0.000 * IIIYZZZZYIIIIYYIIIII\n", + "+0.000 * IIIXZZZZXIIIIYYIIIII\n", + "+0.000 * IIIYZZZZYIIIIXXIIIII\n", + "+0.000 * IIIXZZZZXIIIIXXIIIII\n", + "-0.000 * IIYZZZZZYIIIIIZIIIII\n", + "-0.000 * IIXZZZZZXIIIIIZIIIII\n", + "+0.001 * IIYZZZZZYIIIIYYIIIII\n", + "+0.001 * IIXZZZZZXIIIIYYIIIII\n", + "+0.001 * IIYZZZZZYIIIIXXIIIII\n", + "+0.001 * IIXZZZZZXIIIIXXIIIII\n", + "+0.006 * IYZZZZZZYIIIYZYIIIII\n", + "+0.006 * IXZZZZZZXIIIYZYIIIII\n", + "+0.006 * IYZZZZZZYIIIXZXIIIII\n", + "+0.006 * IXZZZZZZXIIIXZXIIIII\n", + "+0.000 * YZZZZZZZYIIYZZYIIIII\n", + "+0.000 * XZZZZZZZXIIYZZYIIIII\n", + "+0.000 * YZZZZZZZYIIXZZXIIIII\n", + "+0.000 * XZZZZZZZXIIXZZXIIIII\n", + "+0.118 * IIIIIIIZIIIIIIZIIIII\n", + "+0.000 * IIIIIIIZIIIIIYYIIIII\n", + "+0.000 * IIIIIIIZIIIIIXXIIIII\n", + "+0.000 * IIIIIIYYIIIYZZYIIIII\n", + "+0.000 * IIIIIIXXIIIYZZYIIIII\n", + "+0.000 * IIIIIIYYIIIXZZXIIIII\n", + "+0.000 * IIIIIIXXIIIXZZXIIIII\n", + "+0.001 * IIIYZZZYIIIIIIZIIIII\n", + "+0.001 * IIIXZZZXIIIIIIZIIIII\n", + "+0.001 * IIIYZZZYIIIIIYYIIIII\n", + "+0.001 * IIIXZZZXIIIIIYYIIIII\n", + "+0.001 * IIIYZZZYIIIIIXXIIIII\n", + "+0.001 * IIIXZZZXIIIIIXXIIIII\n", + "-0.009 * IIYZZZZYIIIIIIZIIIII\n", + "-0.009 * IIXZZZZXIIIIIIZIIIII\n", + "-0.000 * IIYZZZZYIIIIIYYIIIII\n", + "-0.000 * IIXZZZZXIIIIIYYIIIII\n", + "-0.000 * IIYZZZZYIIIIIXXIIIII\n", + "-0.000 * IIXZZZZXIIIIIXXIIIII\n", + "-0.000 * IYZZZZZYIIIIYZYIIIII\n", + "-0.000 * IXZZZZZXIIIIYZYIIIII\n", + "-0.000 * IYZZZZZYIIIIXZXIIIII\n", + "-0.000 * IXZZZZZXIIIIXZXIIIII\n", + "-0.000 * YZZZZZZYIIIYZZYIIIII\n", + "-0.000 * XZZZZZZXIIIYZZYIIIII\n", + "-0.000 * YZZZZZZYIIIXZZXIIIII\n", + "-0.000 * XZZZZZZXIIIXZZXIIIII\n", + "+0.113 * IIIIIIZIIIIIIIZIIIII\n", + "-0.000 * IIIIIYYIIIIIYZYIIIII\n", + "-0.000 * IIIIIXXIIIIIYZYIIIII\n", + "-0.000 * IIIIIYYIIIIIXZXIIIII\n", + "-0.000 * IIIIIXXIIIIIXZXIIIII\n", + "+0.001 * IIIIYZYIIIIIYZYIIIII\n", + "+0.001 * IIIIXZXIIIIIYZYIIIII\n", + "+0.001 * IIIIYZYIIIIIXZXIIIII\n", + "+0.001 * IIIIXZXIIIIIXZXIIIII\n", + "-0.003 * IIIYZZYIIIIYZZYIIIII\n", + "-0.003 * IIIXZZXIIIIYZZYIIIII\n", + "-0.003 * IIIYZZYIIIIXZZXIIIII\n", + "-0.003 * IIIXZZXIIIIXZZXIIIII\n", + "+0.011 * YZZZZZYIIIIIIIZIIIII\n", + "+0.011 * XZZZZZXIIIIIIIZIIIII\n", + "+0.112 * IIIIIZIIIIIIIIZIIIII\n", + "+0.000 * IIIIIZIIIIIIIYYIIIII\n", + "+0.000 * IIIIIZIIIIIIIXXIIIII\n", + "+0.000 * IIIIYYIIIIIIIIZIIIII\n", + "+0.000 * IIIIXXIIIIIIIIZIIIII\n", + "+0.003 * IIIIYYIIIIIIIYYIIIII\n", + "+0.003 * IIIIXXIIIIIIIYYIIIII\n", + "+0.003 * IIIIYYIIIIIIIXXIIIII\n", + "+0.003 * IIIIXXIIIIIIIXXIIIII\n", + "-0.000 * IYZZZYIIIIIYZZYIIIII\n", + "-0.000 * IXZZZXIIIIIYZZYIIIII\n", + "-0.000 * IYZZZYIIIIIXZZXIIIII\n", + "-0.000 * IXZZZXIIIIIXZZXIIIII\n", + "-0.000 * YZZZZYIIIIIIYZYIIIII\n", + "-0.000 * XZZZZXIIIIIIYZYIIIII\n", + "-0.000 * YZZZZYIIIIIIXZXIIIII\n", + "-0.000 * XZZZZXIIIIIIXZXIIIII\n", + "+0.118 * IIIIZIIIIIIIIIZIIIII\n", + "-0.000 * IIIIZIIIIIIIIYYIIIII\n", + "-0.000 * IIIIZIIIIIIIIXXIIIII\n", + "+0.004 * IYZZYIIIIIIYZZYIIIII\n", + "+0.004 * IXZZXIIIIIIYZZYIIIII\n", + "+0.004 * IYZZYIIIIIIXZZXIIIII\n", + "+0.004 * IXZZXIIIIIIXZZXIIIII\n", + "+0.003 * YZZZYIIIIIIIYZYIIIII\n", + "+0.003 * XZZZXIIIIIIIYZYIIIII\n", + "+0.003 * YZZZYIIIIIIIXZXIIIII\n", + "+0.003 * XZZZXIIIIIIIXZXIIIII\n", + "+0.134 * IIIZIIIIIIIIIIZIIIII\n", + "+0.005 * IIYYIIIIIIIIIYYIIIII\n", + "+0.005 * IIXXIIIIIIIIIYYIIIII\n", + "+0.005 * IIYYIIIIIIIIIXXIIIII\n", + "+0.005 * IIXXIIIIIIIIIXXIIIII\n", + "+0.015 * IYZYIIIIIIIIYZYIIIII\n", + "+0.015 * IXZXIIIIIIIIYZYIIIII\n", + "+0.015 * IYZYIIIIIIIIXZXIIIII\n", + "+0.015 * IXZXIIIIIIIIXZXIIIII\n", + "+0.007 * YZZYIIIIIIIYZZYIIIII\n", + "+0.007 * XZZXIIIIIIIYZZYIIIII\n", + "+0.007 * YZZYIIIIIIIXZZXIIIII\n", + "+0.007 * XZZXIIIIIIIXZZXIIIII\n", + "+0.124 * IIZIIIIIIIIIIIZIIIII\n", + "+0.129 * IZIIIIIIIIIIIIZIIIII\n", + "+0.139 * ZIIIIIIIIIIIIIZIIIII\n", + "+0.114 * IIIIIIIIIIIIZZIIIIII\n", + "+0.132 * IIIIIIIIIIIZIZIIIIII\n", + "+0.125 * ZZZZZZZZZZZIIZIIIIII\n", + "+0.011 * ZZZZZZZZZXIIIZIIIIII\n", + "-0.011 * IIIIIIIIIXZIIZIIIIII\n", + "-0.001 * ZZZZZZZZXIIIYYIIIIII\n", + "+0.001 * IIIIIIIIXZZIYYIIIIII\n", + "-0.001 * ZZZZZZZZXIIIXXIIIIII\n", + "+0.001 * IIIIIIIIXZZIXXIIIIII\n", + "-0.013 * ZZZZZZZXIIIIYYIIIIII\n", + "+0.013 * IIIIIIIXZZZIYYIIIIII\n", + "-0.013 * ZZZZZZZXIIIIXXIIIIII\n", + "+0.013 * IIIIIIIXZZZIXXIIIIII\n", + "+0.007 * ZZZZZXIIIIIYZYIIIIII\n", + "-0.007 * IIIIIXZZZZZYZYIIIIII\n", + "+0.007 * ZZZZZXIIIIIXZXIIIIII\n", + "-0.007 * IIIIIXZZZZZXZXIIIIII\n", + "+0.000 * ZZZZXIIIIIIYZYIIIIII\n", + "-0.000 * IIIIXZZZZZZYZYIIIIII\n", + "+0.000 * ZZZZXIIIIIIXZXIIIIII\n", + "-0.000 * IIIIXZZZZZZXZXIIIIII\n", + "-0.004 * ZZXIIIIIIIIIYYIIIIII\n", + "+0.004 * IIXZZZZZZZZIYYIIIIII\n", + "-0.004 * ZZXIIIIIIIIIXXIIIIII\n", + "+0.004 * IIXZZZZZZZZIXXIIIIII\n", + "-0.001 * ZXIIIIIIIIIIIZIIIIII\n", + "+0.001 * IXZZZZZZZZZIIZIIIIII\n", + "+0.123 * IIIIIIIIIIZIIZIIIIII\n", + "-0.000 * IIIIIIIIYZYYZYIIIIII\n", + "-0.000 * IIIIIIIIXZXYZYIIIIII\n", + "-0.000 * IIIIIIIIYZYXZXIIIIII\n", + "-0.000 * IIIIIIIIXZXXZXIIIIII\n", + "-0.007 * IIIIIIIYZZYYZYIIIIII\n", + "-0.007 * IIIIIIIXZZXYZYIIIIII\n", + "-0.007 * IIIIIIIYZZYXZXIIIIII\n", + "-0.007 * IIIIIIIXZZXXZXIIIIII\n", + "-0.012 * IIIIIIYZZZYIIZIIIIII\n", + "-0.012 * IIIIIIXZZZXIIZIIIIII\n", + "+0.009 * IIIIIYZZZZYIYYIIIIII\n", + "+0.009 * IIIIIXZZZZXIYYIIIIII\n", + "+0.009 * IIIIIYZZZZYIXXIIIIII\n", + "+0.009 * IIIIIXZZZZXIXXIIIIII\n", + "+0.000 * IIIIYZZZZZYIYYIIIIII\n", + "+0.000 * IIIIXZZZZZXIYYIIIIII\n", + "+0.000 * IIIIYZZZZZYIXXIIIIII\n", + "+0.000 * IIIIXZZZZZXIXXIIIIII\n", + "+0.002 * IIYZZZZZZZYYZYIIIIII\n", + "+0.002 * IIXZZZZZZZXYZYIIIIII\n", + "+0.002 * IIYZZZZZZZYXZXIIIIII\n", + "+0.002 * IIXZZZZZZZXXZXIIIIII\n", + "+0.002 * YZZZZZZZZZYIIZIIIIII\n", + "+0.002 * XZZZZZZZZZXIIZIIIIII\n", + "+0.113 * IIIIIIIIIZIIIZIIIIII\n", + "+0.000 * IIIIIIIIYYIIYYIIIIII\n", + "+0.000 * IIIIIIIIXXIIYYIIIIII\n", + "+0.000 * IIIIIIIIYYIIXXIIIIII\n", + "+0.000 * IIIIIIIIXXIIXXIIIIII\n", + "+0.006 * IIIIIIIYZYIIYYIIIIII\n", + "+0.006 * IIIIIIIXZXIIYYIIIIII\n", + "+0.006 * IIIIIIIYZYIIXXIIIIII\n", + "+0.006 * IIIIIIIXZXIIXXIIIIII\n", + "+0.001 * IIIIIYZZZYIYZYIIIIII\n", + "+0.001 * IIIIIXZZZXIYZYIIIIII\n", + "+0.001 * IIIIIYZZZYIXZXIIIIII\n", + "+0.001 * IIIIIXZZZXIXZXIIIIII\n", + "+0.000 * IIIIYZZZZYIYZYIIIIII\n", + "+0.000 * IIIIXZZZZXIYZYIIIIII\n", + "+0.000 * IIIIYZZZZYIXZXIIIIII\n", + "+0.000 * IIIIXZZZZXIXZXIIIIII\n", + "+0.009 * IIYZZZZZZYIIYYIIIIII\n", + "+0.009 * IIXZZZZZZXIIYYIIIIII\n", + "+0.009 * IIYZZZZZZYIIXXIIIIII\n", + "+0.009 * IIXZZZZZZXIIXXIIIIII\n", + "-0.009 * IYZZZZZZZYIIIZIIIIII\n", + "-0.009 * IXZZZZZZZXIIIZIIIIII\n", + "+0.118 * IIIIIIIIZIIIIZIIIIII\n", + "-0.000 * IIIIIIIYYIIIIZIIIIII\n", + "-0.000 * IIIIIIIXXIIIIZIIIIII\n", + "-0.000 * IIIIIIYZYIIYZYIIIIII\n", + "-0.000 * IIIIIIXZXIIYZYIIIIII\n", + "-0.000 * IIIIIIYZYIIXZXIIIIII\n", + "-0.000 * IIIIIIXZXIIXZXIIIIII\n", + "-0.009 * IIIYZZZZYIIIIZIIIIII\n", + "-0.009 * IIIXZZZZXIIIIZIIIIII\n", + "-0.001 * IIYZZZZZYIIIIZIIIIII\n", + "-0.001 * IIXZZZZZXIIIIZIIIIII\n", + "+0.000 * IYZZZZZZYIIIYYIIIIII\n", + "+0.000 * IXZZZZZZXIIIYYIIIIII\n", + "+0.000 * IYZZZZZZYIIIXXIIIIII\n", + "+0.000 * IXZZZZZZXIIIXXIIIIII\n", + "+0.000 * YZZZZZZZYIIYZYIIIIII\n", + "+0.000 * XZZZZZZZXIIYZYIIIIII\n", + "+0.000 * YZZZZZZZYIIXZXIIIIII\n", + "+0.000 * XZZZZZZZXIIXZXIIIIII\n", + "+0.126 * IIIIIIIZIIIIIZIIIIII\n", + "-0.002 * IIIIIIYYIIIYZYIIIIII\n", + "-0.002 * IIIIIIXXIIIYZYIIIIII\n", + "-0.002 * IIIIIIYYIIIXZXIIIIII\n", + "-0.002 * IIIIIIXXIIIXZXIIIIII\n", + "+0.000 * IIIYZZZYIIIIIZIIIIII\n", + "+0.000 * IIIXZZZXIIIIIZIIIIII\n", + "-0.011 * IIYZZZZYIIIIIZIIIIII\n", + "-0.011 * IIXZZZZXIIIIIZIIIIII\n", + "+0.006 * IYZZZZZYIIIIYYIIIIII\n", + "+0.006 * IXZZZZZXIIIIYYIIIIII\n", + "+0.006 * IYZZZZZYIIIIXXIIIIII\n", + "+0.006 * IXZZZZZXIIIIXXIIIIII\n", + "+0.000 * YZZZZZZYIIIYZYIIIIII\n", + "+0.000 * XZZZZZZXIIIYZYIIIIII\n", + "+0.000 * YZZZZZZYIIIXZXIIIIII\n", + "+0.000 * XZZZZZZXIIIXZXIIIIII\n", + "+0.113 * IIIIIIZIIIIIIZIIIIII\n", + "+0.001 * IIIIIYYIIIIIYYIIIIII\n", + "+0.001 * IIIIIXXIIIIIYYIIIIII\n", + "+0.001 * IIIIIYYIIIIIXXIIIIII\n", + "+0.001 * IIIIIXXIIIIIXXIIIIII\n", + "+0.000 * IIIIYZYIIIIIYYIIIIII\n", + "+0.000 * IIIIXZXIIIIIYYIIIIII\n", + "+0.000 * IIIIYZYIIIIIXXIIIIII\n", + "+0.000 * IIIIXZXIIIIIXXIIIIII\n", + "-0.003 * IIYZZZYIIIIYZYIIIIII\n", + "-0.003 * IIXZZZXIIIIYZYIIIIII\n", + "-0.003 * IIYZZZYIIIIXZXIIIIII\n", + "-0.003 * IIXZZZXIIIIXZXIIIIII\n", + "+0.011 * YZZZZZYIIIIIIZIIIIII\n", + "+0.011 * XZZZZZXIIIIIIZIIIIII\n", + "+0.118 * IIIIIZIIIIIIIZIIIIII\n", + "-0.000 * IIIIYYIIIIIIIZIIIIII\n", + "-0.000 * IIIIXXIIIIIIIZIIIIII\n", + "+0.004 * IYZZZYIIIIIYZYIIIIII\n", + "+0.004 * IXZZZXIIIIIYZYIIIIII\n", + "+0.004 * IYZZZYIIIIIXZXIIIIII\n", + "+0.004 * IXZZZXIIIIIXZXIIIIII\n", + "+0.003 * YZZZZYIIIIIIYYIIIIII\n", + "+0.003 * XZZZZXIIIIIIYYIIIIII\n", + "+0.003 * YZZZZYIIIIIIXXIIIIII\n", + "+0.003 * XZZZZXIIIIIIXXIIIIII\n", + "+0.112 * IIIIZIIIIIIIIZIIIIII\n", + "+0.000 * IYZZYIIIIIIYZYIIIIII\n", + "+0.000 * IXZZXIIIIIIYZYIIIIII\n", + "+0.000 * IYZZYIIIIIIXZXIIIIII\n", + "+0.000 * IXZZXIIIIIIXZXIIIIII\n", + "+0.000 * YZZZYIIIIIIIYYIIIIII\n", + "+0.000 * XZZZXIIIIIIIYYIIIIII\n", + "+0.000 * YZZZYIIIIIIIXXIIIIII\n", + "+0.000 * XZZZXIIIIIIIXXIIIIII\n", + "+0.124 * IIIZIIIIIIIIIZIIIIII\n", + "+0.134 * IIZIIIIIIIIIIZIIIIII\n", + "+0.015 * IYYIIIIIIIIIYYIIIIII\n", + "+0.015 * IXXIIIIIIIIIYYIIIIII\n", + "+0.015 * IYYIIIIIIIIIXXIIIIII\n", + "+0.015 * IXXIIIIIIIIIXXIIIIII\n", + "+0.007 * YZYIIIIIIIIYZYIIIIII\n", + "+0.007 * XZXIIIIIIIIYZYIIIIII\n", + "+0.007 * YZYIIIIIIIIXZXIIIIII\n", + "+0.007 * XZXIIIIIIIIXZXIIIIII\n", + "+0.129 * IZIIIIIIIIIIIZIIIIII\n", + "+0.139 * ZIIIIIIIIIIIIZIIIIII\n", + "+0.108 * IIIIIIIIIIIZZIIIIIII\n", + "+0.133 * ZZZZZZZZZZZIZIIIIIII\n", + "+0.045 * ZZZZZZZZZZXYYIIIIIII\n", + "-0.045 * IIIIIIIIIIXYYIIIIIII\n", + "+0.045 * ZZZZZZZZZZXXXIIIIIII\n", + "-0.045 * IIIIIIIIIIXXXIIIIIII\n", + "+0.012 * ZZZZZZZZZXIIZIIIIIII\n", + "-0.012 * IIIIIIIIIXZIZIIIIIII\n", + "+0.004 * ZZZZZZXIIIIYYIIIIIII\n", + "-0.004 * IIIIIIXZZZZYYIIIIIII\n", + "+0.004 * ZZZZZZXIIIIXXIIIIIII\n", + "-0.004 * IIIIIIXZZZZXXIIIIIII\n", + "-0.010 * ZXIIIIIIIIIIZIIIIIII\n", + "+0.010 * IXZZZZZZZZZIZIIIIIII\n", + "+0.012 * XIIIIIIIIIIYYIIIIIII\n", + "-0.012 * XZZZZZZZZZZYYIIIIIII\n", + "+0.012 * XIIIIIIIIIIXXIIIIIII\n", + "-0.012 * XZZZZZZZZZZXXIIIIIII\n", + "+0.132 * IIIIIIIIIIZIZIIIIIII\n", + "+0.007 * IIIIIIIIIYYYYIIIIIII\n", + "+0.007 * IIIIIIIIIXXYYIIIIIII\n", + "+0.007 * IIIIIIIIIYYXXIIIIIII\n", + "+0.007 * IIIIIIIIIXXXXIIIIIII\n", + "-0.016 * IIIIIIYZZZYIZIIIIIII\n", + "-0.016 * IIIIIIXZZZXIZIIIIIII\n", + "+0.020 * IYZZZZZZZZYYYIIIIIII\n", + "+0.020 * IXZZZZZZZZXYYIIIIIII\n", + "+0.020 * IYZZZZZZZZYXXIIIIIII\n", + "+0.020 * IXZZZZZZZZXXXIIIIIII\n", + "-0.005 * YZZZZZZZZZYIZIIIIIII\n", + "-0.005 * XZZZZZZZZZXIZIIIIIII\n", + "+0.115 * IIIIIIIIIZIIZIIIIIII\n", + "-0.040 * IIIIIIYZZYIYYIIIIIII\n", + "-0.040 * IIIIIIXZZXIYYIIIIIII\n", + "-0.040 * IIIIIIYZZYIXXIIIIIII\n", + "-0.040 * IIIIIIXZZXIXXIIIIIII\n", + "-0.005 * IYZZZZZZZYIIZIIIIIII\n", + "-0.005 * IXZZZZZZZXIIZIIIIIII\n", + "-0.002 * YZZZZZZZZYIYYIIIIIII\n", + "-0.002 * XZZZZZZZZXIYYIIIIIII\n", + "-0.002 * YZZZZZZZZYIXXIIIIIII\n", + "-0.002 * XZZZZZZZZXIXXIIIIIII\n", + "+0.124 * IIIIIIIIZIIIZIIIIIII\n", + "-0.001 * IIIIIYZZYIIYYIIIIIII\n", + "-0.001 * IIIIIXZZXIIYYIIIIIII\n", + "-0.001 * IIIIIYZZYIIXXIIIIIII\n", + "-0.001 * IIIIIXZZXIIXXIIIIIII\n", + "-0.037 * IIIIYZZZYIIYYIIIIIII\n", + "-0.037 * IIIIXZZZXIIYYIIIIIII\n", + "-0.037 * IIIIYZZZYIIXXIIIIIII\n", + "-0.037 * IIIIXZZZXIIXXIIIIIII\n", + "-0.006 * IIIYZZZZYIIIZIIIIIII\n", + "-0.006 * IIIXZZZZXIIIZIIIIIII\n", + "-0.000 * IIYZZZZZYIIIZIIIIIII\n", + "-0.000 * IIXZZZZZXIIIZIIIIIII\n", + "+0.124 * IIIIIIIZIIIIZIIIIIII\n", + "-0.037 * IIIIIYZYIIIYYIIIIIII\n", + "-0.037 * IIIIIXZXIIIYYIIIIIII\n", + "-0.037 * IIIIIYZYIIIXXIIIIIII\n", + "-0.037 * IIIIIXZXIIIXXIIIIIII\n", + "+0.001 * IIIIYZZYIIIYYIIIIIII\n", + "+0.001 * IIIIXZZXIIIYYIIIIIII\n", + "+0.001 * IIIIYZZYIIIXXIIIIIII\n", + "+0.001 * IIIIXZZXIIIXXIIIIIII\n", + "+0.000 * IIIYZZZYIIIIZIIIIIII\n", + "+0.000 * IIIXZZZXIIIIZIIIIIII\n", + "-0.006 * IIYZZZZYIIIIZIIIIIII\n", + "-0.006 * IIXZZZZXIIIIZIIIIIII\n", + "+0.118 * IIIIIIZIIIIIZIIIIIII\n", + "+0.019 * IYZZZZYIIIIYYIIIIIII\n", + "+0.019 * IXZZZZXIIIIYYIIIIIII\n", + "+0.019 * IYZZZZYIIIIXXIIIIIII\n", + "+0.019 * IXZZZZXIIIIXXIIIIIII\n", + "+0.006 * YZZZZZYIIIIIZIIIIIII\n", + "+0.006 * XZZZZZXIIIIIZIIIIIII\n", + "+0.119 * IIIIIZIIIIIIZIIIIIII\n", + "-0.001 * IIIYZYIIIIIYYIIIIIII\n", + "-0.001 * IIIXZXIIIIIYYIIIIIII\n", + "-0.001 * IIIYZYIIIIIXXIIIIIII\n", + "-0.001 * IIIXZXIIIIIXXIIIIIII\n", + "+0.030 * IIYZZYIIIIIYYIIIIIII\n", + "+0.030 * IIXZZXIIIIIYYIIIIIII\n", + "+0.030 * IIYZZYIIIIIXXIIIIIII\n", + "+0.030 * IIXZZXIIIIIXXIIIIIII\n", + "+0.119 * IIIIZIIIIIIIZIIIIIII\n", + "+0.030 * IIIYYIIIIIIYYIIIIIII\n", + "+0.030 * IIIXXIIIIIIYYIIIIIII\n", + "+0.030 * IIIYYIIIIIIXXIIIIIII\n", + "+0.030 * IIIXXIIIIIIXXIIIIIII\n", + "+0.001 * IIYZYIIIIIIYYIIIIIII\n", + "+0.001 * IIXZXIIIIIIYYIIIIIII\n", + "+0.001 * IIYZYIIIIIIXXIIIIIII\n", + "+0.001 * IIXZXIIIIIIXXIIIIIII\n", + "+0.129 * IIIZIIIIIIIIZIIIIIII\n", + "+0.129 * IIZIIIIIIIIIZIIIIIII\n", + "+0.138 * IZIIIIIIIIIIZIIIIIII\n", + "+0.039 * YYIIIIIIIIIYYIIIIIII\n", + "+0.039 * XXIIIIIIIIIYYIIIIIII\n", + "+0.039 * YYIIIIIIIIIXXIIIIIII\n", + "+0.039 * XXIIIIIIIIIXXIIIIIII\n", + "+0.147 * ZIIIIIIIIIIIZIIIIIII\n", + "+0.143 * ZZZZZZZZZZZZIIIIIIII\n", + "+0.018 * ZZZZZZZZZXIZIIIIIIII\n", + "-0.018 * IIIIIIIIIXZZIIIIIIII\n", + "-0.009 * ZXIIIIIIIIIZIIIIIIII\n", + "+0.009 * IXZZZZZZZZZZIIIIIIII\n", + "+0.143 * IIIIIIIIIIZZIIIIIIII\n", + "-0.024 * IIIIIIYZZZYZIIIIIIII\n", + "-0.024 * IIIIIIXZZZXZIIIIIIII\n", + "+0.002 * YZZZZZZZZZYZIIIIIIII\n", + "+0.002 * XZZZZZZZZZXZIIIIIIII\n", + "+0.120 * IIIIIIIIIZIZIIIIIIII\n", + "-0.009 * IYZZZZZZZYIZIIIIIIII\n", + "-0.009 * IXZZZZZZZXIZIIIIIIII\n", + "+0.132 * IIIIIIIIZIIZIIIIIIII\n", + "-0.011 * IIIYZZZZYIIZIIIIIIII\n", + "-0.011 * IIIXZZZZXIIZIIIIIIII\n", + "-0.001 * IIYZZZZZYIIZIIIIIIII\n", + "-0.001 * IIXZZZZZXIIZIIIIIIII\n", + "+0.132 * IIIIIIIZIIIZIIIIIIII\n", + "+0.001 * IIIYZZZYIIIZIIIIIIII\n", + "+0.001 * IIIXZZZXIIIZIIIIIIII\n", + "-0.011 * IIYZZZZYIIIZIIIIIIII\n", + "-0.011 * IIXZZZZXIIIZIIIIIIII\n", + "+0.126 * IIIIIIZIIIIZIIIIIIII\n", + "+0.016 * YZZZZZYIIIIZIIIIIIII\n", + "+0.016 * XZZZZZXIIIIZIIIIIIII\n", + "+0.124 * IIIIIZIIIIIZIIIIIIII\n", + "+0.124 * IIIIZIIIIIIZIIIIIIII\n", + "+0.139 * IIIZIIIIIIIZIIIIIIII\n", + "+0.139 * IIZIIIIIIIIZIIIIIIII\n", + "+0.147 * IZIIIIIIIIIZIIIIIIII\n", + "+0.171 * ZIIIIIIIIIIZIIIIIIII\n", + "+0.077 * ZZZZZZZZZZIIIIIIIIII\n", + "+0.011 * ZZZZZZXIIIXIIIIIIIII\n", + "+0.011 * ZZZZZZYIIIYIIIIIIIII\n", + "-0.008 * XIIIIIIIIIXIIIIIIIII\n", + "-0.008 * YIIIIIIIIIYIIIIIIIII\n", + "+0.097 * ZZZZZZZZZIZIIIIIIIII\n", + "+0.001 * ZXIIIIIIIXZIIIIIIIII\n", + "+0.001 * ZYIIIIIIIYZIIIIIIIII\n", + "+0.105 * ZZZZZZZZIZZIIIIIIIII\n", + "+0.002 * ZZZXIIIIXZZIIIIIIIII\n", + "+0.002 * ZZZYIIIIYZZIIIIIIIII\n", + "+0.000 * ZZXIIIIIXZZIIIIIIIII\n", + "+0.000 * ZZYIIIIIYZZIIIIIIIII\n", + "+0.105 * ZZZZZZZIZZZIIIIIIIII\n", + "-0.000 * ZZZXIIIXZZZIIIIIIIII\n", + "-0.000 * ZZZYIIIYZZZIIIIIIIII\n", + "+0.002 * ZZXIIIIXZZZIIIIIIIII\n", + "+0.002 * ZZYIIIIYZZZIIIIIIIII\n", + "+0.105 * ZZZZZZIZZZZIIIIIIIII\n", + "-0.006 * XIIIIIXZZZZIIIIIIIII\n", + "-0.006 * YIIIIIYZZZZIIIIIIIII\n", + "+0.107 * ZZZZZIZZZZZIIIIIIIII\n", + "+0.107 * ZZZZIZZZZZZIIIIIIIII\n", + "+0.116 * ZZZIZZZZZZZIIIIIIIII\n", + "+0.116 * ZZIZZZZZZZZIIIIIIIII\n", + "+0.116 * ZIZZZZZZZZZIIIIIIIII\n", + "+0.130 * IZZZZZZZZZZIIIIIIIII\n", + "+0.016 * ZZZZZZZZZXZIIIIIIIII\n", + "-0.016 * IIIIIIIIIXIIIIIIIIII\n", + "+0.008 * ZXIIIIIIIIZIIIIIIIII\n", + "-0.008 * IXZZZZZZZZIIIIIIIIII\n", + "+0.005 * ZZZZZZXIIYYIIIIIIIII\n", + "+0.037 * ZZZZZZXIIXXIIIIIIIII\n", + "+0.032 * ZZZZZZYIIYXIIIIIIIII\n", + "+0.032 * IIIIIIYZZYXIIIIIIIII\n", + "+0.037 * IIIIIIXZZXXIIIIIIIII\n", + "+0.005 * IIIIIIXZZYYIIIIIIIII\n", + "-0.002 * XIIIIIIIIYYIIIIIIIII\n", + "+0.005 * XIIIIIIIIXXIIIIIIIII\n", + "+0.007 * YIIIIIIIIYXIIIIIIIII\n", + "+0.007 * YZZZZZZZZYXIIIIIIIII\n", + "+0.005 * XZZZZZZZZXXIIIIIIIII\n", + "-0.002 * XZZZZZZZZYYIIIIIIIII\n", + "+0.000 * ZZZZZXIIYZYIIIIIIIII\n", + "+0.001 * ZZZZZXIIXZXIIIIIIIII\n", + "+0.001 * ZZZZZYIIYZXIIIIIIIII\n", + "+0.001 * IIIIIYZZYIXIIIIIIIII\n", + "+0.001 * IIIIIXZZXIXIIIIIIIII\n", + "+0.000 * IIIIIXZZYIYIIIIIIIII\n", + "+0.003 * ZZZZXIIIYZYIIIIIIIII\n", + "+0.034 * ZZZZXIIIXZXIIIIIIIII\n", + "+0.031 * ZZZZYIIIYZXIIIIIIIII\n", + "+0.031 * IIIIYZZZYIXIIIIIIIII\n", + "+0.034 * IIIIXZZZXIXIIIIIIIII\n", + "+0.003 * IIIIXZZZYIYIIIIIIIII\n", + "+0.003 * ZZZZZXIYZZYIIIIIIIII\n", + "+0.034 * ZZZZZXIXZZXIIIIIIIII\n", + "+0.031 * ZZZZZYIYZZXIIIIIIIII\n", + "+0.031 * IIIIIYZYIIXIIIIIIIII\n", + "+0.034 * IIIIIXZXIIXIIIIIIIII\n", + "+0.003 * IIIIIXZYIIYIIIIIIIII\n", + "-0.000 * ZZZZXIIYZZYIIIIIIIII\n", + "-0.001 * ZZZZXIIXZZXIIIIIIIII\n", + "-0.001 * ZZZZYIIYZZXIIIIIIIII\n", + "-0.001 * IIIIYZZYIIXIIIIIIIII\n", + "-0.001 * IIIIXZZXIIXIIIIIIIII\n", + "-0.000 * IIIIXZZYIIYIIIIIIIII\n", + "-0.003 * ZXIIIIYZZZYIIIIIIIII\n", + "-0.021 * ZXIIIIXZZZXIIIIIIIII\n", + "-0.017 * ZYIIIIYZZZXIIIIIIIII\n", + "-0.017 * IYZZZZYIIIXIIIIIIIII\n", + "-0.021 * IXZZZZXIIIXIIIIIIIII\n", + "-0.003 * IXZZZZYIIIYIIIIIIIII\n", + "+0.000 * ZZZXIYZZZZYIIIIIIIII\n", + "+0.001 * ZZZXIXZZZZXIIIIIIIII\n", + "+0.001 * ZZZYIYZZZZXIIIIIIIII\n", + "+0.001 * IIIYZYIIIIXIIIIIIIII\n", + "+0.001 * IIIXZXIIIIXIIIIIIIII\n", + "+0.000 * IIIXZYIIIIYIIIIIIIII\n", + "-0.002 * ZZXIIYZZZZYIIIIIIIII\n", + "-0.031 * ZZXIIXZZZZXIIIIIIIII\n", + "-0.029 * ZZYIIYZZZZXIIIIIIIII\n", + "-0.029 * IIYZZYIIIIXIIIIIIIII\n", + "-0.031 * IIXZZXIIIIXIIIIIIIII\n", + "-0.002 * IIXZZYIIIIYIIIIIIIII\n", + "-0.002 * ZZZXYZZZZZYIIIIIIIII\n", + "-0.031 * ZZZXXZZZZZXIIIIIIIII\n", + "-0.029 * ZZZYYZZZZZXIIIIIIIII\n", + "-0.029 * IIIYYIIIIIXIIIIIIIII\n", + "-0.031 * IIIXXIIIIIXIIIIIIIII\n", + "-0.002 * IIIXYIIIIIYIIIIIIIII\n", + "-0.000 * ZZXIYZZZZZYIIIIIIIII\n", + "-0.001 * ZZXIXZZZZZXIIIIIIIII\n", + "-0.001 * ZZYIYZZZZZXIIIIIIIII\n", + "-0.001 * IIYZYIIIIIXIIIIIIIII\n", + "-0.001 * IIXZXIIIIIXIIIIIIIII\n", + "-0.000 * IIXZYIIIIIYIIIIIIIII\n", + "-0.002 * XYZZZZZZZZYIIIIIIIII\n", + "-0.032 * XXZZZZZZZZXIIIIIIIII\n", + "-0.030 * YYZZZZZZZZXIIIIIIIII\n", + "-0.030 * YYIIIIIIIIXIIIIIIIII\n", + "-0.032 * XXIIIIIIIIXIIIIIIIII\n", + "-0.002 * XYIIIIIIIIYIIIIIIIII\n", + "-0.017 * ZXIIIIIIIZIIIIIIIIII\n", + "+0.017 * IXZZZZZZZIZIIIIIIIII\n", + "+0.007 * ZZZZZZZZIXIIIIIIIIII\n", + "-0.007 * IIIIIIIIZXZIIIIIIIII\n", + "+0.006 * ZZZXIIIIYYIIIIIIIIII\n", + "+0.010 * ZZZXIIIIXXIIIIIIIIII\n", + "+0.004 * ZZZYIIIIYXIIIIIIIIII\n", + "+0.004 * IIIYZZZZYXZIIIIIIIII\n", + "+0.010 * IIIXZZZZXXZIIIIIIIII\n", + "+0.006 * IIIXZZZZYYZIIIIIIIII\n", + "+0.000 * ZZXIIIIIYYIIIIIIIIII\n", + "+0.001 * ZZXIIIIIXXIIIIIIIIII\n", + "+0.000 * ZZYIIIIIYXIIIIIIIIII\n", + "+0.000 * IIYZZZZZYXZIIIIIIIII\n", + "+0.001 * IIXZZZZZXXZIIIIIIIII\n", + "+0.000 * IIXZZZZZYYZIIIIIIIII\n", + "+0.007 * ZZZZZZZIZXIIIIIIIIII\n", + "-0.007 * IIIIIIIZIXZIIIIIIIII\n", + "-0.000 * ZZZXIIIYZYIIIIIIIIII\n", + "-0.001 * ZZZXIIIXZXIIIIIIIIII\n", + "-0.000 * ZZZYIIIYZXIIIIIIIIII\n", + "-0.000 * IIIYZZZYIXZIIIIIIIII\n", + "-0.001 * IIIXZZZXIXZIIIIIIIII\n", + "-0.000 * IIIXZZZYIYZIIIIIIIII\n", + "+0.006 * ZZXIIIIYZYIIIIIIIIII\n", + "+0.010 * ZZXIIIIXZXIIIIIIIIII\n", + "+0.004 * ZZYIIIIYZXIIIIIIIIII\n", + "+0.004 * IIYZZZZYIXZIIIIIIIII\n", + "+0.010 * IIXZZZZXIXZIIIIIIIII\n", + "+0.006 * IIXZZZZYIYZIIIIIIIII\n", + "+0.004 * ZZZZZZIZZXIIIIIIIIII\n", + "-0.004 * IIIIIIZIIXZIIIIIIIII\n", + "-0.016 * XIIIIIYZZYIIIIIIIIII\n", + "-0.021 * XIIIIIXZZXIIIIIIIIII\n", + "-0.006 * YIIIIIYZZXIIIIIIIIII\n", + "-0.006 * YZZZZZYIIXZIIIIIIIII\n", + "-0.021 * XZZZZZXIIXZIIIIIIIII\n", + "-0.016 * XZZZZZYIIYZIIIIIIIII\n", + "+0.001 * ZZZZZIZZZXIIIIIIIIII\n", + "-0.001 * IIIIIZIIIXZIIIIIIIII\n", + "+0.001 * ZZZZIZZZZXIIIIIIIIII\n", + "-0.001 * IIIIZIIIIXZIIIIIIIII\n", + "+0.011 * ZZZIZZZZZXIIIIIIIIII\n", + "-0.011 * IIIZIIIIIXZIIIIIIIII\n", + "+0.011 * ZZIZZZZZZXIIIIIIIIII\n", + "-0.011 * IIZIIIIIIXZIIIIIIIII\n", + "+0.005 * ZIZZZZZZZXIIIIIIIIII\n", + "-0.005 * IZIIIIIIIXZIIIIIIIII\n", + "+0.014 * IZZZZZZZZXIIIIIIIIII\n", + "-0.014 * ZIIIIIIIIXZIIIIIIIII\n", + "-0.009 * ZXIIIIIIZIIIIIIIIIII\n", + "+0.009 * IXZZZZZZIZZIIIIIIIII\n", + "-0.000 * ZZZZZXYZYIIIIIIIIIII\n", + "-0.000 * ZZZZZXXZXIIIIIIIIIII\n", + "+0.000 * ZZZZZYYZXIIIIIIIIIII\n", + "+0.000 * IIIIIYYIXZZIIIIIIIII\n", + "-0.000 * IIIIIXXIXZZIIIIIIIII\n", + "-0.000 * IIIIIXYIYZZIIIIIIIII\n", + "-0.001 * ZZZZXIYZYIIIIIIIIIII\n", + "-0.001 * ZZZZXIXZXIIIIIIIIIII\n", + "+0.000 * ZZZZYIYZXIIIIIIIIIII\n", + "+0.000 * IIIIYZYIXZZIIIIIIIII\n", + "-0.001 * IIIIXZXIXZZIIIIIIIII\n", + "-0.001 * IIIIXZYIYZZIIIIIIIII\n", + "-0.000 * XIIIIYZZYIIIIIIIIIII\n", + "-0.000 * XIIIIXZZXIIIIIIIIIII\n", + "+0.000 * YIIIIYZZXIIIIIIIIIII\n", + "+0.000 * YZZZZYIIXZZIIIIIIIII\n", + "-0.000 * XZZZZXIIXZZIIIIIIIII\n", + "-0.000 * XZZZZYIIYZZIIIIIIIII\n", + "-0.010 * XIIIYZZZYIIIIIIIIIII\n", + "-0.009 * XIIIXZZZXIIIIIIIIIII\n", + "+0.002 * YIIIYZZZXIIIIIIIIIII\n", + "+0.002 * YZZZYIIIXZZIIIIIIIII\n", + "-0.009 * XZZZXIIIXZZIIIIIIIII\n", + "-0.010 * XZZZYIIIYZZIIIIIIIII\n", + "-0.007 * ZXIYZZZZYIIIIIIIIIII\n", + "-0.001 * ZXIXZZZZXIIIIIIIIIII\n", + "+0.006 * ZYIYZZZZXIIIIIIIIIII\n", + "+0.006 * IYZYIIIIXZZIIIIIIIII\n", + "-0.001 * IXZXIIIIXZZIIIIIIIII\n", + "-0.007 * IXZYIIIIYZZIIIIIIIII\n", + "-0.000 * ZXYZZZZZYIIIIIIIIIII\n", + "-0.000 * ZXXZZZZZXIIIIIIIIIII\n", + "+0.000 * ZYYZZZZZXIIIIIIIIIII\n", + "+0.000 * IYYIIIIIXZZIIIIIIIII\n", + "-0.000 * IXXIIIIIXZZIIIIIIIII\n", + "-0.000 * IXYIIIIIYZZIIIIIIIII\n", + "-0.009 * ZXIIIIIZIIIIIIIIIIII\n", + "+0.009 * IXZZZZZIZZZIIIIIIIII\n", + "-0.001 * ZZZZZXYYIIIIIIIIIIII\n", + "-0.001 * ZZZZZXXXIIIIIIIIIIII\n", + "+0.000 * ZZZZZYYXIIIIIIIIIIII\n", + "+0.000 * IIIIIYYXZZZIIIIIIIII\n", + "-0.001 * IIIIIXXXZZZIIIIIIIII\n", + "-0.001 * IIIIIXYYZZZIIIIIIIII\n", + "+0.000 * ZZZZXIYYIIIIIIIIIIII\n", + "+0.000 * ZZZZXIXXIIIIIIIIIIII\n", + "-0.000 * ZZZZYIYXIIIIIIIIIIII\n", + "-0.000 * IIIIYZYXZZZIIIIIIIII\n", + "+0.000 * IIIIXZXXZZZIIIIIIIII\n", + "+0.000 * IIIIXZYYZZZIIIIIIIII\n", + "-0.010 * XIIIIYZYIIIIIIIIIIII\n", + "-0.009 * XIIIIXZXIIIIIIIIIIII\n", + "+0.002 * YIIIIYZXIIIIIIIIIIII\n", + "+0.002 * YZZZZYIXZZZIIIIIIIII\n", + "-0.009 * XZZZZXIXZZZIIIIIIIII\n", + "-0.010 * XZZZZYIYZZZIIIIIIIII\n", + "+0.000 * XIIIYZZYIIIIIIIIIIII\n", + "+0.000 * XIIIXZZXIIIIIIIIIIII\n", + "-0.000 * YIIIYZZXIIIIIIIIIIII\n", + "-0.000 * YZZZYIIXZZZIIIIIIIII\n", + "+0.000 * XZZZXIIXZZZIIIIIIIII\n", + "+0.000 * XZZZYIIYZZZIIIIIIIII\n", + "+0.000 * ZXIYZZZYIIIIIIIIIIII\n", + "+0.000 * ZXIXZZZXIIIIIIIIIIII\n", + "-0.000 * ZYIYZZZXIIIIIIIIIIII\n", + "-0.000 * IYZYIIIXZZZIIIIIIIII\n", + "+0.000 * IXZXIIIXZZZIIIIIIIII\n", + "+0.000 * IXZYIIIYZZZIIIIIIIII\n", + "-0.007 * ZXYZZZZYIIIIIIIIIIII\n", + "-0.001 * ZXXZZZZXIIIIIIIIIIII\n", + "+0.006 * ZYYZZZZXIIIIIIIIIIII\n", + "+0.006 * IYYIIIIXZZZIIIIIIIII\n", + "-0.001 * IXXIIIIXZZZIIIIIIIII\n", + "-0.007 * IXYIIIIYZZZIIIIIIIII\n", + "-0.013 * ZXIIIIZIIIIIIIIIIIII\n", + "+0.013 * IXZZZZIZZZZIIIIIIIII\n", + "-0.000 * ZZZXIYYIIIIIIIIIIIII\n", + "-0.000 * ZZZXIXXIIIIIIIIIIIII\n", + "-0.000 * ZZZYIYXIIIIIIIIIIIII\n", + "-0.000 * IIIYZYXZZZZIIIIIIIII\n", + "-0.000 * IIIXZXXZZZZIIIIIIIII\n", + "-0.000 * IIIXZYYZZZZIIIIIIIII\n", + "+0.002 * ZZXIIYYIIIIIIIIIIIII\n", + "+0.002 * ZZXIIXXIIIIIIIIIIIII\n", + "+0.000 * ZZYIIYXIIIIIIIIIIIII\n", + "+0.000 * IIYZZYXZZZZIIIIIIIII\n", + "+0.002 * IIXZZXXZZZZIIIIIIIII\n", + "+0.002 * IIXZZYYZZZZIIIIIIIII\n", + "+0.002 * ZZZXYZYIIIIIIIIIIIII\n", + "+0.002 * ZZZXXZXIIIIIIIIIIIII\n", + "+0.000 * ZZZYYZXIIIIIIIIIIIII\n", + "+0.000 * IIIYYIXZZZZIIIIIIIII\n", + "+0.002 * IIIXXIXZZZZIIIIIIIII\n", + "+0.002 * IIIXYIYZZZZIIIIIIIII\n", + "+0.000 * ZZXIYZYIIIIIIIIIIIII\n", + "+0.000 * ZZXIXZXIIIIIIIIIIIII\n", + "+0.000 * ZZYIYZXIIIIIIIIIIIII\n", + "+0.000 * IIYZYIXZZZZIIIIIIIII\n", + "+0.000 * IIXZXIXZZZZIIIIIIIII\n", + "+0.000 * IIXZYIYZZZZIIIIIIIII\n", + "+0.001 * XYZZZZYIIIIIIIIIIIII\n", + "+0.004 * XXZZZZXIIIIIIIIIIIII\n", + "+0.003 * YYZZZZXIIIIIIIIIIIII\n", + "+0.003 * YYIIIIXZZZZIIIIIIIII\n", + "+0.004 * XXIIIIXZZZZIIIIIIIII\n", + "+0.001 * XYIIIIYZZZZIIIIIIIII\n", + "-0.011 * ZXIIIZIIIIIIIIIIIIII\n", + "+0.011 * IXZZZIZZZZZIIIIIIIII\n", + "-0.000 * XIIYZYIIIIIIIIIIIIII\n", + "-0.000 * XIIXZXIIIIIIIIIIIIII\n", + "+0.000 * YIIYZXIIIIIIIIIIIIII\n", + "+0.000 * YZZYIXZZZZZIIIIIIIII\n", + "-0.000 * XZZXIXZZZZZIIIIIIIII\n", + "-0.000 * XZZYIYZZZZZIIIIIIIII\n", + "+0.009 * XIYZZYIIIIIIIIIIIIII\n", + "+0.007 * XIXZZXIIIIIIIIIIIIII\n", + "-0.003 * YIYZZXIIIIIIIIIIIIII\n", + "-0.003 * YZYIIXZZZZZIIIIIIIII\n", + "+0.007 * XZXIIXZZZZZIIIIIIIII\n", + "+0.009 * XZYIIYZZZZZIIIIIIIII\n", + "-0.011 * ZXIIZIIIIIIIIIIIIIII\n", + "+0.011 * IXZZIZZZZZZIIIIIIIII\n", + "+0.009 * XIIYYIIIIIIIIIIIIIII\n", + "+0.007 * XIIXXIIIIIIIIIIIIIII\n", + "-0.003 * YIIYXIIIIIIIIIIIIIII\n", + "-0.003 * YZZYXZZZZZZIIIIIIIII\n", + "+0.007 * XZZXXZZZZZZIIIIIIIII\n", + "+0.009 * XZZYYZZZZZZIIIIIIIII\n", + "+0.000 * XIYZYIIIIIIIIIIIIIII\n", + "+0.000 * XIXZXIIIIIIIIIIIIIII\n", + "-0.000 * YIYZXIIIIIIIIIIIIIII\n", + "-0.000 * YZYIXZZZZZZIIIIIIIII\n", + "+0.000 * XZXIXZZZZZZIIIIIIIII\n", + "+0.000 * XZYIYZZZZZZIIIIIIIII\n", + "-0.006 * ZXIZIIIIIIIIIIIIIIII\n", + "+0.006 * IXZIZZZZZZZIIIIIIIII\n", + "-0.006 * ZXZIIIIIIIIIIIIIIIII\n", + "+0.006 * IXIZZZZZZZZIIIIIIIII\n", + "+0.003 * IXIIIIIIIIIIIIIIIIII\n", + "-0.003 * ZXZZZZZZZZZIIIIIIIII\n", + "+0.101 * IIIIIIIIIZZIIIIIIIII\n", + "+0.000 * IYZZZZZZZYZIIIIIIIII\n", + "+0.000 * IXZZZZZZZXZIIIIIIIII\n", + "+0.109 * IIIIIIIIZIZIIIIIIIII\n", + "-0.003 * IIIYZZZZYIZIIIIIIIII\n", + "-0.003 * IIIXZZZZXIZIIIIIIIII\n", + "-0.000 * IIYZZZZZYIZIIIIIIIII\n", + "-0.000 * IIXZZZZZXIZIIIIIIIII\n", + "+0.109 * IIIIIIIZIIZIIIIIIIII\n", + "+0.000 * IIIYZZZYIIZIIIIIIIII\n", + "+0.000 * IIIXZZZXIIZIIIIIIIII\n", + "-0.003 * IIYZZZZYIIZIIIIIIIII\n", + "-0.003 * IIXZZZZXIIZIIIIIIIII\n", + "+0.102 * IIIIIIZIIIZIIIIIIIII\n", + "+0.000 * YZZZZZYIIIZIIIIIIIII\n", + "+0.000 * XZZZZZXIIIZIIIIIIIII\n", + "+0.108 * IIIIIZIIIIZIIIIIIIII\n", + "+0.108 * IIIIZIIIIIZIIIIIIIII\n", + "+0.117 * IIIZIIIIIIZIIIIIIIII\n", + "+0.117 * IIZIIIIIIIZIIIIIIIII\n", + "+0.116 * IZIIIIIIIIZIIIIIIIII\n", + "+0.127 * ZIIIIIIIIIZIIIIIIIII\n", + "-0.017 * IIIIIIYZZIYIIIIIIIII\n", + "-0.017 * IIIIIIXZZIXIIIIIIIII\n", + "-0.010 * YZZZZZZZZIYIIIIIIIII\n", + "-0.010 * XZZZZZZZZIXIIIIIIIII\n", + "-0.000 * IIIIIYZZXXYIIIIIIIII\n", + "-0.000 * IIIIIYZZYYYIIIIIIIII\n", + "-0.000 * IIIIIXZZXYYIIIIIIIII\n", + "-0.000 * IIIIIYZZYXXIIIIIIIII\n", + "-0.000 * IIIIIXZZXXXIIIIIIIII\n", + "-0.000 * IIIIIXZZYYXIIIIIIIII\n", + "-0.003 * IIIIYZZZXXYIIIIIIIII\n", + "-0.011 * IIIIYZZZYYYIIIIIIIII\n", + "-0.008 * IIIIXZZZXYYIIIIIIIII\n", + "-0.008 * IIIIYZZZYXXIIIIIIIII\n", + "-0.011 * IIIIXZZZXXXIIIIIIIII\n", + "-0.003 * IIIIXZZZYYXIIIIIIIII\n", + "-0.003 * IIIIIYZXIXYIIIIIIIII\n", + "-0.011 * IIIIIYZYIYYIIIIIIIII\n", + "-0.008 * IIIIIXZXIYYIIIIIIIII\n", + "-0.008 * IIIIIYZYIXXIIIIIIIII\n", + "-0.011 * IIIIIXZXIXXIIIIIIIII\n", + "-0.003 * IIIIIXZYIYXIIIIIIIII\n", + "+0.000 * IIIIYZZXIXYIIIIIIIII\n", + "+0.000 * IIIIYZZYIYYIIIIIIIII\n", + "+0.000 * IIIIXZZXIYYIIIIIIIII\n", + "+0.000 * IIIIYZZYIXXIIIIIIIII\n", + "+0.000 * IIIIXZZXIXXIIIIIIIII\n", + "+0.000 * IIIIXZZYIYXIIIIIIIII\n", + "+0.023 * IYZZZZXIIXYIIIIIIIII\n", + "+0.023 * IYZZZZYIIYYIIIIIIIII\n", + "-0.001 * IXZZZZXIIYYIIIIIIIII\n", + "-0.001 * IYZZZZYIIXXIIIIIIIII\n", + "+0.023 * IXZZZZXIIXXIIIIIIIII\n", + "+0.023 * IXZZZZYIIYXIIIIIIIII\n", + "-0.000 * IIIYZXIIIXYIIIIIIIII\n", + "-0.000 * IIIYZYIIIYYIIIIIIIII\n", + "-0.000 * IIIXZXIIIYYIIIIIIIII\n", + "-0.000 * IIIYZYIIIXXIIIIIIIII\n", + "-0.000 * IIIXZXIIIXXIIIIIIIII\n", + "-0.000 * IIIXZYIIIYXIIIIIIIII\n", + "+0.005 * IIYZZXIIIXYIIIIIIIII\n", + "+0.009 * IIYZZYIIIYYIIIIIIIII\n", + "+0.005 * IIXZZXIIIYYIIIIIIIII\n", + "+0.005 * IIYZZYIIIXXIIIIIIIII\n", + "+0.009 * IIXZZXIIIXXIIIIIIIII\n", + "+0.005 * IIXZZYIIIYXIIIIIIIII\n", + "+0.005 * IIIYXIIIIXYIIIIIIIII\n", + "+0.009 * IIIYYIIIIYYIIIIIIIII\n", + "+0.005 * IIIXXIIIIYYIIIIIIIII\n", + "+0.005 * IIIYYIIIIXXIIIIIIIII\n", + "+0.009 * IIIXXIIIIXXIIIIIIIII\n", + "+0.005 * IIIXYIIIIYXIIIIIIIII\n", + "+0.000 * IIYZXIIIIXYIIIIIIIII\n", + "+0.000 * IIYZYIIIIYYIIIIIIIII\n", + "+0.000 * IIXZXIIIIYYIIIIIIIII\n", + "+0.000 * IIYZYIIIIXXIIIIIIIII\n", + "+0.000 * IIXZXIIIIXXIIIIIIIII\n", + "+0.000 * IIXZYIIIIYXIIIIIIIII\n", + "+0.007 * YXIIIIIIIXYIIIIIIIII\n", + "+0.014 * YYIIIIIIIYYIIIIIIIII\n", + "+0.007 * XXIIIIIIIYYIIIIIIIII\n", + "+0.007 * YYIIIIIIIXXIIIIIIIII\n", + "+0.014 * XXIIIIIIIXXIIIIIIIII\n", + "+0.007 * XYIIIIIIIYXIIIIIIIII\n", + "-0.012 * IIIIIIYZIZYIIIIIIIII\n", + "-0.012 * IIIIIIXZIZXIIIIIIIII\n", + "-0.000 * YZZZZZZZIZYIIIIIIIII\n", + "-0.000 * XZZZZZZZIZXIIIIIIIII\n", + "+0.010 * IIIYZZXIXZYIIIIIIIII\n", + "+0.002 * IIIYZZYIYZYIIIIIIIII\n", + "-0.008 * IIIXZZXIYZYIIIIIIIII\n", + "-0.008 * IIIYZZYIXZXIIIIIIIII\n", + "+0.002 * IIIXZZXIXZXIIIIIIIII\n", + "+0.010 * IIIXZZYIYZXIIIIIIIII\n", + "+0.001 * IIYZZZXIXZYIIIIIIIII\n", + "+0.000 * IIYZZZYIYZYIIIIIIIII\n", + "-0.000 * IIXZZZXIYZYIIIIIIIII\n", + "-0.000 * IIYZZZYIXZXIIIIIIIII\n", + "+0.000 * IIXZZZXIXZXIIIIIIIII\n", + "+0.001 * IIXZZZYIYZXIIIIIIIII\n", + "+0.001 * IYZZZXIIXZYIIIIIIIII\n", + "+0.000 * IYZZZYIIYZYIIIIIIIII\n", + "-0.000 * IXZZZXIIYZYIIIIIIIII\n", + "-0.000 * IYZZZYIIXZXIIIIIIIII\n", + "+0.000 * IXZZZXIIXZXIIIIIIIII\n", + "+0.001 * IXZZZYIIYZXIIIIIIIII\n", + "+0.017 * IYZZXIIIXZYIIIIIIIII\n", + "+0.013 * IYZZYIIIYZYIIIIIIIII\n", + "-0.003 * IXZZXIIIYZYIIIIIIIII\n", + "-0.003 * IYZZYIIIXZXIIIIIIIII\n", + "+0.013 * IXZZXIIIXZXIIIIIIIII\n", + "+0.017 * IXZZYIIIYZXIIIIIIIII\n", + "+0.011 * YZZXIIIIXZYIIIIIIIII\n", + "+0.008 * YZZYIIIIYZYIIIIIIIII\n", + "-0.003 * XZZXIIIIYZYIIIIIIIII\n", + "-0.003 * YZZYIIIIXZXIIIIIIIII\n", + "+0.008 * XZZXIIIIXZXIIIIIIIII\n", + "+0.011 * XZZYIIIIYZXIIIIIIIII\n", + "+0.001 * YZXIIIIIXZYIIIIIIIII\n", + "+0.000 * YZYIIIIIYZYIIIIIIIII\n", + "-0.000 * XZXIIIIIYZYIIIIIIIII\n", + "-0.000 * YZYIIIIIXZXIIIIIIIII\n", + "+0.000 * XZXIIIIIXZXIIIIIIIII\n", + "+0.001 * XZYIIIIIYZXIIIIIIIII\n", + "-0.012 * IIIIIIYIZZYIIIIIIIII\n", + "-0.012 * IIIIIIXIZZXIIIIIIIII\n", + "-0.000 * YZZZZZZIZZYIIIIIIIII\n", + "-0.000 * XZZZZZZIZZXIIIIIIIII\n", + "-0.001 * IIIYZZXXZZYIIIIIIIII\n", + "-0.000 * IIIYZZYYZZYIIIIIIIII\n", + "+0.000 * IIIXZZXYZZYIIIIIIIII\n", + "+0.000 * IIIYZZYXZZXIIIIIIIII\n", + "-0.000 * IIIXZZXXZZXIIIIIIIII\n", + "-0.001 * IIIXZZYYZZXIIIIIIIII\n", + "+0.010 * IIYZZZXXZZYIIIIIIIII\n", + "+0.002 * IIYZZZYYZZYIIIIIIIII\n", + "-0.008 * IIXZZZXYZZYIIIIIIIII\n", + "-0.008 * IIYZZZYXZZXIIIIIIIII\n", + "+0.002 * IIXZZZXXZZXIIIIIIIII\n", + "+0.010 * IIXZZZYYZZXIIIIIIIII\n", + "+0.017 * IYZZZXIXZZYIIIIIIIII\n", + "+0.013 * IYZZZYIYZZYIIIIIIIII\n", + "-0.003 * IXZZZXIYZZYIIIIIIIII\n", + "-0.003 * IYZZZYIXZZXIIIIIIIII\n", + "+0.013 * IXZZZXIXZZXIIIIIIIII\n", + "+0.017 * IXZZZYIYZZXIIIIIIIII\n", + "-0.001 * IYZZXIIXZZYIIIIIIIII\n", + "-0.000 * IYZZYIIYZZYIIIIIIIII\n", + "+0.000 * IXZZXIIYZZYIIIIIIIII\n", + "+0.000 * IYZZYIIXZZXIIIIIIIII\n", + "-0.000 * IXZZXIIXZZXIIIIIIIII\n", + "-0.001 * IXZZYIIYZZXIIIIIIIII\n", + "-0.001 * YZZXIIIXZZYIIIIIIIII\n", + "-0.000 * YZZYIIIYZZYIIIIIIIII\n", + "+0.000 * XZZXIIIYZZYIIIIIIIII\n", + "+0.000 * YZZYIIIXZZXIIIIIIIII\n", + "-0.000 * XZZXIIIXZZXIIIIIIIII\n", + "-0.001 * XZZYIIIYZZXIIIIIIIII\n", + "+0.011 * YZXIIIIXZZYIIIIIIIII\n", + "+0.008 * YZYIIIIYZZYIIIIIIIII\n", + "-0.003 * XZXIIIIYZZYIIIIIIIII\n", + "-0.003 * YZYIIIIXZZXIIIIIIIII\n", + "+0.008 * XZXIIIIXZZXIIIIIIIII\n", + "+0.011 * XZYIIIIYZZXIIIIIIIII\n", + "-0.016 * YZZZZZIZZZYIIIIIIIII\n", + "-0.016 * XZZZZZIZZZXIIIIIIIII\n", + "-0.005 * IIIIIZYZZZYIIIIIIIII\n", + "-0.005 * IIIIIZXZZZXIIIIIIIII\n", + "-0.005 * IIIIZIYZZZYIIIIIIIII\n", + "-0.005 * IIIIZIXZZZXIIIIIIIII\n", + "-0.015 * IIIZIIYZZZYIIIIIIIII\n", + "-0.015 * IIIZIIXZZZXIIIIIIIII\n", + "-0.015 * IIZIIIYZZZYIIIIIIIII\n", + "-0.015 * IIZIIIXZZZXIIIIIIIII\n", + "-0.007 * IZIIIIYZZZYIIIIIIIII\n", + "-0.007 * IZIIIIXZZZXIIIIIIIII\n", + "-0.014 * ZIIIIIYZZZYIIIIIIIII\n", + "-0.014 * ZIIIIIXZZZXIIIIIIIII\n", + "-0.007 * YZZZZIZZZZYIIIIIIIII\n", + "-0.007 * XZZZZIZZZZXIIIIIIIII\n", + "+0.000 * IYZXIXZZZZYIIIIIIIII\n", + "+0.000 * IYZYIYZZZZYIIIIIIIII\n", + "-0.000 * IXZXIYZZZZYIIIIIIIII\n", + "-0.000 * IYZYIXZZZZXIIIIIIIII\n", + "+0.000 * IXZXIXZZZZXIIIIIIIII\n", + "+0.000 * IXZYIYZZZZXIIIIIIIII\n", + "-0.012 * IYXIIXZZZZYIIIIIIIII\n", + "-0.006 * IYYIIYZZZZYIIIIIIIII\n", + "+0.005 * IXXIIYZZZZYIIIIIIIII\n", + "+0.005 * IYYIIXZZZZXIIIIIIIII\n", + "-0.006 * IXXIIXZZZZXIIIIIIIII\n", + "-0.012 * IXYIIYZZZZXIIIIIIIII\n", + "-0.007 * YZZZIZZZZZYIIIIIIIII\n", + "-0.007 * XZZZIZZZZZXIIIIIIIII\n", + "-0.012 * IYZXXZZZZZYIIIIIIIII\n", + "-0.006 * IYZYYZZZZZYIIIIIIIII\n", + "+0.005 * IXZXYZZZZZYIIIIIIIII\n", + "+0.005 * IYZYXZZZZZXIIIIIIIII\n", + "-0.006 * IXZXXZZZZZXIIIIIIIII\n", + "-0.012 * IXZYYZZZZZXIIIIIIIII\n", + "-0.000 * IYXIXZZZZZYIIIIIIIII\n", + "-0.000 * IYYIYZZZZZYIIIIIIIII\n", + "+0.000 * IXXIYZZZZZYIIIIIIIII\n", + "+0.000 * IYYIXZZZZZXIIIIIIIII\n", + "-0.000 * IXXIXZZZZZXIIIIIIIII\n", + "-0.000 * IXYIYZZZZZXIIIIIIIII\n", + "+0.004 * YZZIZZZZZZYIIIIIIIII\n", + "+0.004 * XZZIZZZZZZXIIIIIIIII\n", + "+0.004 * YZIZZZZZZZYIIIIIIIII\n", + "+0.004 * XZIZZZZZZZXIIIIIIIII\n", + "+0.015 * YIZZZZZZZZYIIIIIIIII\n", + "+0.015 * XIZZZZZZZZXIIIIIIIII\n", + "+0.102 * IIIIIIIIZZIIIIIIIIII\n", + "+0.008 * IIIYZZZZYZIIIIIIIIII\n", + "+0.008 * IIIXZZZZXZIIIIIIIIII\n", + "+0.000 * IIYZZZZZYZIIIIIIIIII\n", + "+0.000 * IIXZZZZZXZIIIIIIIIII\n", + "+0.102 * IIIIIIIZIZIIIIIIIIII\n", + "-0.000 * IIIYZZZYIZIIIIIIIIII\n", + "-0.000 * IIIXZZZXIZIIIIIIIIII\n", + "+0.008 * IIYZZZZYIZIIIIIIIIII\n", + "+0.008 * IIXZZZZXIZIIIIIIIIII\n", + "+0.060 * IIIIIIZIIZIIIIIIIIII\n", + "+0.005 * YZZZZZYIIZIIIIIIIIII\n", + "+0.005 * XZZZZZXIIZIIIIIIIIII\n", + "+0.109 * IIIIIZIIIZIIIIIIIIII\n", + "+0.109 * IIIIZIIIIZIIIIIIIIII\n", + "+0.101 * IIIZIIIIIZIIIIIIIIII\n", + "+0.101 * IIZIIIIIIZIIIIIIIIII\n", + "+0.100 * IZIIIIIIIZIIIIIIIIII\n", + "+0.113 * ZIIIIIIIIZIIIIIIIIII\n", + "-0.002 * IYZZZZZZIYIIIIIIIIII\n", + "-0.002 * IXZZZZZZIXIIIIIIIIII\n", + "+0.001 * IIIIIYXIXYIIIIIIIIII\n", + "+0.000 * IIIIIYYIYYIIIIIIIIII\n", + "-0.001 * IIIIIXXIYYIIIIIIIIII\n", + "-0.001 * IIIIIYYIXXIIIIIIIIII\n", + "+0.000 * IIIIIXXIXXIIIIIIIIII\n", + "+0.001 * IIIIIXYIYXIIIIIIIIII\n", + "+0.042 * IIIIYZXIXYIIIIIIIIII\n", + "+0.000 * IIIIYZYIYYIIIIIIIIII\n", + "-0.041 * IIIIXZXIYYIIIIIIIIII\n", + "-0.041 * IIIIYZYIXXIIIIIIIIII\n", + "+0.000 * IIIIXZXIXXIIIIIIIIII\n", + "+0.042 * IIIIXZYIYXIIIIIIIIII\n", + "-0.000 * YZZZZXIIXYIIIIIIIIII\n", + "-0.000 * YZZZZYIIYYIIIIIIIIII\n", + "+0.000 * XZZZZXIIYYIIIIIIIIII\n", + "+0.000 * YZZZZYIIXXIIIIIIIIII\n", + "-0.000 * XZZZZXIIXXIIIIIIIIII\n", + "-0.000 * XZZZZYIIYXIIIIIIIIII\n", + "-0.006 * YZZZXIIIXYIIIIIIIIII\n", + "-0.005 * YZZZYIIIYYIIIIIIIIII\n", + "+0.000 * XZZZXIIIYYIIIIIIIIII\n", + "+0.000 * YZZZYIIIXXIIIIIIIIII\n", + "-0.005 * XZZZXIIIXXIIIIIIIIII\n", + "-0.006 * XZZZYIIIYXIIIIIIIIII\n", + "-0.011 * IYZXIIIIXYIIIIIIIIII\n", + "-0.010 * IYZYIIIIYYIIIIIIIIII\n", + "+0.001 * IXZXIIIIYYIIIIIIIIII\n", + "+0.001 * IYZYIIIIXXIIIIIIIIII\n", + "-0.010 * IXZXIIIIXXIIIIIIIIII\n", + "-0.011 * IXZYIIIIYXIIIIIIIIII\n", + "-0.001 * IYXIIIIIXYIIIIIIIIII\n", + "-0.001 * IYYIIIIIYYIIIIIIIIII\n", + "+0.000 * IXXIIIIIYYIIIIIIIIII\n", + "+0.000 * IYYIIIIIXXIIIIIIIIII\n", + "-0.001 * IXXIIIIIXXIIIIIIIIII\n", + "-0.001 * IXYIIIIIYXIIIIIIIIII\n", + "-0.002 * IYZZZZZIZYIIIIIIIIII\n", + "-0.002 * IXZZZZZIZXIIIIIIIIII\n", + "+0.042 * IIIIIYXXZYIIIIIIIIII\n", + "+0.000 * IIIIIYYYZYIIIIIIIIII\n", + "-0.041 * IIIIIXXYZYIIIIIIIIII\n", + "-0.041 * IIIIIYYXZXIIIIIIIIII\n", + "+0.000 * IIIIIXXXZXIIIIIIIIII\n", + "+0.042 * IIIIIXYYZXIIIIIIIIII\n", + "-0.001 * IIIIYZXXZYIIIIIIIIII\n", + "-0.000 * IIIIYZYYZYIIIIIIIIII\n", + "+0.001 * IIIIXZXYZYIIIIIIIIII\n", + "+0.001 * IIIIYZYXZXIIIIIIIIII\n", + "-0.000 * IIIIXZXXZXIIIIIIIIII\n", + "-0.001 * IIIIXZYYZXIIIIIIIIII\n", + "-0.006 * YZZZZXIXZYIIIIIIIIII\n", + "-0.005 * YZZZZYIYZYIIIIIIIIII\n", + "+0.000 * XZZZZXIYZYIIIIIIIIII\n", + "+0.000 * YZZZZYIXZXIIIIIIIIII\n", + "-0.005 * XZZZZXIXZXIIIIIIIIII\n", + "-0.006 * XZZZZYIYZXIIIIIIIIII\n", + "+0.000 * YZZZXIIXZYIIIIIIIIII\n", + "+0.000 * YZZZYIIYZYIIIIIIIIII\n", + "-0.000 * XZZZXIIYZYIIIIIIIIII\n", + "-0.000 * YZZZYIIXZXIIIIIIIIII\n", + "+0.000 * XZZZXIIXZXIIIIIIIIII\n", + "+0.000 * XZZZYIIYZXIIIIIIIIII\n", + "+0.001 * IYZXIIIXZYIIIIIIIIII\n", + "+0.001 * IYZYIIIYZYIIIIIIIIII\n", + "-0.000 * IXZXIIIYZYIIIIIIIIII\n", + "-0.000 * IYZYIIIXZXIIIIIIIIII\n", + "+0.001 * IXZXIIIXZXIIIIIIIIII\n", + "+0.001 * IXZYIIIYZXIIIIIIIIII\n", + "-0.011 * IYXIIIIXZYIIIIIIIIII\n", + "-0.010 * IYYIIIIYZYIIIIIIIIII\n", + "+0.001 * IXXIIIIYZYIIIIIIIIII\n", + "+0.001 * IYYIIIIXZXIIIIIIIIII\n", + "-0.010 * IXXIIIIXZXIIIIIIIIII\n", + "-0.011 * IXYIIIIYZXIIIIIIIIII\n", + "-0.018 * IYZZZZIZZYIIIIIIIIII\n", + "-0.018 * IXZZZZIZZXIIIIIIIIII\n", + "+0.000 * IIIYZXXZZYIIIIIIIIII\n", + "+0.001 * IIIYZYYZZYIIIIIIIIII\n", + "+0.001 * IIIXZXYZZYIIIIIIIIII\n", + "+0.001 * IIIYZYXZZXIIIIIIIIII\n", + "+0.001 * IIIXZXXZZXIIIIIIIIII\n", + "+0.000 * IIIXZYYZZXIIIIIIIIII\n", + "-0.000 * IIYZZXXZZYIIIIIIIIII\n", + "-0.036 * IIYZZYYZZYIIIIIIIIII\n", + "-0.035 * IIXZZXYZZYIIIIIIIIII\n", + "-0.035 * IIYZZYXZZXIIIIIIIIII\n", + "-0.036 * IIXZZXXZZXIIIIIIIIII\n", + "-0.000 * IIXZZYYZZXIIIIIIIIII\n", + "-0.000 * IIIYXIXZZYIIIIIIIIII\n", + "-0.036 * IIIYYIYZZYIIIIIIIIII\n", + "-0.035 * IIIXXIYZZYIIIIIIIIII\n", + "-0.035 * IIIYYIXZZXIIIIIIIIII\n", + "-0.036 * IIIXXIXZZXIIIIIIIIII\n", + "-0.000 * IIIXYIYZZXIIIIIIIIII\n", + "-0.000 * IIYZXIXZZYIIIIIIIIII\n", + "-0.001 * IIYZYIYZZYIIIIIIIIII\n", + "-0.001 * IIXZXIYZZYIIIIIIIIII\n", + "-0.001 * IIYZYIXZZXIIIIIIIIII\n", + "-0.001 * IIXZXIXZZXIIIIIIIIII\n", + "-0.000 * IIXZYIYZZXIIIIIIIIII\n", + "-0.006 * YXIIIIXZZYIIIIIIIIII\n", + "-0.032 * YYIIIIYZZYIIIIIIIIII\n", + "-0.026 * XXIIIIYZZYIIIIIIIIII\n", + "-0.026 * YYIIIIXZZXIIIIIIIIII\n", + "-0.032 * XXIIIIXZZXIIIIIIIIII\n", + "-0.006 * XYIIIIYZZXIIIIIIIIII\n", + "+0.009 * IYZZZIZZZYIIIIIIIIII\n", + "+0.009 * IXZZZIZZZXIIIIIIIIII\n", + "-0.000 * YZZXIXZZZYIIIIIIIIII\n", + "-0.000 * YZZYIYZZZYIIIIIIIIII\n", + "+0.000 * XZZXIYZZZYIIIIIIIIII\n", + "+0.000 * YZZYIXZZZXIIIIIIIIII\n", + "-0.000 * XZZXIXZZZXIIIIIIIIII\n", + "-0.000 * XZZYIYZZZXIIIIIIIIII\n", + "+0.007 * YZXIIXZZZYIIIIIIIIII\n", + "+0.007 * YZYIIYZZZYIIIIIIIIII\n", + "-0.001 * XZXIIYZZZYIIIIIIIIII\n", + "-0.001 * YZYIIXZZZXIIIIIIIIII\n", + "+0.007 * XZXIIXZZZXIIIIIIIIII\n", + "+0.007 * XZYIIYZZZXIIIIIIIIII\n", + "+0.009 * IYZZIZZZZYIIIIIIIIII\n", + "+0.009 * IXZZIZZZZXIIIIIIIIII\n", + "+0.007 * YZZXXZZZZYIIIIIIIIII\n", + "+0.007 * YZZYYZZZZYIIIIIIIIII\n", + "-0.001 * XZZXYZZZZYIIIIIIIIII\n", + "-0.001 * YZZYXZZZZXIIIIIIIIII\n", + "+0.007 * XZZXXZZZZXIIIIIIIIII\n", + "+0.007 * XZZYYZZZZXIIIIIIIIII\n", + "+0.000 * YZXIXZZZZYIIIIIIIIII\n", + "+0.000 * YZYIYZZZZYIIIIIIIIII\n", + "-0.000 * XZXIYZZZZYIIIIIIIIII\n", + "-0.000 * YZYIXZZZZXIIIIIIIIII\n", + "+0.000 * XZXIXZZZZXIIIIIIIIII\n", + "+0.000 * XZYIYZZZZXIIIIIIIIII\n", + "+0.000 * IYZIZZZZZYIIIIIIIIII\n", + "+0.000 * IXZIZZZZZXIIIIIIIIII\n", + "+0.000 * IYIZZZZZZYIIIIIIIIII\n", + "+0.000 * IXIZZZZZZXIIIIIIIIII\n", + "-0.011 * ZYZZZZZZZYIIIIIIIIII\n", + "-0.011 * ZXZZZZZZZXIIIIIIIIII\n", + "+0.110 * IIIIIIIZZIIIIIIIIIII\n", + "+0.000 * IIIYZZZYZIIIIIIIIIII\n", + "+0.000 * IIIXZZZXZIIIIIIIIIII\n", + "-0.003 * IIYZZZZYZIIIIIIIIIII\n", + "-0.003 * IIXZZZZXZIIIIIIIIIII\n", + "+0.106 * IIIIIIZIZIIIIIIIIIII\n", + "+0.006 * YZZZZZYIZIIIIIIIIIII\n", + "+0.006 * XZZZZZXIZIIIIIIIIIII\n", + "+0.108 * IIIIIZIIZIIIIIIIIIII\n", + "+0.001 * IIIIYYIIZIIIIIIIIIII\n", + "+0.001 * IIIIXXIIZIIIIIIIIIII\n", + "+0.071 * IIIIZIIIZIIIIIIIIIII\n", + "+0.097 * IIIZIIIIZIIIIIIIIIII\n", + "+0.001 * IIYYIIIIZIIIIIIIIIII\n", + "+0.001 * IIXXIIIIZIIIIIIIIIII\n", + "+0.114 * IIZIIIIIZIIIIIIIIIII\n", + "+0.115 * IZIIIIIIZIIIIIIIIIII\n", + "+0.127 * ZIIIIIIIZIIIIIIIIIII\n", + "-0.003 * IIIYZZZIYIIIIIIIIIII\n", + "-0.003 * IIIXZZZIXIIIIIIIIIII\n", + "-0.000 * IIYZZZZIYIIIIIIIIIII\n", + "-0.000 * IIXZZZZIXIIIIIIIIIII\n", + "+0.001 * IIIIIZIYYIIIIIIIIIII\n", + "+0.001 * IIIIIZIXXIIIIIIIIIII\n", + "-0.038 * IIIIYXIXYIIIIIIIIIII\n", + "-0.038 * IIIIYYIYYIIIIIIIIIII\n", + "+0.000 * IIIIXXIYYIIIIIIIIIII\n", + "+0.000 * IIIIYYIXXIIIIIIIIIII\n", + "-0.038 * IIIIXXIXXIIIIIIIIIII\n", + "-0.038 * IIIIXYIYXIIIIIIIIIII\n", + "-0.001 * IIIIZIIYYIIIIIIIIIII\n", + "-0.001 * IIIIZIIXXIIIIIIIIIII\n", + "-0.001 * IIIZIIIYYIIIIIIIIIII\n", + "-0.001 * IIIZIIIXXIIIIIIIIIII\n", + "+0.019 * IIYXIIIXYIIIIIIIIIII\n", + "+0.001 * IIYYIIIYYIIIIIIIIIII\n", + "-0.018 * IIXXIIIYYIIIIIIIIIII\n", + "-0.018 * IIYYIIIXXIIIIIIIIIII\n", + "+0.001 * IIXXIIIXXIIIIIIIIIII\n", + "+0.019 * IIXYIIIYXIIIIIIIIIII\n", + "+0.001 * IIZIIIIYYIIIIIIIIIII\n", + "+0.001 * IIZIIIIXXIIIIIIIIIII\n", + "+0.008 * IIIYZZIZYIIIIIIIIIII\n", + "+0.008 * IIIXZZIZXIIIIIIIIIII\n", + "+0.000 * IIYZZZIZYIIIIIIIIIII\n", + "+0.000 * IIXZZZIZXIIIIIIIIIII\n", + "-0.001 * IYZZZXXZYIIIIIIIIIII\n", + "-0.000 * IYZZZYYZYIIIIIIIIIII\n", + "+0.001 * IXZZZXYZYIIIIIIIIIII\n", + "+0.001 * IYZZZYXZXIIIIIIIIIII\n", + "-0.000 * IXZZZXXZXIIIIIIIIIII\n", + "-0.001 * IXZZZYYZXIIIIIIIIIII\n", + "-0.021 * IYZZXIXZYIIIIIIIIIII\n", + "-0.001 * IYZZYIYZYIIIIIIIIIII\n", + "+0.020 * IXZZXIYZYIIIIIIIIIII\n", + "+0.020 * IYZZYIXZXIIIIIIIIIII\n", + "-0.001 * IXZZXIXZXIIIIIIIIIII\n", + "-0.021 * IXZZYIYZXIIIIIIIIIII\n", + "-0.015 * YZZXIIXZYIIIIIIIIIII\n", + "-0.001 * YZZYIIYZYIIIIIIIIIII\n", + "+0.014 * XZZXIIYZYIIIIIIIIIII\n", + "+0.014 * YZZYIIXZXIIIIIIIIIII\n", + "-0.001 * XZZXIIXZXIIIIIIIIIII\n", + "-0.015 * XZZYIIYZXIIIIIIIIIII\n", + "-0.001 * YZXIIIXZYIIIIIIIIIII\n", + "-0.000 * YZYIIIYZYIIIIIIIIIII\n", + "+0.001 * XZXIIIYZYIIIIIIIIIII\n", + "+0.001 * YZYIIIXZXIIIIIIIIIII\n", + "-0.000 * XZXIIIXZXIIIIIIIIIII\n", + "-0.001 * XZYIIIYZXIIIIIIIIIII\n", + "+0.013 * IIIYZIZZYIIIIIIIIIII\n", + "+0.013 * IIIXZIZZXIIIIIIIIIII\n", + "-0.000 * IIYZZIZZYIIIIIIIIIII\n", + "-0.000 * IIXZZIZZXIIIIIIIIIII\n", + "+0.001 * IIIYXXZZYIIIIIIIIIII\n", + "-0.001 * IIIYYYZZYIIIIIIIIIII\n", + "-0.002 * IIIXXYZZYIIIIIIIIIII\n", + "-0.002 * IIIYYXZZXIIIIIIIIIII\n", + "-0.001 * IIIXXXZZXIIIIIIIIIII\n", + "+0.001 * IIIXYYZZXIIIIIIIIIII\n", + "-0.033 * IIYZXXZZYIIIIIIIIIII\n", + "-0.000 * IIYZYYZZYIIIIIIIIIII\n", + "+0.033 * IIXZXYZZYIIIIIIIIIII\n", + "+0.033 * IIYZYXZZXIIIIIIIIIII\n", + "-0.000 * IIXZXXZZXIIIIIIIIIII\n", + "-0.033 * IIXZYYZZXIIIIIIIIIII\n", + "-0.000 * YXIIIXZZYIIIIIIIIIII\n", + "-0.001 * YYIIIYZZYIIIIIIIIIII\n", + "-0.001 * XXIIIYZZYIIIIIIIIIII\n", + "-0.001 * YYIIIXZZXIIIIIIIIIII\n", + "-0.001 * XXIIIXZZXIIIIIIIIIII\n", + "-0.000 * XYIIIYZZXIIIIIIIIIII\n", + "-0.021 * IIIYIZZZYIIIIIIIIIII\n", + "-0.021 * IIIXIZZZXIIIIIIIIIII\n", + "+0.000 * IIYZIZZZYIIIIIIIIIII\n", + "+0.000 * IIXZIZZZXIIIIIIIIIII\n", + "-0.000 * YXIIXZZZYIIIIIIIIIII\n", + "-0.033 * YYIIYZZZYIIIIIIIIIII\n", + "-0.033 * XXIIYZZZYIIIIIIIIIII\n", + "-0.033 * YYIIXZZZXIIIIIIIIIII\n", + "-0.033 * XXIIXZZZXIIIIIIIIIII\n", + "-0.000 * XYIIYZZZXIIIIIIIIIII\n", + "-0.000 * IIYIZZZZYIIIIIIIIIII\n", + "-0.000 * IIXIZZZZXIIIIIIIIIII\n", + "-0.007 * IIZYZZZZYIIIIIIIIIII\n", + "-0.007 * IIZXZZZZXIIIIIIIIIII\n", + "-0.000 * IZIYZZZZYIIIIIIIIIII\n", + "-0.000 * IZIXZZZZXIIIIIIIIIII\n", + "-0.011 * ZIIYZZZZYIIIIIIIIIII\n", + "-0.011 * ZIIXZZZZXIIIIIIIIIII\n", + "-0.000 * IZYZZZZZYIIIIIIIIIII\n", + "-0.000 * IZXZZZZZXIIIIIIIIIII\n", + "-0.001 * ZIYZZZZZYIIIIIIIIIII\n", + "-0.001 * ZIXZZZZZXIIIIIIIIIII\n", + "+0.106 * IIIIIIZZIIIIIIIIIIII\n", + "+0.006 * YZZZZZYZIIIIIIIIIIII\n", + "+0.006 * XZZZZZXZIIIIIIIIIIII\n", + "+0.071 * IIIIIZIZIIIIIIIIIIII\n", + "-0.001 * IIIIYYIZIIIIIIIIIIII\n", + "-0.001 * IIIIXXIZIIIIIIIIIIII\n", + "+0.108 * IIIIZIIZIIIIIIIIIIII\n", + "+0.114 * IIIZIIIZIIIIIIIIIIII\n", + "-0.001 * IIYYIIIZIIIIIIIIIIII\n", + "-0.001 * IIXXIIIZIIIIIIIIIIII\n", + "+0.097 * IIZIIIIZIIIIIIIIIIII\n", + "+0.115 * IZIIIIIZIIIIIIIIIIII\n", + "+0.127 * ZIIIIIIZIIIIIIIIIIII\n", + "-0.000 * IIIYZZIYIIIIIIIIIIII\n", + "-0.000 * IIIXZZIXIIIIIIIIIIII\n", + "+0.008 * IIYZZZIYIIIIIIIIIIII\n", + "+0.008 * IIXZZZIXIIIIIIIIIIII\n", + "-0.021 * IYZZZXXYIIIIIIIIIIII\n", + "-0.001 * IYZZZYYYIIIIIIIIIIII\n", + "+0.020 * IXZZZXYYIIIIIIIIIIII\n", + "+0.020 * IYZZZYXXIIIIIIIIIIII\n", + "-0.001 * IXZZZXXXIIIIIIIIIIII\n", + "-0.021 * IXZZZYYXIIIIIIIIIIII\n", + "+0.001 * IYZZXIXYIIIIIIIIIIII\n", + "+0.000 * IYZZYIYYIIIIIIIIIIII\n", + "-0.001 * IXZZXIYYIIIIIIIIIIII\n", + "-0.001 * IYZZYIXXIIIIIIIIIIII\n", + "+0.000 * IXZZXIXXIIIIIIIIIIII\n", + "+0.001 * IXZZYIYXIIIIIIIIIIII\n", + "+0.001 * YZZXIIXYIIIIIIIIIIII\n", + "+0.000 * YZZYIIYYIIIIIIIIIIII\n", + "-0.001 * XZZXIIYYIIIIIIIIIIII\n", + "-0.001 * YZZYIIXXIIIIIIIIIIII\n", + "+0.000 * XZZXIIXXIIIIIIIIIIII\n", + "+0.001 * XZZYIIYXIIIIIIIIIIII\n", + "-0.015 * YZXIIIXYIIIIIIIIIIII\n", + "-0.001 * YZYIIIYYIIIIIIIIIIII\n", + "+0.014 * XZXIIIYYIIIIIIIIIIII\n", + "+0.014 * YZYIIIXXIIIIIIIIIIII\n", + "-0.001 * XZXIIIXXIIIIIIIIIIII\n", + "-0.015 * XZYIIIYXIIIIIIIIIIII\n", + "-0.000 * IIIYZIZYIIIIIIIIIIII\n", + "-0.000 * IIIXZIZXIIIIIIIIIIII\n", + "-0.021 * IIYZZIZYIIIIIIIIIIII\n", + "-0.021 * IIXZZIZXIIIIIIIIIIII\n", + "-0.000 * IIIYXXZYIIIIIIIIIIII\n", + "-0.033 * IIIYYYZYIIIIIIIIIIII\n", + "-0.033 * IIIXXYZYIIIIIIIIIIII\n", + "-0.033 * IIIYYXZXIIIIIIIIIIII\n", + "-0.033 * IIIXXXZXIIIIIIIIIIII\n", + "-0.000 * IIIXYYZXIIIIIIIIIIII\n", + "+0.001 * IIYZXXZYIIIIIIIIIIII\n", + "-0.001 * IIYZYYZYIIIIIIIIIIII\n", + "-0.002 * IIXZXYZYIIIIIIIIIIII\n", + "-0.002 * IIYZYXZXIIIIIIIIIIII\n", + "-0.001 * IIXZXXZXIIIIIIIIIIII\n", + "+0.001 * IIXZYYZXIIIIIIIIIIII\n", + "-0.000 * YXIIIXZYIIIIIIIIIIII\n", + "-0.033 * YYIIIYZYIIIIIIIIIIII\n", + "-0.033 * XXIIIYZYIIIIIIIIIIII\n", + "-0.033 * YYIIIXZXIIIIIIIIIIII\n", + "-0.033 * XXIIIXZXIIIIIIIIIIII\n", + "-0.000 * XYIIIYZXIIIIIIIIIIII\n", + "+0.000 * IIIYIZZYIIIIIIIIIIII\n", + "+0.000 * IIIXIZZXIIIIIIIIIIII\n", + "+0.013 * IIYZIZZYIIIIIIIIIIII\n", + "+0.013 * IIXZIZZXIIIIIIIIIIII\n", + "+0.000 * YXIIXZZYIIIIIIIIIIII\n", + "+0.001 * YYIIYZZYIIIIIIIIIIII\n", + "+0.001 * XXIIYZZYIIIIIIIIIIII\n", + "+0.001 * YYIIXZZXIIIIIIIIIIII\n", + "+0.001 * XXIIXZZXIIIIIIIIIIII\n", + "+0.000 * XYIIYZZXIIIIIIIIIIII\n", + "-0.007 * IIYIZZZYIIIIIIIIIIII\n", + "-0.007 * IIXIZZZXIIIIIIIIIIII\n", + "+0.000 * IIZYZZZYIIIIIIIIIIII\n", + "+0.000 * IIZXZZZXIIIIIIIIIIII\n", + "+0.000 * IZIYZZZYIIIIIIIIIIII\n", + "+0.000 * IZIXZZZXIIIIIIIIIIII\n", + "+0.001 * ZIIYZZZYIIIIIIIIIIII\n", + "+0.001 * ZIIXZZZXIIIIIIIIIIII\n", + "-0.000 * IZYZZZZYIIIIIIIIIIII\n", + "-0.000 * IZXZZZZXIIIIIIIIIIII\n", + "-0.011 * ZIYZZZZYIIIIIIIIIIII\n", + "-0.011 * ZIXZZZZXIIIIIIIIIIII\n", + "+0.114 * IIIIIZZIIIIIIIIIIIII\n", + "+0.114 * IIIIZIZIIIIIIIIIIIII\n", + "+0.108 * IIIZIIZIIIIIIIIIIIII\n", + "+0.108 * IIZIIIZIIIIIIIIIIIII\n", + "+0.102 * IZIIIIZIIIIIIIIIIIII\n", + "+0.110 * ZIIIIIZIIIIIIIIIIIII\n", + "-0.006 * YZZZZIYIIIIIIIIIIIII\n", + "-0.006 * XZZZZIXIIIIIIIIIIIII\n", + "+0.000 * IYZXIXYIIIIIIIIIIIII\n", + "+0.000 * IYZYIYYIIIIIIIIIIIII\n", + "-0.000 * IXZXIYYIIIIIIIIIIIII\n", + "-0.000 * IYZYIXXIIIIIIIIIIIII\n", + "+0.000 * IXZXIXXIIIIIIIIIIIII\n", + "+0.000 * IXZYIYXIIIIIIIIIIIII\n", + "-0.020 * IYXIIXYIIIIIIIIIIIII\n", + "-0.018 * IYYIIYYIIIIIIIIIIIII\n", + "+0.001 * IXXIIYYIIIIIIIIIIIII\n", + "+0.001 * IYYIIXXIIIIIIIIIIIII\n", + "-0.018 * IXXIIXXIIIIIIIIIIIII\n", + "-0.020 * IXYIIYXIIIIIIIIIIIII\n", + "-0.006 * YZZZIZYIIIIIIIIIIIII\n", + "-0.006 * XZZZIZXIIIIIIIIIIIII\n", + "-0.020 * IYZXXZYIIIIIIIIIIIII\n", + "-0.018 * IYZYYZYIIIIIIIIIIIII\n", + "+0.001 * IXZXYZYIIIIIIIIIIIII\n", + "+0.001 * IYZYXZXIIIIIIIIIIIII\n", + "-0.018 * IXZXXZXIIIIIIIIIIIII\n", + "-0.020 * IXZYYZXIIIIIIIIIIIII\n", + "-0.000 * IYXIXZYIIIIIIIIIIIII\n", + "-0.000 * IYYIYZYIIIIIIIIIIIII\n", + "+0.000 * IXXIYZYIIIIIIIIIIIII\n", + "+0.000 * IYYIXZXIIIIIIIIIIIII\n", + "-0.000 * IXXIXZXIIIIIIIIIIIII\n", + "-0.000 * IXYIYZXIIIIIIIIIIIII\n", + "+0.008 * YZZIZZYIIIIIIIIIIIII\n", + "+0.008 * XZZIZZXIIIIIIIIIIIII\n", + "+0.008 * YZIZZZYIIIIIIIIIIIII\n", + "+0.008 * XZIZZZXIIIIIIIIIIIII\n", + "+0.025 * YIZZZZYIIIIIIIIIIIII\n", + "+0.025 * XIZZZZXIIIIIIIIIIIII\n", + "+0.120 * IIIIZZIIIIIIIIIIIIII\n", + "+0.109 * IIIZIZIIIIIIIIIIIIII\n", + "-0.000 * IIYYIZIIIIIIIIIIIIII\n", + "-0.000 * IIXXIZIIIIIIIIIIIIII\n", + "+0.081 * IIZIIZIIIIIIIIIIIIII\n", + "+0.115 * IZIIIZIIIIIIIIIIIIII\n", + "+0.119 * ZIIIIZIIIIIIIIIIIIII\n", + "-0.000 * IIIZYYIIIIIIIIIIIIII\n", + "-0.000 * IIIZXXIIIIIIIIIIIIII\n", + "-0.029 * IIYXXYIIIIIIIIIIIIII\n", + "-0.028 * IIYYYYIIIIIIIIIIIIII\n", + "+0.001 * IIXXYYIIIIIIIIIIIIII\n", + "+0.001 * IIYYXXIIIIIIIIIIIIII\n", + "-0.028 * IIXXXXIIIIIIIIIIIIII\n", + "-0.029 * IIXYYXIIIIIIIIIIIIII\n", + "+0.000 * IIZIYYIIIIIIIIIIIIII\n", + "+0.000 * IIZIXXIIIIIIIIIIIIII\n", + "-0.000 * YXIXZYIIIIIIIIIIIIII\n", + "-0.000 * YYIYZYIIIIIIIIIIIIII\n", + "-0.000 * XXIYZYIIIIIIIIIIIIII\n", + "-0.000 * YYIXZXIIIIIIIIIIIIII\n", + "-0.000 * XXIXZXIIIIIIIIIIIIII\n", + "-0.000 * XYIYZXIIIIIIIIIIIIII\n", + "+0.000 * YXXZZYIIIIIIIIIIIIII\n", + "+0.026 * YYYZZYIIIIIIIIIIIIII\n", + "+0.026 * XXYZZYIIIIIIIIIIIIII\n", + "+0.026 * YYXZZXIIIIIIIIIIIIII\n", + "+0.026 * XXXZZXIIIIIIIIIIIIII\n", + "+0.000 * XYYZZXIIIIIIIIIIIIII\n", + "+0.081 * IIIZZIIIIIIIIIIIIIII\n", + "+0.000 * IIYYZIIIIIIIIIIIIIII\n", + "+0.000 * IIXXZIIIIIIIIIIIIIII\n", + "+0.109 * IIZIZIIIIIIIIIIIIIII\n", + "+0.115 * IZIIZIIIIIIIIIIIIIII\n", + "+0.119 * ZIIIZIIIIIIIIIIIIIII\n", + "+0.000 * YXIXYIIIIIIIIIIIIIII\n", + "+0.026 * YYIYYIIIIIIIIIIIIIII\n", + "+0.026 * XXIYYIIIIIIIIIIIIIII\n", + "+0.026 * YYIXXIIIIIIIIIIIIIII\n", + "+0.026 * XXIXXIIIIIIIIIIIIIII\n", + "+0.000 * XYIYXIIIIIIIIIIIIIII\n", + "+0.000 * YXXZYIIIIIIIIIIIIIII\n", + "+0.000 * YYYZYIIIIIIIIIIIIIII\n", + "+0.000 * XXYZYIIIIIIIIIIIIIII\n", + "+0.000 * YYXZXIIIIIIIIIIIIIII\n", + "+0.000 * XXXZXIIIIIIIIIIIIIII\n", + "+0.000 * XYYZXIIIIIIIIIIIIIII\n", + "+0.119 * IIZZIIIIIIIIIIIIIIII\n", + "+0.114 * IZIZIIIIIIIIIIIIIIII\n", + "+0.132 * ZIIZIIIIIIIIIIIIIIII\n", + "+0.114 * IZZIIIIIIIIIIIIIIIII\n", + "+0.132 * ZIZIIIIIIIIIIIIIIIII\n", + "+0.108 * ZZIIIIIIIIIIIIIIIIII\n" + ] + } + ], + "source": [ + "chemistry_problem = MoleculeProblem(\n", + " molecule=molecule,\n", + " mapping=\"jordan_wigner\", #'bravyi_kitaev'\n", + " z2_symmetries=True,\n", + " freeze_core=True,\n", + ")\n", + "\n", + "operator = chemistry_problem.generate_hamiltonian()\n", + "gs_problem = chemistry_problem.update_problem(operator.num_qubits)\n", + "print(\"Your Hamiltonian is\", operator.show(), sep=\"\\n\")" + ] + }, + { + "cell_type": "markdown", + "id": "67a124c2-33fc-420c-8cb3-0002f18f4e77", + "metadata": { + "id": "67a124c2-33fc-420c-8cb3-0002f18f4e77" + }, + "source": [ + "The output of the above code lines is the Hamiltonian presented as a superposition of Pauli matrices multiplication.\n", + "One can easily confirm that using z2*symmetries=True, the number of qubits are reduced (compered to z2_symmetries=False): for $H_2$ - from 4 to 1, for $LiH$ from 12 to 8, and for $H*{2}O$ from 14 to 10." + ] + }, + { + "cell_type": "markdown", + "id": "8abe3e3d-1b01-4fab-b86a-feaab3851950", + "metadata": { + "id": "8abe3e3d-1b01-4fab-b86a-feaab3851950" + }, + "source": [ + "## 2. Constructing and Synthesizing a Ground State Solver\n", + "\n", + "A ground state solver model consists of a parameterized eigenfunction (\"the ansatz\"), on which we run a VQE. In addition, a post-process of the result allows to return the total energy (combining the ground state energy of the Hamiltonian, the nuclear repulsion and the static nuclear energy).\n", + "\n", + "Once we've specified an Hamiltonian and a desired Ansatz, we send them to the VQE algorithm in order to find the Hamiltonian's ground state. In the process, the algorithm will send requests to a classical server, which task is to minimize the energy expectation value and return the optimized parameters. The simulator and optimizing parameters are defined as part of the VQE part of the model. The user should control the `max_iteration` value in a manner so the solution has reached a stable convergence. In addition, the value `num_shots` sets the number of measurements performed after each iteration, thus influence the accuracy of the solutions.\n", + "\n", + "We demonstrate two different proposal for the wavefunction solution ansatz: (1) Hardware (HW) efficient, and (2) Unitary Coupled Cluster (UCC). For groundstate solvers it is typical to initialize the Ansatz with the Hartree-Fock state." + ] + }, + { + "cell_type": "markdown", + "id": "07ed8f8e-485b-4f0f-93b7-78e7fd6fbe39", + "metadata": { + "id": "07ed8f8e-485b-4f0f-93b7-78e7fd6fbe39" + }, + "source": [ + "### 2.1 HW-Efficient Ansatz\n", + "\n", + "Hardware-efficient ansatz is a suggested solution that is generated to fit a specific hardware [1]. The ansatz creates a state with given number of parameters by user choice (number of qubits, that should fit the Hamiltonian), and creates entanglement between the qubits by the inputed connectivity map. In this example, a 4 qubit map is given, which is specifically made of $H_2$ with z2_symmetries=False.\n", + "\n", + "After constructing the model, we can synthesize it and view the outputted circuit, in charged on creating the state with an interactive interface." + ] + }, + { + "cell_type": "code", + "execution_count": 159, + "id": "90b20061-8dbd-4136-adba-28ddacb1f583", + "metadata": { + "id": "90b20061-8dbd-4136-adba-28ddacb1f583" + }, + "outputs": [], + "source": [ + "chemistry_problem = MoleculeProblem(\n", + " molecule=molecule,\n", + " mapping=\"jordan_wigner\", #'bravyi_kitaev'\n", + " z2_symmetries=False,\n", + " freeze_core=True,\n", + ")\n", + "\n", + "hwea_params = HEAParameters(\n", + " num_qubits=24,\n", + " connectivity_map=[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8),\n", + " (8, 9), (9, 10)],\n", + " reps=3,\n", + " one_qubit_gates=[\"x\", \"ry\"],\n", + " two_qubit_gates=[\"cx\"],\n", + ")\n", + "\n", + "qmod = construct_chemistry_model(\n", + " chemistry_problem=chemistry_problem,\n", + " use_hartree_fock=True,\n", + " ansatz_parameters=hwea_params,\n", + " execution_parameters=ChemistryExecutionParameters(\n", + " optimizer=OptimizerType.COBYLA,\n", + " max_iteration=30,\n", + " initial_point=None,\n", + " ),\n", + ")\n", + "\n", + "backend_preferences = ClassiqBackendPreferences(\n", + " backend_name=ClassiqSimulatorBackendNames.SIMULATOR\n", + ")\n", + "\n", + "qmod = set_execution_preferences(\n", + " qmod,\n", + " execution_preferences=ExecutionPreferences(\n", + " num_shots=1000, backend_preferences=backend_preferences\n", + " ),\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 160, + "id": "f13599d2-e8e7-4165-aa26-8ae8d4bdafaa", + "metadata": { + "id": "f13599d2-e8e7-4165-aa26-8ae8d4bdafaa" + }, + "outputs": [], + "source": [ + "from classiq import write_qmod\n", + "\n", + "write_qmod(qmod, name=\"molecule_eigensolver\")" + ] + }, + { + "cell_type": "code", + "execution_count": 161, + "id": "22cd12d1-2c87-400a-a983-b2f24e40fa45", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "22cd12d1-2c87-400a-a983-b2f24e40fa45", + "outputId": "d48d0740-4851-4943-f54b-325303b4838a" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/3bc0b6ac-4cbc-46e6-8238-227db5ab0a79?version=0.42.1\n" + ] + } + ], + "source": [ + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "7fb92cdc", + "metadata": { + "id": "7fb92cdc" + }, + "source": [ + "### 2.2. UCC Ansatz\n", + "\n", + "Next, we show how to create the commonly used chemistry-inspired UCC ansatz, which is a unitary version of the classical coupled cluster (CC) method [2] .\n", + "\n", + "The parameter that defines the UCC ansatz is:\n", + "- excitations (List[int] or List[str]): list of desired excitations. Allowed excitations:\n", + " - 1 for singles\n", + " - 2 for doubles\n", + " - 3 for triples\n", + " - 4 for quadruples\n", + "\n", + "Once again, after the code lines bellow run, the user is able to view the outputted circuit, in charged on creating the state with an interactive interface. In addition, the depth of the circuit is printed.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 162, + "id": "1f520673", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "1f520673", + "outputId": "fd4a3467-c48b-483c-b156-0a0cde9e2189" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Opening: https://platform.classiq.io/circuit/ce59181f-b6f0-4cff-8be5-4f5d9aa0cc9f?version=0.42.1\n", + "circuit depth: 16968\n" + ] + } + ], + "source": [ + "chemistry_problem = MoleculeProblem(\n", + " molecule=molecule,\n", + " mapping=\"jordan_wigner\", #'bravyi_kitaev'\n", + " z2_symmetries=True,\n", + " freeze_core=True,\n", + ")\n", + "\n", + "serialized_chemistry_model = construct_chemistry_model(\n", + " chemistry_problem=chemistry_problem,\n", + " use_hartree_fock=True,\n", + " ansatz_parameters=UCCParameters(excitations=[1, 2]),\n", + " execution_parameters=ChemistryExecutionParameters(\n", + " optimizer=OptimizerType.COBYLA,\n", + " max_iteration=30,\n", + " initial_point=None,\n", + " ),\n", + ")\n", + "\n", + "backend_preferences = ClassiqBackendPreferences(\n", + " backend_name=ClassiqSimulatorBackendNames.SIMULATOR\n", + ")\n", + "\n", + "serialized_chemistry_model = set_execution_preferences(\n", + " serialized_chemistry_model,\n", + " execution_preferences=ExecutionPreferences(\n", + " num_shots=1000, backend_preferences=backend_preferences\n", + " ),\n", + ")\n", + "\n", + "qprog = synthesize(serialized_chemistry_model)\n", + "show(qprog)\n", + "\n", + "circuit = QuantumProgram.from_qprog(qprog)\n", + "print(f\"circuit depth: {circuit.transpiled_circuit.depth}\")" + ] + }, + { + "cell_type": "markdown", + "id": "f12c9a32-f271-4892-8515-bd9e6b9fcf8b", + "metadata": { + "id": "f12c9a32-f271-4892-8515-bd9e6b9fcf8b" + }, + "source": [ + "Classiq's UCC algorithm provides an highly efficient solution in aspects of circuit depth and number of CX gates. Those ultimately reduce the gate's time and amount of resources needed for its operation." + ] + }, + { + "cell_type": "markdown", + "id": "ef36661f", + "metadata": { + "id": "ef36661f" + }, + "source": [ + "## 3. Execute to Find Ground State\n", + "\n", + "Once we've synthesized the model we can execute it." + ] + }, + { + "cell_type": "code", + "execution_count": 163, + "id": "1a66d377", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 477 + }, + "id": "1a66d377", + "outputId": "1c93e68e-1300-4fde-ec56-e6e2d377a96e" + }, + "outputs": [ + { + "output_type": "error", + "ename": "ClassiqAPIError", + "evalue": "Error number 90001 occurred. The resources needed to execute this request are insufficient.\n This may be due to computational limitations, or high load on Classiq's servers.\n We suggest trying with alternative parameters, or reducing the resource consumption.\n\n\nError identifier: E581A0475-26BA-4C43-A7AB-BFFCF3EAF1CC.\nIf you need further assistance, please reach out on our Community Slack channel at: https://short.classiq.io/join-slack\nIf the error persists feel free to open a ticket at: https://short.classiq.io/support", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mClassiqAPIError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mexecute\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mqprog\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mresult\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mchemistry_result_dict\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/classiq/_internals/async_utils.py\u001b[0m in \u001b[0;36masync_wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 43\u001b[0m \u001b[0;34m@\u001b[0m\u001b[0mfunctools\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwraps\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0masync_func\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 44\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0masync_wrapper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mAny\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mAny\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0mT\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 45\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mrun\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0masync_func\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 46\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 47\u001b[0m \u001b[0;31m# patch `functools.wraps` work on `name` and `qualname`\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/classiq/_internals/async_utils.py\u001b[0m in \u001b[0;36mrun\u001b[0;34m(coro)\u001b[0m\n\u001b[1;32m 37\u001b[0m \u001b[0;31m# Never use asyncio.run in library code.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 38\u001b[0m \u001b[0mloop\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mget_event_loop\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 39\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mloop\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun_until_complete\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcoro\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 40\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 41\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/nest_asyncio.py\u001b[0m in \u001b[0;36mrun_until_complete\u001b[0;34m(self, future)\u001b[0m\n\u001b[1;32m 96\u001b[0m raise RuntimeError(\n\u001b[1;32m 97\u001b[0m 'Event loop stopped before Future completed.')\n\u001b[0;32m---> 98\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mresult\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 99\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 100\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_run_once\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/lib/python3.10/asyncio/futures.py\u001b[0m in \u001b[0;36mresult\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 199\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__log_traceback\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 200\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_exception\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 201\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_exception\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwith_traceback\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_exception_tb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 202\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_result\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 203\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/lib/python3.10/asyncio/tasks.py\u001b[0m in \u001b[0;36m__step\u001b[0;34m(***failed resolving arguments***)\u001b[0m\n\u001b[1;32m 230\u001b[0m \u001b[0;31m# We use the `send` method directly, because coroutines\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 231\u001b[0m \u001b[0;31m# don't have `__iter__` and `__next__` methods.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 232\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcoro\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 233\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 234\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcoro\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mthrow\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/classiq/execution/jobs.py\u001b[0m in \u001b[0;36mresult_async\u001b[0;34m(self, timeout_sec)\u001b[0m\n\u001b[1;32m 96\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 97\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstatus\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mJobStatus\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mFAILED\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 98\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mClassiqAPIError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0merror\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 99\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstatus\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mJobStatus\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mCANCELLED\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 100\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mClassiqAPIError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Job has been cancelled.\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mClassiqAPIError\u001b[0m: Error number 90001 occurred. The resources needed to execute this request are insufficient.\n This may be due to computational limitations, or high load on Classiq's servers.\n We suggest trying with alternative parameters, or reducing the resource consumption.\n\n\nError identifier: E581A0475-26BA-4C43-A7AB-BFFCF3EAF1CC.\nIf you need further assistance, please reach out on our Community Slack channel at: https://short.classiq.io/join-slack\nIf the error persists feel free to open a ticket at: https://short.classiq.io/support" + ] + } + ], + "source": [ + "result = execute(qprog).result()\n", + "chemistry_result_dict = result[1].value" + ] + }, + { + "cell_type": "markdown", + "id": "f72ceeb5-bc71-46d8-a390-31ec874700f3", + "metadata": { + "id": "f72ceeb5-bc71-46d8-a390-31ec874700f3" + }, + "source": [ + "Execution of the quantum program returns several useful outputs:\n", + "- energy : the output of the VQE algorithm - the electronic energy simulated.\n", + "- nuclear_repulsion : the electrostatic energy generated by the atom's nuclei.\n", + "- hartree_fock_energy : the Hartree Fock energy.\n", + "- total_energy : this is the ground state energy of the Hamiltonian (combining the energy, the nuclear repulsion and the static nuclear energy).\n", + "\n", + "It also contains the full VQE result from which we can get, for example:\n", + "- optimal_parameters : gives the results for the anzats parameters minimizing that expectation value.\n", + "- eigenstate : gives the ground state wave function.\n", + "\n", + "Note the all energy are presented in units of Hartree." + ] + }, + { + "cell_type": "markdown", + "id": "6VG1iSvMpb8M", + "metadata": { + "id": "6VG1iSvMpb8M" + }, + "source": [] + }, + { + "cell_type": "markdown", + "id": "aGkNxwqpX1Yz", + "metadata": { + "id": "aGkNxwqpX1Yz" + }, + "source": [] + }, + { + "cell_type": "code", + "execution_count": 138, + "id": "437b3211", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "437b3211", + "outputId": "dbe14152-d540-4cd0-f294-b17824883a4c" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "-71.7605079203085" + ] + }, + "metadata": {}, + "execution_count": 138 + } + ], + "source": [ + "chemistry_result_dict[\"total_energy\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 139, + "id": "9a537d3c", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "collapsed": true, + "id": "9a537d3c", + "outputId": "bbb38543-5586-41d0-80a4-32ce72e3fa1b" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "{'param_0': 4.297574618367516,\n", + " 'param_1': -1.504633061740663,\n", + " 'param_10': -3.6437416361959856,\n", + " 'param_11': 0.06857537289766391,\n", + " 'param_12': -0.36346685952612656,\n", + " 'param_13': -0.7519018401777506,\n", + " 'param_14': -2.8118598605968717,\n", + " 'param_15': 1.307451081841208,\n", + " 'param_16': -4.4156026166000935,\n", + " 'param_17': 2.1175446665800237,\n", + " 'param_18': 5.580438616773936,\n", + " 'param_19': -3.08318244300614,\n", + " 'param_2': 3.6622861342765347,\n", + " 'param_20': 5.726122176829751,\n", + " 'param_21': 3.65873933961565,\n", + " 'param_22': -5.530192925838418,\n", + " 'param_23': 3.063438649255726,\n", + " 'param_24': 0.5301345737711989,\n", + " 'param_25': -3.31817327605338,\n", + " 'param_26': -4.998839006910894,\n", + " 'param_27': -6.2474777669575765,\n", + " 'param_28': -2.8845513153540208,\n", + " 'param_29': -3.1405109604973145,\n", + " 'param_3': -4.53110966026628,\n", + " 'param_4': 4.748304331159153,\n", + " 'param_5': -5.219454727089838,\n", + " 'param_6': 2.8281186713622386,\n", + " 'param_7': -1.9088614011539669,\n", + " 'param_8': 6.121290432401807,\n", + " 'param_9': -2.7335067577998275}" + ] + }, + "metadata": {}, + "execution_count": 139 + } + ], + "source": [ + "chemistry_result_dict[\"vqe_result\"][\"optimal_parameters\"]" + ] + }, + { + "cell_type": "markdown", + "id": "2375f3c3", + "metadata": { + "id": "2375f3c3" + }, + "source": [ + "Finally, we can compare the VQE solution to the classical solution by employing exact diagonalization:" + ] + }, + { + "cell_type": "code", + "execution_count": 140, + "id": "5c896576", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "5c896576", + "outputId": "f6ada73d-6bd4-440d-98c1-d17e70b57cde" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "exact result: -23.544497240443615\n", + "vqe result: -80.95442108093188\n" + ] + } + ], + "source": [ + "mat = operator.to_matrix()\n", + "w, v = np.linalg.eig(mat)\n", + "print(\"exact result:\", np.real(min(w)))\n", + "print(\"vqe result:\", chemistry_result_dict[\"energy\"])" + ] + }, + { + "cell_type": "markdown", + "source": [ + "## **h2**\n", + "\n", + "hw-eff: width 4/depth34\n", + "\n", + "ucc: width 1/depth 6, width 4, depth 3\n", + "\n", + "total en -1.1342995783232035,\n", + "exact result: -1.8572750302023786,\n", + "vqe result: -1.854268572772183\n" + ], + "metadata": { + "id": "TXF-IJT59B7j" + }, + "id": "TXF-IJT59B7j" + }, + { + "cell_type": "markdown", + "id": "2qTUaxbEX5IF", + "metadata": { + "id": "2qTUaxbEX5IF" + }, + "source": [ + "## **h2o**\n", + "\n", + "hw-eff.: width 12/depth 375,\n", + "(conn map 0-1..10-11, reps 11)\n", + "\n", + "ucc: width 8/depth 1218, width 12/depth 1048\n", + "\n", + "total energy -71.7605079203085,\n", + "exact result: -23.544497240443615,\n", + "vqe result: -80.95442108093192" + ] + }, + { + "cell_type": "markdown", + "id": "bxRq_3-Jb4_0", + "metadata": { + "id": "bxRq_3-Jb4_0" + }, + "source": [ + "##**co2**\n", + "\n", + "hw-eff: width 24/depth 175\n", + "\n", + "ucc: width 20/depth 19767, width 24/depth 16968\n", + "\n", + "Error number 90001 occurred. The resources needed to execute this request are insufficient.\n", + " This may be due to computational limitations, or high load on Classiq's servers." + ] + }, + { + "cell_type": "markdown", + "id": "b998e321", + "metadata": { + "id": "b998e321" + }, + "source": [ + "[1] Abhinav Kandala, Antonio Mezzacapo, Kristan Temme, Maika Takita, Markus Brink, Jerry M. Chow, Jay M. Gambetta Hardware-efficient variational quantum eigensolver for small molecules and quantum magnets. Nature 549, 242 (2017)\n", + "\n", + "[2] Panagiotis Kl. Barkoutsos, Jerome F. Gonthier, Igor Sokolov, Nikolaj Moll, Gian Salis, Andreas Fuhrer, Marc Ganzhorn, Daniel J. Egger, Matthias Troyer, Antonio Mezzacapo, Stefan Filipp, and Ivano Tavernelli Quantum algorithms for electronic structure calculations: Particle-hole Hamiltonian and optimized wave-function expansions Phys. Rev. A 98, 022322 (2018)\n" + ] + } + ], + "metadata": { + "colab": { + "provenance": [], + "include_colab_link": true + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file From 08ef7b5b09faee7d53ddace263648257c8f7e1fd Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Sat, 15 Jun 2024 04:20:38 +0200 Subject: [PATCH 15/83] Add files via upload --- .../Yasir_Mansour_HW1_QClass2024 (1).ipynb | 616 ++++++++++++++++++ 1 file changed, 616 insertions(+) create mode 100644 community/QClass_2024/Submissions/HW1/Yasir_Mansour_HW1_QClass2024 (1).ipynb diff --git a/community/QClass_2024/Submissions/HW1/Yasir_Mansour_HW1_QClass2024 (1).ipynb b/community/QClass_2024/Submissions/HW1/Yasir_Mansour_HW1_QClass2024 (1).ipynb new file mode 100644 index 00000000..d464ea5d --- /dev/null +++ b/community/QClass_2024/Submissions/HW1/Yasir_Mansour_HW1_QClass2024 (1).ipynb @@ -0,0 +1,616 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "XtC66r2Y5_eT", + "tags": [] + }, + "source": [ + "# The Qmod Workshop - Introduction\n", + "\n", + "The Classiq platform features a high-level quantum modeling language called Qmod. Qmod is compiled into concrete gate-level implementation using a powerful synthesis engine that optimizes and adapts the implementation to different target hardware/simulation environments.\n", + "\n", + "In this workshop, we will learn how to write quantum models using Qmod. We will be using the Python embedding of Qmod, available as part of the Classiq Python SDK. We will learn basic concepts in the Qmod language, such as functions, operators, quantum variables, and quantum types. We will develop useful building blocks and small algorithms.\n", + "\n", + "The QMOD language reference(docs.classiq.io/latest/user-guide/platform/qmod/language-reference/) covers these concepts more systematically and includes more examples.\n", + "\n", + "This workshop consists of step-by-step exercises. It is structured as follows:\n", + "\n", + "- Part 1: Language Fundamentals - Exercises 1-5\n", + "- Part 2: Higher-Level Concepts - Exercises 6-10\n", + "- Part 3: Execution Flows - Exercises 11, 12\n", + "\n", + "The introduction and Part 1 are included in this notebook. Part 2 and 3 are each in its own separate notebook. For each exercise you will find the solution to the exercises at the bottom of the same notebook.\n", + "\n", + "### Preparations\n", + "\n", + "Make sure you have a Python version of 3.8 through 3.11 installed. Unfortunately, Classiq is not yet supported with Python 3.12.\n", + "\n", + "Install Classiq’s Python SDK by following the instructions on this page: Getting Started - Classiq(docs.classiq.io/latest/getting-started/).\n", + "\n", + "### Python Qmod Exercises - General Instructions\n", + "\n", + "In order to synthesize and execute your Qmod code, you should:\n", + "1. Make sure you define a `main` function that calls functions you create.\n", + "2. Use `create_model` by running `qmod = create_model(main)` to construct a representation of your model.\n", + "3. You can synthesize the model (using `qprog = synthesize(qmod)`) to obtain an implementation - a quantum program.\n", + "4. You can then visualize the quantum program (`show(qprog)`) or execute it (using `execute(qprog)`. See: Execution - Classiq(docs.classiq.io/latest/user-guide/platform/executor/#full-example)). You can also execute it with the IDE after visualizing the circuit.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "RatBmdhm5_e2" + }, + "source": [ + "### Exercise 0: From Model to Execution\n", + "\n", + "The following model defines a function that applies X and H gates on a single qubit, and subsequently calls it:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "156317w1BFqw", + "outputId": "2bf3654e-05de-4dd1-f7cb-08c9b1d49011", + "tags": [] + }, + "outputs": [], + "source": [ + "!pip install -U -q classiq" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "EaDN5EkVC58C", + "outputId": "c2446774-718c-4d7c-eb0b-e8e1f676d27d", + "tags": [] + }, + "outputs": [], + "source": [ + "import classiq\n", + "classiq.authenticate()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "DpF2vKUh5_e7", + "tags": [] + }, + "outputs": [], + "source": [ + "from classiq import *\n", + "\n", + "\n", + "# Define a quantum function using the @qfunc decorator\n", + "@qfunc\n", + "def qfn(q: QBit) -> None:\n", + " X(target=q)\n", + " H(target=q)\n", + "\n", + "\n", + "# Define a main function\n", + "@qfunc\n", + "def main(res: Output[QBit]) -> None:\n", + " allocate(1, res)\n", + " qfn(q=res)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "NXh4E69A5_fC" + }, + "source": [ + "Create a model from it, and synthesize, visualize, and execute it.\n", + "\n", + "Use the General Instructions above to do so.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "UB612BIP5_fE", + "outputId": "6658d861-fccb-4acb-8bf2-1b52dee5b6c4", + "tags": [] + }, + "outputs": [], + "source": [ + "from classiq import *\n", + "\n", + "# Your code here:\n", + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)\n", + "execute(qprog)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "s3CXWd3V5_fF" + }, + "source": [ + "In Qmod `QBit` is the simplest quantum type, and in this example, `q` is a quantum variable of type `QBit`. Quantum variables abstract away the mapping of quantum objects to qubits in the actual circuit.\n", + "\n", + "See also Quantum Variables(docs.classiq.io/latest/user-guide/platform/qmod/language-reference/quantum-variables/).\n", + "\n", + "We will discuss other quantum types during the workshop.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "wtQE208K5_fH" + }, + "source": [ + "# The Qmod Workshop - Part 1: Language Fundamentals\n", + "\n", + "Follow exercises 1 through 5 for the first session of the workshop." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "8jM3lrC15_fI" + }, + "source": [ + "## Exercise 1 - Bell Pair\n", + "\n", + "Create a function that takes two single-qubit (`QBit`) quantum arguments and prepares the bell state on them (Bell state(en.wikipedia.org/wiki/Bell_state)) by applying `H` on one variable and then using it as the control of a `CX` function with the second variable as the target.\n", + "Create a main function that uses this function and has two single-qubit outputs, initialize them to the |0> state (using the `allocate` function), and apply your function to them.\n", + "\n", + "See also Functions(docs.classiq.io/latest/user-guide/platform/qmod/language-reference/functions#syntax)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "fNOTP83I5_fJ", + "outputId": "4c0a03a2-6f67-4c15-957e-261b56f1ad91", + "tags": [] + }, + "outputs": [], + "source": [ + "from classiq import *\n", + "# Define a quantum function using the @qfunc decorator\n", + "@qfunc\n", + "def bell(q1: QBit, q2: QBit) -> None:\n", + " H(target=q1)\n", + " CX(control=q1,target=q2)\n", + "\n", + "# Define a main function\n", + "@qfunc\n", + "def main(res1: Output[QBit], res2: Output[QBit]) -> None:\n", + " allocate(1, res1)\n", + " allocate(1, res2)\n", + " bell(q1=res1,q2=res2)\n", + "\n", + "# Your code here:\n", + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)\n", + "execute(qprog)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "AY_kkbyi5_fM" + }, + "source": [ + "Use qubit array subscript (the syntax - _variable_ **[** _index-expression_ **]**) to change the function from subsection 1 to receive a single quantum variable, a qubit array (`QArray`) of size 2.\n", + "Change your main function to declare a single output (also an array of size 2).\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "Y-c9r6OT5_fO", + "outputId": "8a2a41c7-bcee-4765-8906-4b7026bf3b71", + "tags": [] + }, + "outputs": [], + "source": [ + "from classiq import *\n", + "\n", + "# Your code here:\n", + "# Define a quantum function using the @qfunc decorator\n", + "@qfunc\n", + "def bell(q: QArray) -> None:\n", + " H(target=q[0])\n", + " CX(control=q[0],target=q[1])\n", + "\n", + "# Define a main function\n", + "@qfunc\n", + "def main(res: Output[QArray]) -> None:\n", + " allocate(2, res)\n", + " bell(res)\n", + "\n", + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)\n", + "execute(qprog)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "SoXeCLcX5_fQ" + }, + "source": [ + "## Exercise 2 - Repeat\n", + "\n", + "Use the built-in `repeat` operator to create your own Hadamard transform function (call it `my_hadamard_transform`). The Hadamard transform function is a function that takes as argument a qubit array of an unspecified size and applies `H` to each of its qubit.\n", + "\n", + "See also Classical repeat(docs.classiq.io/latest/user-guide/platform/qmod/language-reference/statements/classical-control-flow/#classical-repeat).\n", + "\n", + "Set your main function to have a quantum array output of unspecified size, allocate 10 qubits, and then apply your Hadamard transform function.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "vFrcPTqi5_fS", + "outputId": "48c6573f-ba4d-4c47-b65f-dd2204818e8e", + "tags": [] + }, + "outputs": [], + "source": [ + "from classiq import *\n", + "\n", + "# Your code here:\n", + "@qfunc\n", + "def my_hadamard(q: QArray) -> None:\n", + " repeat(count=q.len, iteration=lambda i: H(target=q[i]))\n", + "\n", + "# Define a main function\n", + "@qfunc\n", + "def main(res: Output[QArray]) -> None:\n", + " allocate(10, res)\n", + " my_hadamard(res)\n", + "\n", + "\n", + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)\n", + "execute(qprog)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "98liCUg15_fT" + }, + "source": [ + "### Note: Quantum Variable Capture\n", + "The `repeat` operator invokes a statement block multiple times. The statement block is specified using a Python callable, typically a lambda expression. Inside the block you can refer to variables declared in the outer function scope.\n", + "This concept is called `quantum variable capture`, equivalent to capture(en.wikipedia.org/wiki/Closure_(computer_programming)) in classical languages.\n", + "\n", + "See also Capturing context variables and parameters(docs.classiq.io/latest/user-guide/platform/qmod/language-reference/operators/#capturing-context-variables-and-parameters)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "fonXAiHP5_fU" + }, + "source": [ + "### Exercise 3 - Power\n", + "Raising a quantum operation to a power appears in many known algorithms, for examples, in Grover search and Quantum Phase Estimation.\n", + "For most operations, it simply means repeating the same circuit multiple times.\n", + "\n", + "Sometimes, however, power can be simplified, thus saving computational resources.\n", + "The most trivial example is a quantum operation expressed as a single explicit unitary matrix (i.e., all n*n matrix terms are given) - raising the operation can be done by raising the matrix to that power via classical programming.\n", + "\n", + "See also Power operator(docs.classiq.io/latest/user-guide/platform/qmod/language-reference/statements/quantum-operators/#syntax).\n", + "\n", + "Use the following code to generate a 2-qubit (real) unitary matrix:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "tD_aBHoU5_fW", + "tags": [] + }, + "outputs": [], + "source": [ + "from typing import List\n", + "\n", + "import numpy as np\n", + "\n", + "from classiq import *\n", + "\n", + "rng = np.random.default_rng(seed=0)\n", + "random_matrix = rng.random((4, 4))\n", + "qr_unitary, _ = np.linalg.qr(random_matrix)\n", + "\n", + "unitary_matrix = QConstant(\"unitary_matrix\", List[List[float]], qr_unitary.tolist())" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "yRWVHm1O5_fY" + }, + "source": [ + "In order to reuse some classical value we can define a `QConstant` to store that value.\n", + "\n", + "1. Create a model that applies `unitary_matrix` on a 2 qubit variable.\n", + "2. Create another model that applies `unitary_matrix` raised to power 3 on a 2 qubit variable.\n", + "3. Compare the gate count via the Classiq’s IDE in both cases.\n", + "\n", + "Note - the signature of function `unitary` is:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "bTtPgsj75_fZ", + "tags": [] + }, + "outputs": [], + "source": [ + "def unitary(\n", + " elements: CArray[CArray[CReal]],\n", + " target: QArray[QBit],\n", + ") -> None:\n", + " pass" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "6Js8fNbl5_fa", + "outputId": "4d13cc20-3b3f-45b8-93fb-b353ab8cbea0", + "tags": [] + }, + "outputs": [], + "source": [ + "from classiq import *\n", + "\n", + "# Your code here:\n", + "rng = np.random.default_rng(seed=0)\n", + "random_matrix = rng.random((4, 4))\n", + "qr_unitary, _ = np.linalg.qr(random_matrix)\n", + "\n", + "unitary_matrix = QConstant(\"unitary_matrix\", List[List[float]], qr_unitary.tolist())\n", + "\n", + "\n", + "@qfunc\n", + "def main(q: Output[QArray[QBit]]) -> None:\n", + " allocate(2, q)\n", + " power(3, lambda: unitary(unitary_matrix, q))\n", + "\n", + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)\n", + "execute(qprog)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "P-jP3v9O5_fb" + }, + "source": [ + "## Exercise 4 - User-defined Operators\n", + "Create a function that applies a given single-qubit operation to all qubits in its quantum argument (Call your function `my_apply_to_all`). Such a function is also called an operator, i.e. a function that one of its arguments is another function (its operand).\n", + "\n", + "See also Operators(docs.classiq.io/latest/user-guide/platform/qmod/language-reference/operators/).\n", + "\n", + "Follow these guidelines:\n", + "1. Your function should declare a quantum argument of type qubit array. It should also declare an argument of a function type with a single qubit argument.\n", + "2. The body should apply the operand to all qubits in the argument.\n", + "\n", + "When you're done, re-implement `my_hadamard_transform` from exercise 2 using this function instead of `repeat`.\n", + "Use the same main function from exercise 2." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "vvMbP91D5_fc", + "outputId": "18fca5c9-3b26-4683-98c7-c17f27de698a", + "tags": [] + }, + "outputs": [], + "source": [ + "from classiq import *\n", + "\n", + "# Your code here:\n", + "\n", + "@qfunc\n", + "def my_apply_to_all(operand: QCallable[QBit], q: QArray[QBit]) -> None:\n", + " repeat(q.len, lambda i: operand(q[i]))\n", + "\n", + "@qfunc\n", + "def my_hadamard(q: QArray[QBit]) -> None:\n", + " my_apply_to_all(lambda t: H(t), q)\n", + "\n", + "# Define a main function\n", + "@qfunc\n", + "def main(q: Output[QArray[QBit]]) -> None:\n", + " allocate(10, q)\n", + " my_hadamard(q)\n", + "\n", + "\n", + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)\n", + "execute(qprog)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "gh690ZGT5_fe" + }, + "source": [ + "# Exercise 5 - Quantum Conditionals\n", + "\n", + "### Exercise 5a - Control Operator\n", + "Use the built-in `control` operator to create a function that receives two single qubit variables and uses one of the variables to control an RY gate with a `pi/2` angle acting on the other variable (without using the `CRY` function).\n", + "\n", + "See also Quantum operators(docs.classiq.io/latest/user-guide/platform/qmod/language-reference/statements/quantum-operators/#syntax).\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "00trO6SJ5_ff", + "outputId": "b022f930-40a5-436c-b3af-0a4e4e5d21d7", + "tags": [] + }, + "outputs": [], + "source": [ + "from classiq import *\n", + "\n", + "# Your code here:\n", + "from classiq.qmod.symbolic import pi\n", + "\n", + "\n", + "@qfunc\n", + "def my_controlled_ry(control_bit: QBit, target: QBit) -> None:\n", + " control(control_bit, lambda: RY(pi / 2, target))\n", + "\n", + "\n", + "@qfunc\n", + "def main(control_bit: Output[QBit], target: Output[QBit]) -> None:\n", + " allocate(1, control_bit)\n", + " allocate(1, target)\n", + " my_controlled_ry(control_bit, target)\n", + "\n", + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)\n", + "execute(qprog)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "GJ9y7jlY5_fh" + }, + "source": [ + "### Exercise 5b - Control (\"Quantum If\")\n", + "The `control` operator is the conditional application of some operation, with the condition being that all control qubits are in the state |1>. This notion is generalized in QMOD to other control states, where the condition is specified as a comparison between a quantum numeric variable and a numeric value, similar to a classical `if` statement. Quantum numeric variables are declared with class `QNum`.\n", + "\n", + "See also Numeric types(docs.classiq.io/latest/user-guide/platform/qmod/language-reference/quantum-types/#syntax).\n", + "\n", + "In QMOD this generalization is available as a native statement - control.\n", + "\n", + "See also control(docs.classiq.io/latest/user-guide/platform/qmod/language-reference/statements/quantum-operators/).\n", + "\n", + "1. Declare a `QNum` output argument using `Output[QNum]` and name it `x`.\n", + "2. Use the `prepare_int` function to initialize it to `9`. Note that you don't need to specify the `QNum` attributes - size, sign, and fraction digits, as they are inferred at the point of initialization.\n", + "3. Execute the circuit and observe the results.\n", + "4. Declare another output argument of type `QBit` and perform a `control` such that under the condition that `x` is 9, the qubit is flipped. Execute the circuit and observe the results. Repeat for a different condition." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "IohNdRCA5_fi", + "outputId": "c3d53156-d530-48b8-e31b-80990b06e66d", + "tags": [] + }, + "outputs": [], + "source": [ + "from classiq import *\n", + "\n", + "# Your code here:\n", + "@qfunc\n", + "def main(x: Output[QNum], target: Output[QBit]) -> None:\n", + " prepare_int(9, x)\n", + " allocate(1, target)\n", + " control(x == 9, lambda: X(target))\n", + "\n", + "\n", + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + } + ], + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3 [Default]", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} From 00217a5be4d18b81de676398a4ec6919a70e220b Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Sat, 15 Jun 2024 04:22:25 +0200 Subject: [PATCH 16/83] Delete community/QClass_2024/Submissions/HW1/Yasir_Mansour_HW1_QClass2024.ipynb --- .../HW1/Yasir_Mansour_HW1_QClass2024.ipynb | 851 ------------------ 1 file changed, 851 deletions(-) delete mode 100644 community/QClass_2024/Submissions/HW1/Yasir_Mansour_HW1_QClass2024.ipynb diff --git a/community/QClass_2024/Submissions/HW1/Yasir_Mansour_HW1_QClass2024.ipynb b/community/QClass_2024/Submissions/HW1/Yasir_Mansour_HW1_QClass2024.ipynb deleted file mode 100644 index 506f30bd..00000000 --- a/community/QClass_2024/Submissions/HW1/Yasir_Mansour_HW1_QClass2024.ipynb +++ /dev/null @@ -1,851 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "XtC66r2Y5_eT" - }, - "source": [ - "# The Qmod Workshop - Introduction\n", - "\n", - "The Classiq platform features a high-level quantum modeling language called Qmod. Qmod is compiled into concrete gate-level implementation using a powerful synthesis engine that optimizes and adapts the implementation to different target hardware/simulation environments.\n", - "\n", - "In this workshop, we will learn how to write quantum models using Qmod. We will be using the Python embedding of Qmod, available as part of the Classiq Python SDK. We will learn basic concepts in the Qmod language, such as functions, operators, quantum variables, and quantum types. We will develop useful building blocks and small algorithms.\n", - "\n", - "The [QMOD language reference](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/) covers these concepts more systematically and includes more examples.\n", - "\n", - "This workshop consists of step-by-step exercises. It is structured as follows:\n", - "\n", - "- Part 1: Language Fundamentals - Exercises 1-5\n", - "- Part 2: Higher-Level Concepts - Exercises 6-10\n", - "- Part 3: Execution Flows - Exercises 11, 12\n", - "\n", - "The introduction and Part 1 are included in this notebook. Part 2 and 3 are each in its own separate notebook. For each exercise you will find the solution to the exercises at the bottom of the same notebook.\n", - "\n", - "### Preparations\n", - "\n", - "Make sure you have a Python version of 3.8 through 3.11 installed. Unfortunately, Classiq is not yet supported with Python 3.12.\n", - "\n", - "Install Classiq’s Python SDK by following the instructions on this page: [Getting Started - Classiq](https://docs.classiq.io/latest/getting-started/).\n", - "\n", - "### Python Qmod Exercises - General Instructions\n", - "\n", - "In order to synthesize and execute your Qmod code, you should:\n", - "1. Make sure you define a `main` function that calls functions you create.\n", - "2. Use `create_model` by running `qmod = create_model(main)` to construct a representation of your model.\n", - "3. You can synthesize the model (using `qprog = synthesize(qmod)`) to obtain an implementation - a quantum program.\n", - "4. You can then visualize the quantum program (`show(qprog)`) or execute it (using `execute(qprog)`. See: [Execution - Classiq](https://docs.classiq.io/latest/user-guide/platform/executor/#full-example)). You can also execute it with the IDE after visualizing the circuit.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "RatBmdhm5_e2" - }, - "source": [ - "### Exercise 0: From Model to Execution\n", - "\n", - "The following model defines a function that applies X and H gates on a single qubit, and subsequently calls it:" - ] - }, - { - "cell_type": "code", - "source": [ - "!pip install -U classiq" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "collapsed": true, - "id": "156317w1BFqw", - "outputId": "2bf3654e-05de-4dd1-f7cb-08c9b1d49011" - }, - "execution_count": 1, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Collecting classiq\n", - " Downloading classiq-0.41.1-py3-none-any.whl (398 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m398.1/398.1 kB\u001b[0m \u001b[31m4.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hCollecting ConfigArgParse<2.0.0,>=1.5.3 (from classiq)\n", - " Downloading ConfigArgParse-1.7-py3-none-any.whl (25 kB)\n", - "Collecting Pyomo<6.6,>=6.5 (from classiq)\n", - " Downloading Pyomo-6.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.7 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m10.7/10.7 MB\u001b[0m \u001b[31m29.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hCollecting black<25.0,>=24.0 (from classiq)\n", - " Downloading black-24.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.8 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.8/1.8 MB\u001b[0m \u001b[31m19.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hCollecting httpx<1,>=0.23.0 (from classiq)\n", - " Downloading httpx-0.27.0-py3-none-any.whl (75 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m75.6/75.6 kB\u001b[0m \u001b[31m3.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: keyring<24.0.0,>=23.5.0 in /usr/lib/python3/dist-packages (from classiq) (23.5.0)\n", - "Requirement already satisfied: matplotlib<4.0.0,>=3.4.3 in /usr/local/lib/python3.10/dist-packages (from classiq) (3.7.1)\n", - "Collecting networkx<3.0.0,>=2.5.1 (from classiq)\n", - " Downloading networkx-2.8.8-py3-none-any.whl (2.0 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.0/2.0 MB\u001b[0m \u001b[31m29.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: numexpr<3.0.0,>=2.7.3 in /usr/local/lib/python3.10/dist-packages (from classiq) (2.10.0)\n", - "Requirement already satisfied: numpy<2.0.0,>=1.20.1 in /usr/local/lib/python3.10/dist-packages (from classiq) (1.25.2)\n", - "Collecting packaging<23.0,>=22.0 (from classiq)\n", - " Downloading packaging-22.0-py3-none-any.whl (42 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m42.6/42.6 kB\u001b[0m \u001b[31m2.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: pandas<3.0.0,>=1.4.0 in /usr/local/lib/python3.10/dist-packages (from classiq) (2.0.3)\n", - "Requirement already satisfied: plotly<6.0.0,>=5.7.0 in /usr/local/lib/python3.10/dist-packages (from classiq) (5.15.0)\n", - "Collecting pydantic<2.0.0,>=1.9.1 (from classiq)\n", - " Downloading pydantic-1.10.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.1/3.1 MB\u001b[0m \u001b[31m39.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: scipy<2.0.0,>=1.10.1 in /usr/local/lib/python3.10/dist-packages (from classiq) (1.11.4)\n", - "Collecting sympy<1.11.0,>=1.9.0 (from classiq)\n", - " Downloading sympy-1.10.1-py3-none-any.whl (6.4 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m6.4/6.4 MB\u001b[0m \u001b[31m22.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: tabulate<1,>=0.8.9 in /usr/local/lib/python3.10/dist-packages (from classiq) (0.9.0)\n", - "Requirement already satisfied: click>=8.0.0 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (8.1.7)\n", - "Collecting mypy-extensions>=0.4.3 (from black<25.0,>=24.0->classiq)\n", - " Downloading mypy_extensions-1.0.0-py3-none-any.whl (4.7 kB)\n", - "Collecting pathspec>=0.9.0 (from black<25.0,>=24.0->classiq)\n", - " Downloading pathspec-0.12.1-py3-none-any.whl (31 kB)\n", - "Requirement already satisfied: platformdirs>=2 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (4.2.2)\n", - "Requirement already satisfied: tomli>=1.1.0 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (2.0.1)\n", - "Requirement already satisfied: typing-extensions>=4.0.1 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (4.11.0)\n", - "Requirement already satisfied: anyio in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (3.7.1)\n", - "Requirement already satisfied: certifi in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (2024.2.2)\n", - "Collecting httpcore==1.* (from httpx<1,>=0.23.0->classiq)\n", - " Downloading httpcore-1.0.5-py3-none-any.whl (77 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m77.9/77.9 kB\u001b[0m \u001b[31m3.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: idna in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (3.7)\n", - "Requirement already satisfied: sniffio in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (1.3.1)\n", - "Collecting h11<0.15,>=0.13 (from httpcore==1.*->httpx<1,>=0.23.0->classiq)\n", - " Downloading h11-0.14.0-py3-none-any.whl (58 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m58.3/58.3 kB\u001b[0m \u001b[31m4.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (1.2.1)\n", - "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (0.12.1)\n", - "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (4.51.0)\n", - "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (1.4.5)\n", - "Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (9.4.0)\n", - "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (3.1.2)\n", - "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (2.8.2)\n", - "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas<3.0.0,>=1.4.0->classiq) (2023.4)\n", - "Requirement already satisfied: tzdata>=2022.1 in /usr/local/lib/python3.10/dist-packages (from pandas<3.0.0,>=1.4.0->classiq) (2024.1)\n", - "Requirement already satisfied: tenacity>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from plotly<6.0.0,>=5.7.0->classiq) (8.3.0)\n", - "Collecting ply (from Pyomo<6.6,>=6.5->classiq)\n", - " Downloading ply-3.11-py2.py3-none-any.whl (49 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m49.6/49.6 kB\u001b[0m \u001b[31m3.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: mpmath>=0.19 in /usr/local/lib/python3.10/dist-packages (from sympy<1.11.0,>=1.9.0->classiq) (1.3.0)\n", - "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.7->matplotlib<4.0.0,>=3.4.3->classiq) (1.16.0)\n", - "Requirement already satisfied: exceptiongroup in /usr/local/lib/python3.10/dist-packages (from anyio->httpx<1,>=0.23.0->classiq) (1.2.1)\n", - "Installing collected packages: ply, sympy, Pyomo, pydantic, pathspec, packaging, networkx, mypy-extensions, h11, ConfigArgParse, httpcore, black, httpx, classiq\n", - " Attempting uninstall: sympy\n", - " Found existing installation: sympy 1.12\n", - " Uninstalling sympy-1.12:\n", - " Successfully uninstalled sympy-1.12\n", - " Attempting uninstall: pydantic\n", - " Found existing installation: pydantic 2.7.1\n", - " Uninstalling pydantic-2.7.1:\n", - " Successfully uninstalled pydantic-2.7.1\n", - " Attempting uninstall: packaging\n", - " Found existing installation: packaging 24.0\n", - " Uninstalling packaging-24.0:\n", - " Successfully uninstalled packaging-24.0\n", - " Attempting uninstall: networkx\n", - " Found existing installation: networkx 3.3\n", - " Uninstalling networkx-3.3:\n", - " Successfully uninstalled networkx-3.3\n", - "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", - "torch 2.3.0+cu121 requires nvidia-cublas-cu12==12.1.3.1; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cuda-cupti-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cuda-nvrtc-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cuda-runtime-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cudnn-cu12==8.9.2.26; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cufft-cu12==11.0.2.54; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-curand-cu12==10.3.2.106; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cusolver-cu12==11.4.5.107; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cusparse-cu12==12.1.0.106; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-nccl-cu12==2.20.5; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-nvtx-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\u001b[0m\u001b[31m\n", - "\u001b[0mSuccessfully installed ConfigArgParse-1.7 Pyomo-6.5.0 black-24.4.2 classiq-0.41.1 h11-0.14.0 httpcore-1.0.5 httpx-0.27.0 mypy-extensions-1.0.0 networkx-2.8.8 packaging-22.0 pathspec-0.12.1 ply-3.11 pydantic-1.10.15 sympy-1.10.1\n" - ] - } - ] - }, - { - "cell_type": "code", - "source": [ - "import classiq\n", - "classiq.authenticate()" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "id": "EaDN5EkVC58C", - "outputId": "c2446774-718c-4d7c-eb0b-e8e1f676d27d" - }, - "execution_count": 3, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Your user code: DJXG-DBNT\n", - "If a browser doesn't automatically open, please visit this URL from any trusted device: https://auth.classiq.io/activate?user_code=DJXG-DBNT\n" - ] - } - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "id": "DpF2vKUh5_e7" - }, - "outputs": [], - "source": [ - "from classiq import *\n", - "\n", - "\n", - "# Define a quantum function using the @qfunc decorator\n", - "@qfunc\n", - "def qfn(q: QBit) -> None:\n", - " X(target=q)\n", - " H(target=q)\n", - "\n", - "\n", - "# Define a main function\n", - "@qfunc\n", - "def main(res: Output[QBit]) -> None:\n", - " allocate(1, res)\n", - " qfn(q=res)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "NXh4E69A5_fC" - }, - "source": [ - "Create a model from it, and synthesize, visualize, and execute it.\n", - "\n", - "Use the General Instructions above to do so.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "id": "UB612BIP5_fE", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "outputId": "6658d861-fccb-4acb-8bf2-1b52dee5b6c4" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/5c3524e1-3515-4fbe-a927-2d47b5270323?version=0.41.1\n" - ] - }, - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "ExecutionJob(id='18cfaed0-47cf-450f-bcaa-47a32eb60116')" - ] - }, - "metadata": {}, - "execution_count": 5 - } - ], - "source": [ - "from classiq import *\n", - "\n", - "# Your code here:\n", - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "show(qprog)\n", - "execute(qprog)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "s3CXWd3V5_fF" - }, - "source": [ - "In Qmod `QBit` is the simplest quantum type, and in this example, `q` is a quantum variable of type `QBit`. Quantum variables abstract away the mapping of quantum objects to qubits in the actual circuit.\n", - "\n", - "See also [Quantum Variables](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/quantum-variables/).\n", - "\n", - "We will discuss other quantum types during the workshop.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "wtQE208K5_fH" - }, - "source": [ - "# The Qmod Workshop - Part 1: Language Fundamentals\n", - "\n", - "Follow exercises 1 through 5 for the first session of the workshop." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "8jM3lrC15_fI" - }, - "source": [ - "## Exercise 1 - Bell Pair\n", - "\n", - "Create a function that takes two single-qubit (`QBit`) quantum arguments and prepares the bell state on them ([Bell state](https://en.wikipedia.org/wiki/Bell_state)) by applying `H` on one variable and then using it as the control of a `CX` function with the second variable as the target.\n", - "Create a main function that uses this function and has two single-qubit outputs, initialize them to the |0> state (using the `allocate` function), and apply your function to them.\n", - "\n", - "See also [Functions](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/functions#syntax)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "id": "fNOTP83I5_fJ", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "outputId": "4c0a03a2-6f67-4c15-957e-261b56f1ad91" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/0b923e49-912a-4b24-8492-844448a3cd0d?version=0.41.1\n" - ] - }, - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "ExecutionJob(id='f2788c4b-0838-4529-b650-577447a674e6')" - ] - }, - "metadata": {}, - "execution_count": 6 - } - ], - "source": [ - "from classiq import *\n", - "# Define a quantum function using the @qfunc decorator\n", - "@qfunc\n", - "def bell(q1: QBit, q2: QBit) -> None:\n", - " H(target=q1)\n", - " CX(control=q1,target=q2)\n", - "\n", - "# Define a main function\n", - "@qfunc\n", - "def main(res1: Output[QBit], res2: Output[QBit]) -> None:\n", - " allocate(1, res1)\n", - " allocate(1, res2)\n", - " bell(q1=res1,q2=res2)\n", - "\n", - "# Your code here:\n", - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "show(qprog)\n", - "execute(qprog)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "AY_kkbyi5_fM" - }, - "source": [ - "Use qubit array subscript (the syntax - _variable_ **[** _index-expression_ **]**) to change the function from subsection 1 to receive a single quantum variable, a qubit array (`QArray`) of size 2.\n", - "Change your main function to declare a single output (also an array of size 2).\n" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "id": "Y-c9r6OT5_fO", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "outputId": "8a2a41c7-bcee-4765-8906-4b7026bf3b71" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/434f96a0-8e06-46dc-b09e-fdc7a9308cb2?version=0.41.1\n" - ] - }, - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "ExecutionJob(id='a42a082b-7714-4d02-84fe-cb1821e98d05')" - ] - }, - "metadata": {}, - "execution_count": 7 - } - ], - "source": [ - "from classiq import *\n", - "\n", - "# Your code here:\n", - "# Define a quantum function using the @qfunc decorator\n", - "@qfunc\n", - "def bell(q: QArray) -> None:\n", - " H(target=q[0])\n", - " CX(control=q[0],target=q[1])\n", - "\n", - "# Define a main function\n", - "@qfunc\n", - "def main(res: Output[QArray]) -> None:\n", - " allocate(2, res)\n", - " bell(res)\n", - "\n", - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "show(qprog)\n", - "execute(qprog)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "SoXeCLcX5_fQ" - }, - "source": [ - "## Exercise 2 - Repeat\n", - "\n", - "Use the built-in `repeat` operator to create your own Hadamard transform function (call it `my_hadamard_transform`). The Hadamard transform function is a function that takes as argument a qubit array of an unspecified size and applies `H` to each of its qubit.\n", - "\n", - "See also [Classical repeat](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/statements/classical-control-flow/#classical-repeat).\n", - "\n", - "Set your main function to have a quantum array output of unspecified size, allocate 10 qubits, and then apply your Hadamard transform function.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "id": "vFrcPTqi5_fS", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "outputId": "48c6573f-ba4d-4c47-b65f-dd2204818e8e" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/cb37c4e0-4286-4bbd-9f70-02abddc58c87?version=0.41.1\n" - ] - }, - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "ExecutionJob(id='614e1320-0f6a-48bc-bf70-302f09a46d85')" - ] - }, - "metadata": {}, - "execution_count": 8 - } - ], - "source": [ - "from classiq import *\n", - "\n", - "# Your code here:\n", - "@qfunc\n", - "def my_hadamard(q: QArray) -> None:\n", - " repeat(count=q.len, iteration=lambda i: H(target=q[i]))\n", - "\n", - "# Define a main function\n", - "@qfunc\n", - "def main(res: Output[QArray]) -> None:\n", - " allocate(10, res)\n", - " my_hadamard(res)\n", - "\n", - "\n", - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "show(qprog)\n", - "execute(qprog)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "98liCUg15_fT" - }, - "source": [ - "### Note: Quantum Variable Capture\n", - "The `repeat` operator invokes a statement block multiple times. The statement block is specified using a Python callable, typically a lambda expression. Inside the block you can refer to variables declared in the outer function scope.\n", - "This concept is called `quantum variable capture`, equivalent to [capture](https://en.wikipedia.org/wiki/Closure_(computer_programming)) in classical languages.\n", - "\n", - "See also [Capturing context variables and parameters](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/operators/#capturing-context-variables-and-parameters)." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "fonXAiHP5_fU" - }, - "source": [ - "### Exercise 3 - Power\n", - "Raising a quantum operation to a power appears in many known algorithms, for examples, in Grover search and Quantum Phase Estimation.\n", - "For most operations, it simply means repeating the same circuit multiple times.\n", - "\n", - "Sometimes, however, power can be simplified, thus saving computational resources.\n", - "The most trivial example is a quantum operation expressed as a single explicit unitary matrix (i.e., all n*n matrix terms are given) - raising the operation can be done by raising the matrix to that power via classical programming.\n", - "\n", - "See also [Power operator](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/statements/quantum-operators/#syntax).\n", - "\n", - "Use the following code to generate a 2-qubit (real) unitary matrix:" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "id": "tD_aBHoU5_fW" - }, - "outputs": [], - "source": [ - "from typing import List\n", - "\n", - "import numpy as np\n", - "\n", - "from classiq import *\n", - "\n", - "rng = np.random.default_rng(seed=0)\n", - "random_matrix = rng.random((4, 4))\n", - "qr_unitary, _ = np.linalg.qr(random_matrix)\n", - "\n", - "unitary_matrix = QConstant(\"unitary_matrix\", List[List[float]], qr_unitary.tolist())" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "yRWVHm1O5_fY" - }, - "source": [ - "In order to reuse some classical value we can define a `QConstant` to store that value.\n", - "\n", - "1. Create a model that applies `unitary_matrix` on a 2 qubit variable.\n", - "2. Create another model that applies `unitary_matrix` raised to power 3 on a 2 qubit variable.\n", - "3. Compare the gate count via the Classiq’s IDE in both cases.\n", - "\n", - "Note - the signature of function `unitary` is:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "id": "bTtPgsj75_fZ" - }, - "outputs": [], - "source": [ - "def unitary(\n", - " elements: CArray[CArray[CReal]],\n", - " target: QArray[QBit],\n", - ") -> None:\n", - " pass" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "id": "6Js8fNbl5_fa", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "outputId": "4d13cc20-3b3f-45b8-93fb-b353ab8cbea0" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/94eb7893-0314-4fe6-b229-f31bf70e2808?version=0.41.1\n" - ] - }, - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "ExecutionJob(id='b1b283d2-0c26-46a4-8577-fa33a79255cf')" - ] - }, - "metadata": {}, - "execution_count": 11 - } - ], - "source": [ - "from classiq import *\n", - "\n", - "# Your code here:\n", - "rng = np.random.default_rng(seed=0)\n", - "random_matrix = rng.random((4, 4))\n", - "qr_unitary, _ = np.linalg.qr(random_matrix)\n", - "\n", - "unitary_matrix = QConstant(\"unitary_matrix\", List[List[float]], qr_unitary.tolist())\n", - "\n", - "\n", - "@qfunc\n", - "def main(q: Output[QArray[QBit]]) -> None:\n", - " allocate(2, q)\n", - " power(3, lambda: unitary(unitary_matrix, q))\n", - "\n", - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "show(qprog)\n", - "execute(qprog)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "P-jP3v9O5_fb" - }, - "source": [ - "## Exercise 4 - User-defined Operators\n", - "Create a function that applies a given single-qubit operation to all qubits in its quantum argument (Call your function `my_apply_to_all`). Such a function is also called an operator, i.e. a function that one of its arguments is another function (its operand).\n", - "\n", - "See also [Operators](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/operators/).\n", - "\n", - "Follow these guidelines:\n", - "1. Your function should declare a quantum argument of type qubit array. It should also declare an argument of a function type with a single qubit argument.\n", - "2. The body should apply the operand to all qubits in the argument.\n", - "\n", - "When you're done, re-implement `my_hadamard_transform` from exercise 2 using this function instead of `repeat`.\n", - "Use the same main function from exercise 2." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "id": "vvMbP91D5_fc", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "outputId": "18fca5c9-3b26-4683-98c7-c17f27de698a" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/b516311f-de20-43bc-828b-981b114cb3d8?version=0.41.1\n" - ] - }, - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "ExecutionJob(id='06c0d754-c529-4c95-b80b-5b45aeb165c0')" - ] - }, - "metadata": {}, - "execution_count": 12 - } - ], - "source": [ - "from classiq import *\n", - "\n", - "# Your code here:\n", - "\n", - "@qfunc\n", - "def my_apply_to_all(operand: QCallable[QBit], q: QArray[QBit]) -> None:\n", - " repeat(q.len, lambda i: operand(q[i]))\n", - "\n", - "@qfunc\n", - "def my_hadamard(q: QArray[QBit]) -> None:\n", - " my_apply_to_all(lambda t: H(t), q)\n", - "\n", - "# Define a main function\n", - "@qfunc\n", - "def main(q: Output[QArray[QBit]]) -> None:\n", - " allocate(10, q)\n", - " my_hadamard(q)\n", - "\n", - "\n", - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "show(qprog)\n", - "execute(qprog)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "gh690ZGT5_fe" - }, - "source": [ - "# Exercise 5 - Quantum Conditionals\n", - "\n", - "### Exercise 5a - Control Operator\n", - "Use the built-in `control` operator to create a function that receives two single qubit variables and uses one of the variables to control an RY gate with a `pi/2` angle acting on the other variable (without using the `CRY` function).\n", - "\n", - "See also [Quantum operators](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/statements/quantum-operators/#syntax).\n" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "id": "00trO6SJ5_ff", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "outputId": "b022f930-40a5-436c-b3af-0a4e4e5d21d7" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/f3c67563-851e-4c53-a672-c64330254cf1?version=0.41.1\n" - ] - }, - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "ExecutionJob(id='be6a11e8-0250-4927-a910-51895da28286')" - ] - }, - "metadata": {}, - "execution_count": 13 - } - ], - "source": [ - "from classiq import *\n", - "\n", - "# Your code here:\n", - "from classiq.qmod.symbolic import pi\n", - "\n", - "\n", - "@qfunc\n", - "def my_controlled_ry(control_bit: QBit, target: QBit) -> None:\n", - " control(control_bit, lambda: RY(pi / 2, target))\n", - "\n", - "\n", - "@qfunc\n", - "def main(control_bit: Output[QBit], target: Output[QBit]) -> None:\n", - " allocate(1, control_bit)\n", - " allocate(1, target)\n", - " my_controlled_ry(control_bit, target)\n", - "\n", - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "show(qprog)\n", - "execute(qprog)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "GJ9y7jlY5_fh" - }, - "source": [ - "### Exercise 5b - Control (\"Quantum If\")\n", - "The `control` operator is the conditional application of some operation, with the condition being that all control qubits are in the state |1>. This notion is generalized in QMOD to other control states, where the condition is specified as a comparison between a quantum numeric variable and a numeric value, similar to a classical `if` statement. Quantum numeric variables are declared with class `QNum`.\n", - "\n", - "See also [Numeric types](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/quantum-types/#syntax).\n", - "\n", - "In QMOD this generalization is available as a native statement - control.\n", - "\n", - "See also [control](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/statements/quantum-operators/).\n", - "\n", - "1. Declare a `QNum` output argument using `Output[QNum]` and name it `x`.\n", - "2. Use the `prepare_int` function to initialize it to `9`. Note that you don't need to specify the `QNum` attributes - size, sign, and fraction digits, as they are inferred at the point of initialization.\n", - "3. Execute the circuit and observe the results.\n", - "4. Declare another output argument of type `QBit` and perform a `control` such that under the condition that `x` is 9, the qubit is flipped. Execute the circuit and observe the results. Repeat for a different condition." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "IohNdRCA5_fi", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "c3d53156-d530-48b8-e31b-80990b06e66d" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/5d49551d-e463-4428-b4b4-e853839c0a74?version=0.41.0\n" - ] - } - ], - "source": [ - "from classiq import *\n", - "\n", - "# Your code here:\n", - "@qfunc\n", - "def main(x: Output[QNum], target: Output[QBit]) -> None:\n", - " prepare_int(9, x)\n", - " allocate(1, target)\n", - " control(x == 9, lambda: X(target))\n", - "\n", - "\n", - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "show(qprog)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.8" - }, - "colab": { - "provenance": [] - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} \ No newline at end of file From 1c205dbf2d4bf5e4e4350ddb3cb558945602652f Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Sat, 15 Jun 2024 04:23:24 +0200 Subject: [PATCH 17/83] Rename Yasir_Mansour_HW1_QClass2024 (1).ipynb to Yasir_Mansour_HW1_QClass2024.ipynb --- ...W1_QClass2024 (1).ipynb => Yasir_Mansour_HW1_QClass2024.ipynb} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename community/QClass_2024/Submissions/HW1/{Yasir_Mansour_HW1_QClass2024 (1).ipynb => Yasir_Mansour_HW1_QClass2024.ipynb} (100%) diff --git a/community/QClass_2024/Submissions/HW1/Yasir_Mansour_HW1_QClass2024 (1).ipynb b/community/QClass_2024/Submissions/HW1/Yasir_Mansour_HW1_QClass2024.ipynb similarity index 100% rename from community/QClass_2024/Submissions/HW1/Yasir_Mansour_HW1_QClass2024 (1).ipynb rename to community/QClass_2024/Submissions/HW1/Yasir_Mansour_HW1_QClass2024.ipynb From 36299a47a63de4d5c3e6fcf655d4be25dcc46212 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Sat, 15 Jun 2024 04:24:45 +0200 Subject: [PATCH 18/83] Add files via upload --- .../HW2/Yasir_Mansour_HW2_QClass2024.pdf | Bin 0 -> 72767 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 community/QClass_2024/Submissions/HW2/Yasir_Mansour_HW2_QClass2024.pdf diff --git a/community/QClass_2024/Submissions/HW2/Yasir_Mansour_HW2_QClass2024.pdf b/community/QClass_2024/Submissions/HW2/Yasir_Mansour_HW2_QClass2024.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a7729a2469e24ca16ee9105bcccbdb8b7bb01d8a GIT binary patch literal 72767 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 Date: Sat, 15 Jun 2024 04:25:32 +0200 Subject: [PATCH 19/83] Delete community/QClass_2024/Submissions/HW2/Yasir_Mansour_HW2_QClass2024.ipynb --- .../HW2/Yasir_Mansour_HW2_QClass2024.ipynb | 990 ------------------ 1 file changed, 990 deletions(-) delete mode 100644 community/QClass_2024/Submissions/HW2/Yasir_Mansour_HW2_QClass2024.ipynb diff --git a/community/QClass_2024/Submissions/HW2/Yasir_Mansour_HW2_QClass2024.ipynb b/community/QClass_2024/Submissions/HW2/Yasir_Mansour_HW2_QClass2024.ipynb deleted file mode 100644 index 783f1705..00000000 --- a/community/QClass_2024/Submissions/HW2/Yasir_Mansour_HW2_QClass2024.ipynb +++ /dev/null @@ -1,990 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "view-in-github", - "colab_type": "text" - }, - "source": [ - "\"Open" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "NbVeWUvUOPPN" - }, - "source": [ - "# The Qmod Workshop - Part 2: Higher-Level Concepts\n", - "\n", - "This is the second part of the Qmod workshop, covering exercises 6 through 10. Make sure to go through Part 1 before continuing with this notebook." - ] - }, - { - "cell_type": "code", - "source": [ - "!pip install classiq" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "collapsed": true, - "id": "CSoLXYc-P-zb", - "outputId": "32e4c151-5e82-4ff8-df53-e9ac710f2507" - }, - "execution_count": 1, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Collecting classiq\n", - " Downloading classiq-0.41.2-py3-none-any.whl (398 kB)\n", - "\u001b[?25l \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.0/398.1 kB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m\r\u001b[2K \u001b[91m━━━━━━━━━━━━━━\u001b[0m\u001b[90m╺\u001b[0m\u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m143.4/398.1 kB\u001b[0m \u001b[31m4.1 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m\r\u001b[2K \u001b[91m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[90m╺\u001b[0m \u001b[32m389.1/398.1 kB\u001b[0m \u001b[31m6.4 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m\r\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m398.1/398.1 kB\u001b[0m \u001b[31m5.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hCollecting ConfigArgParse<2.0.0,>=1.5.3 (from classiq)\n", - " Downloading ConfigArgParse-1.7-py3-none-any.whl (25 kB)\n", - "Collecting Pyomo<6.6,>=6.5 (from classiq)\n", - " Downloading Pyomo-6.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.7 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m10.7/10.7 MB\u001b[0m \u001b[31m28.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hCollecting black<25.0,>=24.0 (from classiq)\n", - " Downloading black-24.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.8 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.8/1.8 MB\u001b[0m \u001b[31m35.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hCollecting httpx<1,>=0.23.0 (from classiq)\n", - " Downloading httpx-0.27.0-py3-none-any.whl (75 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m75.6/75.6 kB\u001b[0m \u001b[31m5.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: keyring<24.0.0,>=23.5.0 in /usr/lib/python3/dist-packages (from classiq) (23.5.0)\n", - "Requirement already satisfied: matplotlib<4.0.0,>=3.4.3 in /usr/local/lib/python3.10/dist-packages (from classiq) (3.7.1)\n", - "Collecting networkx<3.0.0,>=2.5.1 (from classiq)\n", - " Downloading networkx-2.8.8-py3-none-any.whl (2.0 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.0/2.0 MB\u001b[0m \u001b[31m26.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: numexpr<3.0.0,>=2.7.3 in /usr/local/lib/python3.10/dist-packages (from classiq) (2.10.0)\n", - "Requirement already satisfied: numpy<2.0.0,>=1.20.1 in /usr/local/lib/python3.10/dist-packages (from classiq) (1.25.2)\n", - "Collecting packaging<23.0,>=22.0 (from classiq)\n", - " Downloading packaging-22.0-py3-none-any.whl (42 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m42.6/42.6 kB\u001b[0m \u001b[31m1.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: pandas<3.0.0,>=1.4.0 in /usr/local/lib/python3.10/dist-packages (from classiq) (2.0.3)\n", - "Requirement already satisfied: plotly<6.0.0,>=5.7.0 in /usr/local/lib/python3.10/dist-packages (from classiq) (5.15.0)\n", - "Collecting pydantic<2.0.0,>=1.9.1 (from classiq)\n", - " Downloading pydantic-1.10.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.1/3.1 MB\u001b[0m \u001b[31m16.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: scipy<2.0.0,>=1.10.1 in /usr/local/lib/python3.10/dist-packages (from classiq) (1.11.4)\n", - "Collecting sympy<1.11.0,>=1.9.0 (from classiq)\n", - " Downloading sympy-1.10.1-py3-none-any.whl (6.4 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m6.4/6.4 MB\u001b[0m \u001b[31m34.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: tabulate<1,>=0.8.9 in /usr/local/lib/python3.10/dist-packages (from classiq) (0.9.0)\n", - "Requirement already satisfied: click>=8.0.0 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (8.1.7)\n", - "Collecting mypy-extensions>=0.4.3 (from black<25.0,>=24.0->classiq)\n", - " Downloading mypy_extensions-1.0.0-py3-none-any.whl (4.7 kB)\n", - "Collecting pathspec>=0.9.0 (from black<25.0,>=24.0->classiq)\n", - " Downloading pathspec-0.12.1-py3-none-any.whl (31 kB)\n", - "Requirement already satisfied: platformdirs>=2 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (4.2.2)\n", - "Requirement already satisfied: tomli>=1.1.0 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (2.0.1)\n", - "Requirement already satisfied: typing-extensions>=4.0.1 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (4.11.0)\n", - "Requirement already satisfied: anyio in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (3.7.1)\n", - "Requirement already satisfied: certifi in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (2024.2.2)\n", - "Collecting httpcore==1.* (from httpx<1,>=0.23.0->classiq)\n", - " Downloading httpcore-1.0.5-py3-none-any.whl (77 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m77.9/77.9 kB\u001b[0m \u001b[31m8.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: idna in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (3.7)\n", - "Requirement already satisfied: sniffio in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (1.3.1)\n", - "Collecting h11<0.15,>=0.13 (from httpcore==1.*->httpx<1,>=0.23.0->classiq)\n", - " Downloading h11-0.14.0-py3-none-any.whl (58 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m58.3/58.3 kB\u001b[0m \u001b[31m6.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (1.2.1)\n", - "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (0.12.1)\n", - "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (4.51.0)\n", - "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (1.4.5)\n", - "Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (9.4.0)\n", - "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (3.1.2)\n", - "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (2.8.2)\n", - "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas<3.0.0,>=1.4.0->classiq) (2023.4)\n", - "Requirement already satisfied: tzdata>=2022.1 in /usr/local/lib/python3.10/dist-packages (from pandas<3.0.0,>=1.4.0->classiq) (2024.1)\n", - "Requirement already satisfied: tenacity>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from plotly<6.0.0,>=5.7.0->classiq) (8.3.0)\n", - "Collecting ply (from Pyomo<6.6,>=6.5->classiq)\n", - " Downloading ply-3.11-py2.py3-none-any.whl (49 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m49.6/49.6 kB\u001b[0m \u001b[31m5.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: mpmath>=0.19 in /usr/local/lib/python3.10/dist-packages (from sympy<1.11.0,>=1.9.0->classiq) (1.3.0)\n", - "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.7->matplotlib<4.0.0,>=3.4.3->classiq) (1.16.0)\n", - "Requirement already satisfied: exceptiongroup in /usr/local/lib/python3.10/dist-packages (from anyio->httpx<1,>=0.23.0->classiq) (1.2.1)\n", - "Installing collected packages: ply, sympy, Pyomo, pydantic, pathspec, packaging, networkx, mypy-extensions, h11, ConfigArgParse, httpcore, black, httpx, classiq\n", - " Attempting uninstall: sympy\n", - " Found existing installation: sympy 1.12\n", - " Uninstalling sympy-1.12:\n", - " Successfully uninstalled sympy-1.12\n", - " Attempting uninstall: pydantic\n", - " Found existing installation: pydantic 2.7.1\n", - " Uninstalling pydantic-2.7.1:\n", - " Successfully uninstalled pydantic-2.7.1\n", - " Attempting uninstall: packaging\n", - " Found existing installation: packaging 24.0\n", - " Uninstalling packaging-24.0:\n", - " Successfully uninstalled packaging-24.0\n", - " Attempting uninstall: networkx\n", - " Found existing installation: networkx 3.3\n", - " Uninstalling networkx-3.3:\n", - " Successfully uninstalled networkx-3.3\n", - "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", - "torch 2.3.0+cu121 requires nvidia-cublas-cu12==12.1.3.1; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cuda-cupti-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cuda-nvrtc-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cuda-runtime-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cudnn-cu12==8.9.2.26; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cufft-cu12==11.0.2.54; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-curand-cu12==10.3.2.106; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cusolver-cu12==11.4.5.107; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cusparse-cu12==12.1.0.106; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-nccl-cu12==2.20.5; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-nvtx-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\u001b[0m\u001b[31m\n", - "\u001b[0mSuccessfully installed ConfigArgParse-1.7 Pyomo-6.5.0 black-24.4.2 classiq-0.41.2 h11-0.14.0 httpcore-1.0.5 httpx-0.27.0 mypy-extensions-1.0.0 networkx-2.8.8 packaging-22.0 pathspec-0.12.1 ply-3.11 pydantic-1.10.15 sympy-1.10.1\n" - ] - } - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "id": "yLmI64uHOPPX" - }, - "outputs": [], - "source": [ - "from classiq import *" - ] - }, - { - "cell_type": "code", - "source": [ - "import classiq\n", - "classiq.authenticate()" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "id": "Js5S3AMtP6LJ", - "outputId": "d3f334a9-6dcf-4e2a-f547-b68342d126ea" - }, - "execution_count": 3, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Your user code: PXGV-WPZJ\n", - "If a browser doesn't automatically open, please visit this URL from any trusted device: https://auth.classiq.io/activate?user_code=PXGV-WPZJ\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "DLFwpFN8OPPd" - }, - "source": [ - "### Exercise 6 - Exponentiation and Pauli Operators\n", - "\n", - "The Qmod language supports different classical types: scalars, arrays, and structs. Structs are objects with member variables, or fields.\n", - "\n", - "See also [Classical Types](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/classical-types/#structs).\n", - "\n", - "The builtin struct type `PauliTerm` is defined as follows:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "id": "EEjNNhY3OPPe" - }, - "outputs": [], - "source": [ - "@struct\n", - "class PauliTerm:\n", - " pauli: CArray[Pauli]\n", - " coefficient: CReal" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "oOlb_yyJOPPg" - }, - "source": [ - "Note that `Pauli` is an enum for all the Pauli matrices (I, X, Y, Z).\n", - "\n", - "Pauli based hamiltonian can be represented as a list of `PauliTerm`s. A Pauli operator defined this way is the argument to a hamiltonian evolution functions.\n", - "\n", - "In this exercise we will use the Suzuki-Trotter function to find the evolution of `H=0.5XZXX + 0.25YIZI + 0.3 XIZY` (captured as a literal value for the pauli-operator), with the evolution coefficient being 3, the order being 2, and use 4 repetitions.\n", - "\n", - "The declaration of the `suzuki_trotter` function is:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "uO1d4ba3OPPi" - }, - "outputs": [], - "source": [ - "@qfunc(external=True)\n", - "def suzuki_trotter(\n", - " pauli_operator: CArray[PauliTerm],\n", - " evolution_coefficient: CReal,\n", - " order: CInt,\n", - " repetitions: CInt,\n", - " qbv: QArray[QBit],\n", - ") -> None:\n", - " pass" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "jGcQahGvOPPk" - }, - "source": [ - "Fill in the missing parts of the following code in order to complete this exercise:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "-ZPy2HjIOPPl", - "outputId": "fc91afc7-7cfc-4efe-b1d4-c3da484dfaeb" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/695d17a9-edaa-4811-8aea-04f575daf238?version=0.41.2\n" - ] - } - ], - "source": [ - "from classiq import *\n", - "\n", - "\n", - "@qfunc\n", - "def main(q: Output[QArray[QBit]]) -> None:\n", - " allocate(4, q)\n", - " suzuki_trotter(\n", - " [\n", - " PauliTerm(pauli=[Pauli.X, Pauli.Z, Pauli.X, Pauli.X], coefficient=0.5),\n", - " PauliTerm(pauli=[Pauli.Y, Pauli.I, Pauli.Z, Pauli.I], coefficient=0.25),\n", - " PauliTerm(pauli=[Pauli.X, Pauli.I, Pauli.Z, Pauli.Y], coefficient=0.3),\n", - " ],\n", - " #[0.5XZXX + 0.25YIZI + 0.3 XIZY],\n", - " evolution_coefficient=3,\n", - " repetitions=4,\n", - " order=2,\n", - " qbv=q,\n", - " )\n", - "\n", - "\n", - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "show(qprog)" - ] - }, - { - "cell_type": "markdown", - "source": [], - "metadata": { - "id": "a2tiByHPVxIm" - } - }, - { - "cell_type": "markdown", - "metadata": { - "id": "YVauJN06OPPr" - }, - "source": [ - "### Exercise 7 - Basic Arithmetics\n", - "\n", - "#### Exercise 7a\n", - "In this exercise we will use quantum numeric variables and calculate expressions over them.\n", - "\n", - "See details on the syntax of numeric types under [Quantum types](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/quantum-types/#syntax).\n", - "See more on quantum expressions under [Numeric assignment](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/statements/numeric-assignment/)\n", - "\n", - "Create the following quantum programs:\n", - "1. Initialize variables `x=2`, `y=7` and computes `res = x + y`.\n", - "2. Initialize variables `x=2`, `y=7` and computes `res = x * y`.\n", - "3. Initialize variables `x=2`, `y=7`, `z=1` and computes `res = x * y - z`.\n", - "\n", - "Guidance:\n", - "* Use the operator `|=` to perform out-of-place assignment of arithmetic expression.\n", - "* To initialize the variables, use the function `prepare_int`.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "2Ad42tEjOPPt", - "outputId": "0e3c5195-3914-4296-b400-067df17efb67" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/f6ab280e-a2d2-4b4f-9fe6-6063ec883f5c?version=0.41.2\n" - ] - } - ], - "source": [ - "from classiq import *\n", - "\n", - "# Your code here:\n", - "@qfunc\n", - "def main(res1: Output[QNum], res2: Output[QNum], res3: Output[QNum], x: Output[QNum], y: Output[QNum], z: Output[QNum]):\n", - " prepare_int(2, x)\n", - " prepare_int(7, y)\n", - " prepare_int(1, z)\n", - " res1 |= x + y\n", - " res2 |= x * y\n", - " res3 |= x * y - z\n", - "\n", - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "show(qprog)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "oD9FFw0hOPPv" - }, - "source": [ - "#### Exercise 7b\n", - "Declare `x` to be a 2-qubit variable and `y` to be 3-qubit variable.\n", - "\n", - "We will perform an addition of two superposition states: `x` is an equal superposition of `0` and `2`, and `y` is an equal superposition of `1`, `2`, `3`, and `6`.\n", - "\n", - "1. Use `prepare_state` to initialize `x` and `y`. Note that `prepare_state` works with probabilities, not amplitudes.\n", - " The declaration of the `prepare_state` function is:\n", - " ```\n", - " @qfunc(external=True)\n", - " def prepare_state(\n", - " probabilities: CArray[CReal],\n", - " bound: CReal,\n", - " out: Output[QArray[QBit]],\n", - " ) -> None:\n", - " pass\n", - " ```\n", - " (Set the bound to 0 in your code)\n", - "2. Compute `res = x + y`. Execute the resulting circuit. What did you get?" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "J5aQnWHEOPPx", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "ea1de78b-3848-4255-d430-b1ae0bcc7cd2" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/6ee76891-980f-4b54-8403-44cb5e8b590c?version=0.41.2\n" - ] - } - ], - "source": [ - "from classiq import *\n", - "\n", - "# Your code here:\n", - "@qfunc\n", - "def main(res: Output[QNum], x: Output[QNum], y: Output[QNum]):\n", - " prepare_state([0.5, 0, 0.5, 0], bound=0.01, out=x)\n", - " prepare_state([0, 0.25, 0.25, 0.25, 0, 0, 0.25, 0], bound=0.01, out=y)\n", - " res |= x + y\n", - "\n", - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "show(qprog)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "QguPlrPLOPPz" - }, - "source": [ - "### Exercise 8 - Within-Apply\n", - "\n", - "The within-apply statement applies the pattern `U_dagger V U` that appears frequently in quantum computing.\n", - "It allows you to compute some function `V` within the context of another function `U`, and afterward uncompute `U` in order to release auxiliary qubits storing intermediate results.\n", - "\n", - "See also [Within Apply](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/statements/within-apply/).\n", - "\n", - "#### Exercise 8a\n", - "\n", - "In this exercise, we will use within-apply to compute an arithmetic expression in steps.\n", - "\n", - "Use the `within_apply` operation to calculate `res = x + y + z` from a two-variable addition building block with the following steps:\n", - "1. Add `x` and `y`\n", - "2. Add the result to `z`\n", - "3. Uncompute the result of the first operation\n", - "\n", - "For simplicity, initialize the registers to simple integers: `x=3`, `y=5`, `z=2`.\n", - "\n", - "Hints:\n", - "\n", - "* Use a temporary variable.\n", - "* Wrap the arithmetic operation in a function.\n", - "\n", - "Execute the circuit and make sure you obtain the expected result." - ] - }, - { - "cell_type": "code", - "source": [], - "metadata": { - "id": "kvEu55w7Ssac" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "gOMBLIf7OPP1", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "ee6530e4-3fa1-4d46-d151-9862ee961b5e" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/b9d46036-f719-4772-8e97-7a41269e10c1?version=0.41.2\n" - ] - } - ], - "source": [ - "from classiq import *\n", - "\n", - "# Your code here:\n", - "@qfunc\n", - "def q_add(res: Output[QNum], a:QNum, b:QNum) -> None:\n", - " res |= a + b\n", - "\n", - "@qfunc\n", - "def main(res: Output[QNum], x: Output[QNum],\n", - " y: Output[QNum], z: Output[QNum]) -> None:\n", - " prepare_int(3, x)\n", - " prepare_int(5, y)\n", - " prepare_int(2, z)\n", - " aux = QNum('aux')\n", - " within_apply(compute = lambda: q_add(aux, x, y),\n", - " action = lambda: q_add(res, aux, z))\n", - "\n", - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "show(qprog)\n", - "#13 qbits" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "umMhnAelOPP2" - }, - "source": [ - "#### Exercise 8b\n", - "\n", - "Why should we use `within-apply` and not just write three concatenated functions?\n", - "To understand the motivation, we will create another arithmetic circuit.\n", - "This time, however, we will also set Classiq’s synthesis engine to optimize on the circuit’s number of qubits, i.e., its width.\n", - "\n", - "Setting constraints can be done via the `set_constraints` operation - see [here](https://docs.classiq.io/latest/user-guide/platform/synthesis/constraints/).\n", - "\n", - "Perform the operation `res = w + x + y + z`, where w is initialized to 4 and the rest as before:\n", - "\n", - "1. Add `x` and `y` (as part of the `within_apply` operation)\n", - "2. Add the result to `z` (as part of the within_apply operation)\n", - "3. Uncompute the result of the first operation (as part of the `within_apply` operation)\n", - "4. Add the result of the second operation to `w`. There’s no need to perform another uncomputation, as this brings our calculation to an end.\n", - "\n", - "Create the model, optimize on the circuit’s width, and run the circuit. Can you identify where qubits have been released and reused?" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "ED1iDS1aOPP5", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "2260c2b1-d176-4c26-a83f-e0be9d1b6804" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/76b99051-ff09-4588-b522-435cd54c7223?version=0.41.2\n" - ] - } - ], - "source": [ - "from classiq import *\n", - "\n", - "# Your code here:\n", - "@qfunc\n", - "def q_add(res: Output[QNum], a:QNum, b:QNum) -> None:\n", - " res |= a + b\n", - "\n", - "@qfunc\n", - "def main(res: Output[QNum], x: Output[QNum],\n", - " y: Output[QNum], z: Output[QNum], w: Output[QNum]) -> None:\n", - " prepare_int(3, x)\n", - " prepare_int(5, y)\n", - " prepare_int(2, z)\n", - " prepare_int(4, w)\n", - " aux1 = QNum('aux1')\n", - " aux2 = QNum('aux2')\n", - " within_apply(compute = lambda: q_add(aux1, x, y),\n", - " action = lambda: q_add(aux2, aux1, z),)\n", - " res |= aux2 + w\n", - "\n", - "\n", - "\n", - "qmod = create_model(main)\n", - "qmod = set_constraints(qmod,\n", - " Constraints(optimization_parameter='width'))\n", - "qprog = synthesize(qmod)\n", - "show(qprog)\n", - "#16 qbits" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "pIBHrEOxOPP6" - }, - "source": [ - "#### Bonus: Use a Single Arithmetic Expression\n", - "\n", - "What happens when we don't manually decompose this expression?\n", - "\n", - "Use Classiq’s arithmetic engine to calculate `res |= x + y + z + w` and optimize for width.\n", - "Look at the resulting quantum program - can you identify the computation and uncomputation blocks? What else did you notice?" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "ep-Efm_oOPP8", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "258d0b91-cb7a-4a25-b80d-0492e6557fe1" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/1b073d18-c8d5-4f19-8c2d-7e2f064a18bd?version=0.41.2\n" - ] - } - ], - "source": [ - "from classiq import *\n", - "\n", - "# Your code here:\n", - "@qfunc\n", - "def q_add(res: Output[QNum], a:QNum, b:QNum) -> None:\n", - " res |= a + b\n", - "\n", - "@qfunc\n", - "def main(res: Output[QNum], x: Output[QNum],\n", - " y: Output[QNum], z: Output[QNum], w: Output[QNum]) -> None:\n", - " prepare_int(3, x)\n", - " prepare_int(5, y)\n", - " prepare_int(2, z)\n", - " prepare_int(4, w)\n", - " res |= x + y + z + w\n", - "\n", - "qmod = create_model(main)\n", - "qmod = set_constraints(qmod,\n", - " Constraints(optimization_parameter='width'))\n", - "qprog = synthesize(qmod)\n", - "show(qprog)\n", - "#15 qbits" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "ZV9OGqqROPP-" - }, - "source": [ - "### Exercise 9 - In-place Arithmetics\n", - "\n", - "For the following exercise we will use numeric quantum variables that represent fixed-point reals.\n", - "\n", - "Arithmetic expressions can be calculated in-place into a target variable, without allocating new qubits to store the result. This is done using the in-place-xor operator.\n", - "\n", - "See also [Numeric assignment](https://docs.classiq.io/latest/user-guide/platform/qmod/language-reference/statements/numeric-assignment/#semantics).\n", - "\n", - "In-place assignment is often used to nest arithmetic expressions under quantum operators. Note that out-of-place assignment requires its left-value variable to be un-initialized, and therefore cannot be used under an operator if the variable is declared outside its scope. Applying operators to arithmetic expressions is required in many algorithms. One example is the piecewise evaluation of mathematical functions - calculating different expressions over `x` depending on the subdomain where `x` falls.\n", - "\n", - "For this exercise, replace the missing parts in the code snippet below to evaluate the result of:\n", - "\n", - "$$\n", - "f(x) = \\begin{cases}\n", - " 2x + 1 & \\text{ if } 0 \\leq x < 0.5 \\\\\n", - " x + 0.5 & \\text{ if } 0.5 \\leq x < 1\n", - " \\end{cases}\n", - "$$\n", - "\n", - "Notes:\n", - "- We cannot use `x` directly as the control variable in a `constrol` operator, because it also occurs in the nested scope. to determine if `x` is in the lower or higher half of the domain we duplicate the most significant bit onto a separate variable called `label`.\n", - "- In Python assignment operators cannot be used in lambda expressions, so the computation of the function needs to be factored out to a named Python function (but not necessarily a Qmod function).\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "P1AsWxksOPQA", - "outputId": "c56c759d-fb58-45d7-b8b6-fc801c611f11", - "colab": { - "base_uri": "https://localhost:8080/" - } - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/d3fb232d-2ee5-4824-a49d-c7febcc4ff91?version=0.41.2\n" - ] - } - ], - "source": [ - "\n", - "from classiq import *\n", - "\n", - "\n", - "def linear_func(a: float, b: float, x: QNum, res: QNum) -> None:\n", - " res ^= a * x + b\n", - "\n", - "\n", - "@qfunc\n", - "def dup_msb(qba: QArray[QBit], msb: QBit) -> None:\n", - " CX(qba[qba.len - 1], msb)\n", - "\n", - "\n", - "@qfunc\n", - "def main(x: Output[QNum[3, False, 3]], res: Output[QNum[5, False, 3]]) -> None:\n", - " allocate(5, res)\n", - " allocate(3, x)\n", - " hadamard_transform(x)\n", - "\n", - " label = QArray(\"label\")\n", - " allocate(1, label)\n", - "\n", - " dup_msb(x, label)\n", - " control(label, lambda: linear_func(1.0, 0.5, x, res)) # 0.5 <= x < 1.0\n", - " X(label)\n", - " control(label, lambda: linear_func(2.0, 1.0, x, res)) # 0.0 <= x < 0.5\n", - "\n", - "\n", - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "show(qprog)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "OOvAn02QOPQC" - }, - "source": [ - "### Exercise 10 - State-preparation Algorithm using Quantum-if\n", - "\n", - "#### Binding\n", - "The `bind` operation allows to convert smoothly between different quantum types and split or slice bits when necessary. Here’s an example:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "id": "JCX6UMqROPQD", - "outputId": "6d35d8f5-4341-4560-b708-d70d443dab84", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - } - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/2e528279-8038-4233-b2e7-f4844d8dcaa3?version=0.41.2\n" - ] - } - ], - "source": [ - "from classiq import *\n", - "\n", - "\n", - "\n", - "from classiq import *\n", - "from math import pi\n", - "\n", - "\n", - "@qfunc\n", - "def main(res: Output[QArray[QBit]]) -> None:\n", - " x: QArray[QBit] = QArray(\"x\")\n", - " allocate(3, x)\n", - " hadamard_transform(x)\n", - "\n", - " lsb = QBit(\"lsb\")\n", - " msb = QNum(\"msb\", 2, False, 0)\n", - " bind(x, [lsb, msb])\n", - "\n", - " control(msb == 1, lambda: RY(pi / 3, lsb))\n", - " # msb==1 <==> bit1 bit2 == 01 (binary of decimal 1)\n", - "\n", - " bind([lsb, msb], res)\n", - "\n", - "model = create_model(main)\n", - "qprog = synthesize(model)\n", - "show(qprog)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "fc5-bUyKOPQF" - }, - "source": [ - "The first `bind` operation splits the 3-qubit register `x` into the 2-qubit and single-qubit registers `lsb` and `msb`, respectively.\n", - "\n", - "After the `bind` operation:\n", - "1. The registers `lsb` and `msb` can be operated on as separated registers.\n", - "2. The register`x` is consumed and can no longer be used.\n", - "\n", - "The second `bind` operation concatenates the registers to the output register `res`.\n", - "\n", - "For this exercise, fill in the missing code parts in the above snippet and use the `control` statement to manually generate the following lovely 3-qubit probability distribution: `[1/8, 1/8, 1/8, -sqrt(3)/16, 1/8 + sqrt(3)/16, 1/8, 1/8, 1/8, 1/8]`.\n", - "\n", - "The following series of gates generate it:\n", - "\n", - "Perform the Hadamard transform on all three qubits.\n", - "\n", - "Apply a rotation on the LSB (least-significant bit) conditioned by the MSB being |0> and the second to last MSB being |1>. How would you write this condition using a QNum?\n", - "\n", - "The following series of gates generate it:\n", - "1. Perform the Hadamard transform on all three qubits.\n", - "2. Apply a `pi/3` rotation on the LSB (least-significant bit) conditioned by the MSB being |0> and the second to last MSB being |1>. How would you write this condition using a QNum?\n", - "\n", - "If you want to validate your results without looking at the full solution, compare them to running using Classiq’s built-in `prepare_state` function.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": { - "id": "nSjVMfP8OPQG", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "outputId": "5ca3382b-fcf8-4901-bf77-72eb916118a0" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/63674ff7-ef0f-4d21-8ffa-60b078c5de78?version=0.41.2\n" - ] - } - ], - "source": [ - "#version 1 with msb, lsb, H, RY\n", - "from classiq import *\n", - "from classiq.qmod.symbolic import sqrt\n", - "from math import pi\n", - "\n", - "prob_list= [\n", - " 1 / 8,\n", - " 1 / 8,\n", - " 1 / 8 - sqrt(3) / 16,\n", - " 1 / 8 + sqrt(3) / 16,\n", - " 1 / 8,\n", - " 1 / 8,\n", - " 1 / 8,\n", - " 1 / 8,\n", - " ]\n", - "@qfunc\n", - "def pre_prepared_state(q: QArray[QBit]) -> None:\n", - " prepare_state(\n", - " [\n", - " 1 / 8,\n", - " 1 / 8,\n", - " 1 / 8 - sqrt(3) / 16,\n", - " 1 / 8 + sqrt(3) / 16,\n", - " 1 / 8,\n", - " 1 / 8,\n", - " 1 / 8,\n", - " 1 / 8,\n", - " ],\n", - " 0.0,\n", - " q,\n", - " )\n", - "\n", - "@qfunc\n", - "def main(res: Output[QArray[QBit]]) -> None:\n", - " x: QArray[QBit] = QArray(\"x\")\n", - " allocate(3, x)\n", - " hadamard_transform(x)\n", - "\n", - " lsb = QBit(\"lsb\")\n", - " msb = QNum(\"msb\", 2, False, 0)\n", - " bind(x, [lsb, msb])\n", - "\n", - " control(msb == 1, lambda: RY(pi / 3, lsb))\n", - " # msb==1 <==> bit1 bit2 == 01 (binary of decimal 1)\n", - " bind([lsb, msb], res)\n", - "\n", - " #prepare_state(probabilities=prob_list, bound=0.0, out=res)\n", - "\n", - "model = create_model(main)\n", - "qprog = synthesize(model)\n", - "show(qprog)\n", - "\n", - "# Your code here:" - ] - }, - { - "cell_type": "code", - "source": [ - "#version 2 with prepare_state\n", - "from classiq import *\n", - "from classiq.qmod.symbolic import sqrt\n", - "from math import pi\n", - "\n", - "prob_list= [\n", - " 1 / 8,\n", - " 1 / 8,\n", - " 1 / 8 - sqrt(3) / 16,\n", - " 1 / 8 + sqrt(3) / 16,\n", - " 1 / 8,\n", - " 1 / 8,\n", - " 1 / 8,\n", - " 1 / 8,\n", - " ]\n", - "@qfunc\n", - "def pre_prepared_state(q: Output[QArray[QBit]]) -> None:\n", - " prepare_state(\n", - " [\n", - " 1 / 8,\n", - " 1 / 8,\n", - " 1 / 8 - sqrt(3) / 16,\n", - " 1 / 8 + sqrt(3) / 16,\n", - " 1 / 8,\n", - " 1 / 8,\n", - " 1 / 8,\n", - " 1 / 8,\n", - " ],\n", - " 0.0,\n", - " q,\n", - " )\n", - "\n", - "@qfunc\n", - "def main(res: Output[QArray[QBit]]) -> None:\n", - " prepare_state(probabilities=prob_list, bound=0.0, out=res)\n", - "\n", - "model = create_model(main)\n", - "qprog = synthesize(model)\n", - "show(qprog)\n", - "\n", - "# Your code here:" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "id": "mp0cnm12XKjo", - "outputId": "c97473fc-1b10-4bc0-b9ec-2db111726a00" - }, - "execution_count": 29, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/ea88176e-2348-4b64-b56e-4ef2921eeb51?version=0.41.2\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "source": [], - "metadata": { - "id": "-TDAFwWbXVeT" - } - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.8" - }, - "colab": { - "provenance": [], - "include_colab_link": true - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} \ No newline at end of file From ed061dbff201a46a2fc32bc619a2933af6c74210 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Sat, 15 Jun 2024 04:26:11 +0200 Subject: [PATCH 20/83] Add files via upload --- .../Submissions/HW3/Yasir_Mansour_HW3_VQE.pdf | Bin 0 -> 55014 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 community/QClass_2024/Submissions/HW3/Yasir_Mansour_HW3_VQE.pdf diff --git a/community/QClass_2024/Submissions/HW3/Yasir_Mansour_HW3_VQE.pdf b/community/QClass_2024/Submissions/HW3/Yasir_Mansour_HW3_VQE.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2d668382f97c1dfbf5b27f62d7d47a8fa40918a6 GIT binary patch literal 55014 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 literal 0 HcmV?d00001 From c04870a171b292ea66992be4fcc16b2263ad8650 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Sat, 15 Jun 2024 04:26:46 +0200 Subject: [PATCH 21/83] Delete community/QClass_2024/Submissions/HW3/Yasir_Mansour_HW3_VQE.ipynb --- .../HW3/Yasir_Mansour_HW3_VQE.ipynb | 576 ------------------ 1 file changed, 576 deletions(-) delete mode 100644 community/QClass_2024/Submissions/HW3/Yasir_Mansour_HW3_VQE.ipynb diff --git a/community/QClass_2024/Submissions/HW3/Yasir_Mansour_HW3_VQE.ipynb b/community/QClass_2024/Submissions/HW3/Yasir_Mansour_HW3_VQE.ipynb deleted file mode 100644 index 3c3f1a50..00000000 --- a/community/QClass_2024/Submissions/HW3/Yasir_Mansour_HW3_VQE.ipynb +++ /dev/null @@ -1,576 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "view-in-github", - "colab_type": "text" - }, - "source": [ - "\"Open" - ] - }, - { - "cell_type": "markdown", - "id": "fc72d98f-8993-4bd4-a545-23d122f3df71", - "metadata": { - "id": "fc72d98f-8993-4bd4-a545-23d122f3df71" - }, - "source": [ - "# H₂ Molecule Homework Assignment\n", - "### Quantum Software Development Journey: From Theory to Application with Classiq - Part 3\n", - "\n", - "- Similarly to what we have done in class, in this exercise we will implement the VQE on H2 molecule.\n", - "- This time instead of using the built-in methods and functions (such as `Molecule` and `MoleculeProblem`) to difne and solve the problem, you will be provided with a two qubits Hamiltonian." - ] - }, - { - "cell_type": "markdown", - "id": "56eda6d8-76c4-4862-b914-0c4598d67274", - "metadata": { - "id": "56eda6d8-76c4-4862-b914-0c4598d67274" - }, - "source": [ - "## Submission\n", - "- Submit the completed Jupyter notebook and report via GitHub. Ensure all files are correctly named and organized.\n", - "- Use the Typeform link provided in the submission folder to confirm your submission.\n", - "\n", - "## Additional Resources\n", - "- [Classiq Documentation](https://docs.classiq.io/latest/)\n", - "- The notebook from live session #3\n", - "\n", - "## Important Dates\n", - "- **Assignment Release:** 22.5.2024\n", - "- **Submission Deadline:** 3.6.2024 (7 A.M GMT+3)\n", - "\n", - "---\n", - "\n", - "Happy coding and good luck!" - ] - }, - { - "cell_type": "markdown", - "id": "d41e969d-f6a7-4ff7-9660-19ce6c97ba6b", - "metadata": { - "id": "d41e969d-f6a7-4ff7-9660-19ce6c97ba6b" - }, - "source": [ - "### Part 1" - ] - }, - { - "cell_type": "markdown", - "id": "f710d6f4-d40b-42d5-b524-c6acb8059fe2", - "metadata": { - "id": "f710d6f4-d40b-42d5-b524-c6acb8059fe2" - }, - "source": [ - "Given the following Hamiltonian:" - ] - }, - { - "cell_type": "markdown", - "id": "6ba8a6f1-3259-4492-a1ca-3abde7530cd4", - "metadata": { - "id": "6ba8a6f1-3259-4492-a1ca-3abde7530cd4" - }, - "source": [ - "$$\n", - "\\hat{H} = -1.0523 \\cdot (I \\otimes I) + 0.3979 \\cdot (I \\otimes Z) - 0.3979 \\cdot (Z \\otimes I) - 0.0112 \\cdot (Z \\otimes Z) + 0.1809 \\cdot (X \\otimes X)\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "id": "736d275c-9a5a-4c08-b891-3078430dc6c1", - "metadata": { - "id": "736d275c-9a5a-4c08-b891-3078430dc6c1" - }, - "source": [ - "Complete the following code" - ] - }, - { - "cell_type": "code", - "source": [ - "!pip install classiq" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "collapsed": true, - "id": "DQOxbZxjrN5r", - "outputId": "7ffed65a-717f-4f7a-d969-d999a1fa6611" - }, - "id": "DQOxbZxjrN5r", - "execution_count": 1, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Collecting classiq\n", - " Downloading classiq-0.42.0-py3-none-any.whl (401 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m401.5/401.5 kB\u001b[0m \u001b[31m2.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hCollecting ConfigArgParse<2.0.0,>=1.5.3 (from classiq)\n", - " Downloading ConfigArgParse-1.7-py3-none-any.whl (25 kB)\n", - "Collecting Pyomo<6.6,>=6.5 (from classiq)\n", - " Downloading Pyomo-6.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.7 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m10.7/10.7 MB\u001b[0m \u001b[31m24.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hCollecting black<25.0,>=24.0 (from classiq)\n", - " Downloading black-24.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.8 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.8/1.8 MB\u001b[0m \u001b[31m14.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hCollecting httpx<1,>=0.23.0 (from classiq)\n", - " Downloading httpx-0.27.0-py3-none-any.whl (75 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m75.6/75.6 kB\u001b[0m \u001b[31m3.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: keyring<24.0.0,>=23.5.0 in /usr/lib/python3/dist-packages (from classiq) (23.5.0)\n", - "Requirement already satisfied: matplotlib<4.0.0,>=3.4.3 in /usr/local/lib/python3.10/dist-packages (from classiq) (3.7.1)\n", - "Collecting networkx<3.0.0,>=2.5.1 (from classiq)\n", - " Downloading networkx-2.8.8-py3-none-any.whl (2.0 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.0/2.0 MB\u001b[0m \u001b[31m51.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: numexpr<3.0.0,>=2.7.3 in /usr/local/lib/python3.10/dist-packages (from classiq) (2.10.0)\n", - "Requirement already satisfied: numpy<2.0.0,>=1.20.1 in /usr/local/lib/python3.10/dist-packages (from classiq) (1.25.2)\n", - "Collecting packaging<23.0,>=22.0 (from classiq)\n", - " Downloading packaging-22.0-py3-none-any.whl (42 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m42.6/42.6 kB\u001b[0m \u001b[31m2.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: pandas<3.0.0,>=1.4.0 in /usr/local/lib/python3.10/dist-packages (from classiq) (2.0.3)\n", - "Requirement already satisfied: plotly<6.0.0,>=5.7.0 in /usr/local/lib/python3.10/dist-packages (from classiq) (5.15.0)\n", - "Collecting pydantic<2.0.0,>=1.9.1 (from classiq)\n", - " Downloading pydantic-1.10.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.1/3.1 MB\u001b[0m \u001b[31m36.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: scipy<2.0.0,>=1.10.1 in /usr/local/lib/python3.10/dist-packages (from classiq) (1.11.4)\n", - "Collecting sympy<1.11.0,>=1.9.0 (from classiq)\n", - " Downloading sympy-1.10.1-py3-none-any.whl (6.4 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m6.4/6.4 MB\u001b[0m \u001b[31m51.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: tabulate<1,>=0.8.9 in /usr/local/lib/python3.10/dist-packages (from classiq) (0.9.0)\n", - "Requirement already satisfied: click>=8.0.0 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (8.1.7)\n", - "Collecting mypy-extensions>=0.4.3 (from black<25.0,>=24.0->classiq)\n", - " Downloading mypy_extensions-1.0.0-py3-none-any.whl (4.7 kB)\n", - "Collecting pathspec>=0.9.0 (from black<25.0,>=24.0->classiq)\n", - " Downloading pathspec-0.12.1-py3-none-any.whl (31 kB)\n", - "Requirement already satisfied: platformdirs>=2 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (4.2.2)\n", - "Requirement already satisfied: tomli>=1.1.0 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (2.0.1)\n", - "Requirement already satisfied: typing-extensions>=4.0.1 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (4.11.0)\n", - "Requirement already satisfied: anyio in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (3.7.1)\n", - "Requirement already satisfied: certifi in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (2024.2.2)\n", - "Collecting httpcore==1.* (from httpx<1,>=0.23.0->classiq)\n", - " Downloading httpcore-1.0.5-py3-none-any.whl (77 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m77.9/77.9 kB\u001b[0m \u001b[31m1.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: idna in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (3.7)\n", - "Requirement already satisfied: sniffio in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (1.3.1)\n", - "Collecting h11<0.15,>=0.13 (from httpcore==1.*->httpx<1,>=0.23.0->classiq)\n", - " Downloading h11-0.14.0-py3-none-any.whl (58 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m58.3/58.3 kB\u001b[0m \u001b[31m4.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (1.2.1)\n", - "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (0.12.1)\n", - "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (4.51.0)\n", - "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (1.4.5)\n", - "Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (9.4.0)\n", - "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (3.1.2)\n", - "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (2.8.2)\n", - "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas<3.0.0,>=1.4.0->classiq) (2023.4)\n", - "Requirement already satisfied: tzdata>=2022.1 in /usr/local/lib/python3.10/dist-packages (from pandas<3.0.0,>=1.4.0->classiq) (2024.1)\n", - "Requirement already satisfied: tenacity>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from plotly<6.0.0,>=5.7.0->classiq) (8.3.0)\n", - "Collecting ply (from Pyomo<6.6,>=6.5->classiq)\n", - " Downloading ply-3.11-py2.py3-none-any.whl (49 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m49.6/49.6 kB\u001b[0m \u001b[31m4.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: mpmath>=0.19 in /usr/local/lib/python3.10/dist-packages (from sympy<1.11.0,>=1.9.0->classiq) (1.3.0)\n", - "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.7->matplotlib<4.0.0,>=3.4.3->classiq) (1.16.0)\n", - "Requirement already satisfied: exceptiongroup in /usr/local/lib/python3.10/dist-packages (from anyio->httpx<1,>=0.23.0->classiq) (1.2.1)\n", - "Installing collected packages: ply, sympy, Pyomo, pydantic, pathspec, packaging, networkx, mypy-extensions, h11, ConfigArgParse, httpcore, black, httpx, classiq\n", - " Attempting uninstall: sympy\n", - " Found existing installation: sympy 1.12\n", - " Uninstalling sympy-1.12:\n", - " Successfully uninstalled sympy-1.12\n", - " Attempting uninstall: pydantic\n", - " Found existing installation: pydantic 2.7.1\n", - " Uninstalling pydantic-2.7.1:\n", - " Successfully uninstalled pydantic-2.7.1\n", - " Attempting uninstall: packaging\n", - " Found existing installation: packaging 24.0\n", - " Uninstalling packaging-24.0:\n", - " Successfully uninstalled packaging-24.0\n", - " Attempting uninstall: networkx\n", - " Found existing installation: networkx 3.3\n", - " Uninstalling networkx-3.3:\n", - " Successfully uninstalled networkx-3.3\n", - "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", - "torch 2.3.0+cu121 requires nvidia-cublas-cu12==12.1.3.1; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cuda-cupti-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cuda-nvrtc-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cuda-runtime-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cudnn-cu12==8.9.2.26; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cufft-cu12==11.0.2.54; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-curand-cu12==10.3.2.106; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cusolver-cu12==11.4.5.107; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cusparse-cu12==12.1.0.106; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-nccl-cu12==2.20.5; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-nvtx-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\u001b[0m\u001b[31m\n", - "\u001b[0mSuccessfully installed ConfigArgParse-1.7 Pyomo-6.5.0 black-24.4.2 classiq-0.42.0 h11-0.14.0 httpcore-1.0.5 httpx-0.27.0 mypy-extensions-1.0.0 networkx-2.8.8 packaging-22.0 pathspec-0.12.1 ply-3.11 pydantic-1.10.15 sympy-1.10.1\n" - ] - } - ] - }, - { - "cell_type": "code", - "source": [ - "import classiq" - ], - "metadata": { - "id": "o13wIglSeo7y" - }, - "id": "o13wIglSeo7y", - "execution_count": 2, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "classiq.authenticate()" - ], - "metadata": { - "id": "jLanwByIe4eJ", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "6dec848a-472c-4dc6-8104-d8d00fbbb8e6" - }, - "id": "jLanwByIe4eJ", - "execution_count": 3, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Your user code: PXSB-NCBB\n", - "If a browser doesn't automatically open, please visit this URL from any trusted device: https://auth.classiq.io/activate?user_code=PXSB-NCBB\n" - ] - } - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "19266c11-6acc-4edb-910f-2d0dfe80a6c8", - "metadata": { - "id": "19266c11-6acc-4edb-910f-2d0dfe80a6c8" - }, - "outputs": [], - "source": [ - "from typing import List, cast\n", - "from classiq import *\n", - "from classiq import Pauli, PauliTerm\n", - "\n", - "#TODO: Complete Hamiltonian\n", - "HAMILTONIAN = QConstant(\"HAMILTONIAN\", List[PauliTerm], [\n", - " PauliTerm([Pauli.I, Pauli.I], -1.0523),\n", - " PauliTerm([Pauli.I, Pauli.Z], 0.3979),\n", - " PauliTerm([Pauli.Z, Pauli.I], -0.3979),\n", - " PauliTerm([Pauli.Z, Pauli.Z], -0.0112),\n", - " PauliTerm([Pauli.X, Pauli.X], 0.1809),\n", - "])" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "0bb68899-2076-45c0-8868-131f38aa3b78", - "metadata": { - "id": "0bb68899-2076-45c0-8868-131f38aa3b78" - }, - "outputs": [], - "source": [ - "@qfunc\n", - "def main(q: Output[QArray[QBit]], angles: CArray[CReal, 3]) -> None:\n", - " # TODO: Create an ansatz which allows each qubit to have\n", - " # arbitrary rotation\n", - "\n", - " allocate(2, q)\n", - " U(angles[0], angles[1], angles[2], 0, q[0])\n", - " U(angles[0], angles[1], angles[2], 0, q[1])\n", - " #CX(q[0], q[1])\n", - "\n", - "@cfunc\n", - "def cmain() -> None:\n", - " res = vqe(\n", - " hamiltonian=HAMILTONIAN,\n", - " maximize=False,\n", - " initial_point=[],\n", - " optimizer=Optimizer.COBYLA,\n", - " max_iteration=1000,\n", - " tolerance=0.001,\n", - " step_size=0,\n", - " skip_compute_variance=False,\n", - " alpha_cvar=1.0,\n", - " )\n", - " save({\"result\": res})\n", - "\n", - "qmod = create_model(main, classical_execution_function=cmain)\n", - "#TODO: complete the line, use classical_execution_function\n", - "qprog = synthesize(qmod)\n", - "# show(qprog)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "0563c1a8-7aec-4da9-9105-6b16c5c24382", - "metadata": { - "id": "0563c1a8-7aec-4da9-9105-6b16c5c24382" - }, - "outputs": [], - "source": [ - "execution = execute(qprog)\n", - "res = execution.result()\n", - "# execution.open_in_ide()\n", - "vqe_result = res[0].value\n", - " #TODO: complete the line" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "de17cfc0-8e64-4493-b4c2-4a97fc9797a0", - "metadata": { - "scrolled": true, - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "de17cfc0-8e64-4493-b4c2-4a97fc9797a0", - "outputId": "67a7bccc-f67c-4dfc-aad2-7011fc51905c" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Optimal energy: -1.0711231445312501\n", - "Optimal parameters: {'angles_0': -3.0914206855935538, 'angles_1': -0.23729943557563232, 'angles_2': -2.5756826635214636}\n", - "Eigenstate: {'01': (0.02209708691207961+0j), '11': (0.9997558295653994+0j)}\n" - ] - } - ], - "source": [ - "print(f\"Optimal energy: {vqe_result.energy}\")\n", - "print(f\"Optimal parameters: {vqe_result.optimal_parameters}\")\n", - "print(f\"Eigenstate: {vqe_result.eigenstate}\")" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Optimal energy: -1.0711231445312501\n", - "Optimal parameters:\n", - "{'angles_0': -3.0914206855935538, 'angles_1': -0.23729943557563232, 'angles_2': -2.5756826635214636}\n", - "Eigenstate:\n", - "{'01': (0.02209708691207961+0j),\n", - "'11': (0.9997558295653994+0j)}" - ], - "metadata": { - "id": "Yy49RbSEytVl" - }, - "id": "Yy49RbSEytVl" - }, - { - "cell_type": "markdown", - "id": "5df11dfc-3e3a-4191-bd47-d522ca3dcbfa", - "metadata": { - "id": "5df11dfc-3e3a-4191-bd47-d522ca3dcbfa" - }, - "source": [ - "Does it similar to the `optimal energy` we calculated in class? \\\n", - "Does it similar to the `total energy` we calculated in class?" - ] - }, - { - "cell_type": "code", - "source": [], - "metadata": { - "id": "29J60aKnzkKl" - }, - "id": "29J60aKnzkKl", - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "id": "4f0e0bea-b12f-43ad-94e8-100fedf2b57f", - "metadata": { - "id": "4f0e0bea-b12f-43ad-94e8-100fedf2b57f" - }, - "source": [ - "### Part 2" - ] - }, - { - "cell_type": "markdown", - "id": "66882248-de08-4a6e-b33c-647f015f7d79", - "metadata": { - "id": "66882248-de08-4a6e-b33c-647f015f7d79" - }, - "source": [ - "**Now, we want to have a more interesting ansatz in our `main`.** \n", - "Add **one** line of code to the `main` function you created in Part 1 that creates **entanglement** between the two qubits. \n", - "Which gate should you use?" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "bb39be9e-4994-44e5-84d8-c99bc8b77145", - "metadata": { - "id": "bb39be9e-4994-44e5-84d8-c99bc8b77145" - }, - "outputs": [], - "source": [ - "@qfunc\n", - "def main(q: Output[QArray[QBit]], angles: CArray[CReal, 3]) -> None:\n", - " # TODO: Create an ansatz which allows each qubit to have\n", - " # arbitrary rotation\n", - "\n", - " allocate(2, q)\n", - " U(angles[0], angles[1], angles[2], 0, q[0])\n", - " U(angles[0], angles[1], angles[2], 0, q[1])\n", - " CX(q[0], q[1])\n", - " #H(q[0])\n", - " #X(q[1])\n", - " #CX(q[0], q[1])\n", - "\n", - "\n", - "@cfunc\n", - "def cmain() -> None:\n", - " res = vqe(\n", - " HAMILTONIAN, # TODO: complete the missing argument\n", - " False,\n", - " [],\n", - " optimizer=Optimizer.COBYLA,\n", - " max_iteration=1000,\n", - " tolerance=0.001,\n", - " step_size=0,\n", - " skip_compute_variance=False,\n", - " alpha_cvar=1.0,\n", - " )\n", - " save({\"result\": res})\n", - "\n", - "qmod = create_model(main, classical_execution_function=cmain)\n", - "#TODO: complete the line, use classical_execution_function\n", - "qprog = synthesize(qmod)\n", - "# show(qprog)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "112a1590-283c-4f79-8035-72936561102d", - "metadata": { - "id": "112a1590-283c-4f79-8035-72936561102d" - }, - "outputs": [], - "source": [ - "execution = execute(qprog)\n", - "res = execution.result()\n", - "# execution.open_in_ide()\n", - "vqe_result = res[0].value\n", - "#TODO: complete the line" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "06500e4c-a04b-4cfa-a84d-41f96a0c68eb", - "metadata": { - "jupyter": { - "outputs_hidden": true - }, - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "06500e4c-a04b-4cfa-a84d-41f96a0c68eb", - "outputId": "dcaccb41-a8ff-4e1d-eb1e-8f110ed93820" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Optimal energy: -1.8452896484374999\n", - "Optimal parameters: {'angles_0': -2.9812026284028255, 'angles_1': 0.8040137892002661, 'angles_2': 5.77426479151465}\n", - "Eigenstate: {'11': (0.08267972847076846+0j), '10': (0.07967217989988726+0j), '01': (0.9933863328282708+0j)}\n" - ] - } - ], - "source": [ - "print(f\"Optimal energy: {vqe_result.energy}\")\n", - "print(f\"Optimal parameters: {vqe_result.optimal_parameters}\")\n", - "print(f\"Eigenstate: {vqe_result.eigenstate}\")" - ] - }, - { - "cell_type": "markdown", - "source": [ - "Optimal energy: -1.8452896484374999\n", - "Optimal parameters:\n", - "{'angles_0': -2.9812026284028255, 'angles_1': 0.8040137892002661, 'angles_2': 5.77426479151465}\n", - "\n", - "Eigenstate:\n", - "{'11': (0.08267972847076846+0j),\n", - "'10': (0.07967217989988726+0j),\n", - "'01': (0.9933863328282708+0j)}\n" - ], - "metadata": { - "id": "-7V3qnVRzFmJ" - }, - "id": "-7V3qnVRzFmJ" - }, - { - "cell_type": "markdown", - "id": "30a635d7-2f15-4c94-a94b-f4270f17aed8", - "metadata": { - "id": "30a635d7-2f15-4c94-a94b-f4270f17aed8" - }, - "source": [ - "Does it similar to the `optimal energy` we calculated in class? \\\n", - "Does it similar to the `total energy` we calculated in class? \\\n", - "What can we learn about the provided form this result Hamiltonian?\n", - "\n", - "With entanglement one gets better results." - ] - }, - { - "cell_type": "code", - "source": [], - "metadata": { - "id": "726uVxmDzYXE" - }, - "id": "726uVxmDzYXE", - "execution_count": null, - "outputs": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.16" - }, - "colab": { - "provenance": [], - "include_colab_link": true - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file From 2efc529ce526fcb794e3c09bfd4b2809a36eb73f Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Sat, 15 Jun 2024 04:27:18 +0200 Subject: [PATCH 22/83] Add files via upload --- ...sir_Mansour_HW4_molecule_eigensolver.ipynb | 719 ++++++++++++++++++ 1 file changed, 719 insertions(+) create mode 100644 community/QClass_2024/Submissions/HW4/Yasir_Mansour_HW4_molecule_eigensolver.ipynb diff --git a/community/QClass_2024/Submissions/HW4/Yasir_Mansour_HW4_molecule_eigensolver.ipynb b/community/QClass_2024/Submissions/HW4/Yasir_Mansour_HW4_molecule_eigensolver.ipynb new file mode 100644 index 00000000..090647d7 --- /dev/null +++ b/community/QClass_2024/Submissions/HW4/Yasir_Mansour_HW4_molecule_eigensolver.ipynb @@ -0,0 +1,719 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "726d2386", + "metadata": { + "colab_type": "text", + "id": "view-in-github" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "id": "4fbae0f9", + "metadata": { + "id": "4fbae0f9" + }, + "source": [ + "# Molecule Eigensolver (VQE method)\n", + "\n", + "Evaluating the ground state of a molecular Hamiltonian allows us to understand the chemical properties of the molecule. In this demo, we demonstrate the usage of Variational Quantum Eigensolver (VQE) for finding the ground states and energies of several molecules: 𝐻2 , 𝐻2𝑂 and 𝐿𝑖𝐻 .\n", + "\n", + "VQE is a leading method for finding approximate values of ground state wavefuncions and energies for complicated quantum systems, and as such can give solutions for complex molecular structures. The overview of the VQE method is as following: a problem (i.e. a molecule) is defined by a Hamiltonian which ground state is sought. Then, a choice of a parameterized ansatz is made. Using a hybrid quantum-classical algorithm, a solution for the defined parameters which minimize the expectation value for the energy is found. A clever ansatz will lead to an estimated ground state solution.\n", + "\n", + "Within the scope of Classiq's VQE algorithm, the user defines a Molecule which is being translated to a concise Hamiltonian. Then, a choice between several types of well studied ansatz is given, which can be carefully picked to fit your Molecule type. In the last stage, the Hamiltonian and ansatz are sent to a classical optimizer. During this tutorial we will demonstrate the steps and user options in Classiq's VQE algorithm. Furthermore, the demonstration will present the optimization strength Classiq's VQE algorithm holds, and it's state of the art results in term of efficient quantum circuit - with ultimate combination of low depth and high accuracy, while minimizing the number of CX gates." + ] + }, + { + "cell_type": "markdown", + "id": "TWGNYMkUKh6C", + "metadata": { + "id": "TWGNYMkUKh6C" + }, + "source": [ + "` **RESULTS**\n", + "\n", + "Comparison of different molecules in terms of width and depth. The more atoms in a molecule, the more qubits/circuit depth are necessary. System overload when more than 3 atoms.\n", + "\n", + "## **h2**\n", + "\n", + "hw-eff ansatz: width 4/depth34\n", + "\n", + "ucc ansatz: ,\n", + "width 1/depth 6, width 4, depth 3\n", + "\n", + "total en -1.1342995783232035,\n", + "exact result: -1.8572750302023786,\n", + "vqe result: -1.854268572772183\n" + ] + }, + { + "cell_type": "markdown", + "id": "XcbH8UHbKrIU", + "metadata": { + "id": "XcbH8UHbKrIU" + }, + "source": [ + "## **h2o**\n", + "\n", + "hw-eff. ansatz: width 12/depth 375,\n", + "(conn map 0-1..10-11, reps 11)\n", + "\n", + "ucc ansatz: width 8/depth 1218, width 12/depth 1048\n", + "\n", + "total energy -71.7605079203085,\n", + "exact result: -23.544497240443615,\n", + "vqe result: -80.95442108093192" + ] + }, + { + "cell_type": "markdown", + "id": "Br0-chtAKv6D", + "metadata": { + "id": "Br0-chtAKv6D" + }, + "source": [ + "##**co2**\n", + "\n", + "hw-eff ansatz: width 24/depth 175\n", + "\n", + "ucc ansatz: width 20/depth 19767, width 24/depth 16968\n", + "\n", + "Error number 90001 occurred. The resources needed to execute this request are insufficient.\n", + " This may be due to computational limitations, or high load on Classiq's servers." + ] + }, + { + "cell_type": "markdown", + "id": "54d09062-1b3b-4e4b-8351-5e05a633e269", + "metadata": { + "id": "54d09062-1b3b-4e4b-8351-5e05a633e269" + }, + "source": [ + "## 0. Pre-requirments\n", + "\n", + "The model is using several Classiq's libraries." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "C3SemPUxJw4V", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "C3SemPUxJw4V", + "outputId": "b735d9f4-3d88-4b64-f115-4a9725e63811" + }, + "outputs": [], + "source": [ + "!pip install classiq" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "zjvfmLnXJ1Kk", + "metadata": { + "id": "zjvfmLnXJ1Kk" + }, + "outputs": [], + "source": [ + "from classiq import *" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "LHrqCSj2J5PC", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "LHrqCSj2J5PC", + "outputId": "75c65d46-2d6a-4796-92ee-3dc517c54b93" + }, + "outputs": [], + "source": [ + "import classiq\n", + "classiq.authenticate()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c6bbe65f-1e6a-475c-a43f-cb4cc04bbdfa", + "metadata": { + "id": "c6bbe65f-1e6a-475c-a43f-cb4cc04bbdfa", + "tags": [] + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "from classiq import QuantumProgram, construct_chemistry_model, execute, show, synthesize\n", + "from classiq.applications.chemistry import (\n", + " ChemistryExecutionParameters,\n", + " HEAParameters,\n", + " Molecule,\n", + " MoleculeProblem,\n", + " UCCParameters,\n", + ")\n", + "from classiq.execution import (\n", + " ClassiqBackendPreferences,\n", + " ClassiqSimulatorBackendNames,\n", + " ExecutionPreferences,\n", + " OptimizerType,\n", + ")\n", + "from classiq.synthesis import set_execution_preferences" + ] + }, + { + "cell_type": "markdown", + "id": "faa3c10f", + "metadata": { + "id": "faa3c10f" + }, + "source": [ + "## 1. Generate Qubit Hamiltonian\n", + "\n", + "The first step is to define the molecule we wish to simulate. We hereby declare the class Molecule and insert a list of atoms and their spacial positions. The algorithm will automatically regard relevant attributes such as the atom's mass, charge and spin.\n", + "\n", + "As mentioned above, during this tutorial, we demonstrate how to define and find the ground state and energies for 3 molecules:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "VN6XdfYfLApS", + "metadata": { + "id": "VN6XdfYfLApS", + "tags": [] + }, + "outputs": [], + "source": [ + "#hydrogen\n", + "molecule_H2 = Molecule(atoms=[(\"H\", (0.0, 0.0, 0)), (\"H\", (0.0, 0.0, 0.735))])\n", + "\n", + "#oxygen\n", + "molecule_O2 = Molecule(atoms=[(\"O\", (0.0, 0.0, 0)), (\"O\", (0.0, 0.0, 1.16))])\n", + "\n", + "#lithium hydride\n", + "molecule_LiH = Molecule(atoms=[(\"H\", (0.0, 0.0, 0.0)), (\"Li\", (0.0, 0.0, 1.596))])\n", + "\n", + "#water\n", + "molecule_H2O = Molecule(\n", + " atoms=[(\"O\", (0.0, 0.0, 0.0)), (\"H\", (0, 0.586, 0.757)), (\"H\", (0, 0.586, -0.757))]\n", + ")\n", + "#beryllium hydride\n", + "molecule_BeH2 = Molecule(\n", + " atoms=[(\"Be\", (0.0, 0.0, 0.0)), (\"H\", (0, 0, 1.334)), (\"H\", (0, 0, -1.334))]\n", + ")\n", + "#carbon dioxide\n", + "molecule_CO2 = Molecule(atoms=[(\"C\", (0.0, 0.0, 0.0)),\n", + " (\"O\", (0, 0, 1.1693)), (\"O\", (0, 0, -1.1693))])\n", + "\n", + "#ethyne, acetylene\n", + "molecule_C2H2 = Molecule(atoms=[(\"C\", (0, 0, -0.5977)), (\"C\", (0, 0, 0.5977)),\n", + " (\"H\", (0, 0, -1.6692)), (\"H\", (0, 0, 1.6692))])\n", + "\n", + "#chloroform\n", + "molecule_CH3Cl = Molecule(atoms=[(\"C\", (0, 0, -1.1401)), (\"Cl\", (0, 0, 0.6645)),\n", + " (\"H\", (0, 1.0343, -1.4855)),\n", + " (\"H\", (0.8957, -0.5171, -1.4855)), (\"H\", (-0.8957, -0.5171, -1.4855))])\n", + "\n", + "#ethylene\n", + "molecule_C2H4 = Molecule(atoms=[(\"C\", (0, 0, 0.6673)), (\"C\", (0, 0, -0.6673)),\n", + " (\"H\", (0, 0.9239, 1.2411)), (\"H\", (0, -0.9239, 1.2411)),\n", + " (\"H\", (0, -0.9239, -1.2411)), (\"H\", (0, 0.9239, -1.2411))])\n" + ] + }, + { + "cell_type": "markdown", + "id": "ab162f48", + "metadata": { + "id": "ab162f48" + }, + "source": [ + "Similarly, the user is able to construct any valid essambly of atoms. The distances are recived in Å ($10^{-10} m$). We will continue this demonstration with a specific molecule. The user can change the `molecule` below to study other cases." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2e77678f", + "metadata": { + "id": "2e77678f", + "tags": [] + }, + "outputs": [], + "source": [ + "molecule = molecule_H2O" + ] + }, + { + "cell_type": "markdown", + "id": "c4a541a5", + "metadata": { + "id": "c4a541a5" + }, + "source": [ + "Next, we define the parameters of the Hamiltonian generation program. The user has a choice over the following options:\n", + "- mapping (str): the mapping between the fermionic Hamiltonian and an qubits Hamiltonian. Supported types:\n", + " - \"jordan_wigner\"\n", + " - \"parity\"\n", + " - \"bravyi_kitaev\"\n", + " - \"fast_bravyi_kitaev\"\n", + "- freeze_core (bool): remove the \"core\" orbitals of the atoms defining the molecule.\n", + "- z2_symmetries (bool): whether to perform z2 symmetries reduction. If symmetries in the molecules exist, this option will decrease the number of qubits used and will efficient the Hamiltonian and thus the calculations.\n", + "\n", + "Finally, the Hamiltonian is generated from `MoleculeProblem`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2e0426d5", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "2e0426d5", + "outputId": "205584a3-ca38-4d54-ca52-dbc3f88b8bbf", + "tags": [] + }, + "outputs": [], + "source": [ + "chemistry_problem = MoleculeProblem(\n", + " molecule=molecule,\n", + " mapping=\"jordan_wigner\", #'bravyi_kitaev'\n", + " z2_symmetries=True,\n", + " freeze_core=True,\n", + ")\n", + "\n", + "operator = chemistry_problem.generate_hamiltonian()\n", + "gs_problem = chemistry_problem.update_problem(operator.num_qubits)\n", + "print(\"Your Hamiltonian is\", operator.show(), sep=\"\\n\")" + ] + }, + { + "cell_type": "markdown", + "id": "67a124c2-33fc-420c-8cb3-0002f18f4e77", + "metadata": { + "id": "67a124c2-33fc-420c-8cb3-0002f18f4e77" + }, + "source": [ + "The output of the above code lines is the Hamiltonian presented as a superposition of Pauli matrices multiplication.\n", + "One can easily confirm that using z2*symmetries=True, the number of qubits are reduced (compered to z2_symmetries=False): for $H_2$ - from 4 to 1, for $LiH$ from 12 to 8, and for $H*{2}O$ from 14 to 10." + ] + }, + { + "cell_type": "markdown", + "id": "8abe3e3d-1b01-4fab-b86a-feaab3851950", + "metadata": { + "id": "8abe3e3d-1b01-4fab-b86a-feaab3851950" + }, + "source": [ + "## 2. Constructing and Synthesizing a Ground State Solver\n", + "\n", + "A ground state solver model consists of a parameterized eigenfunction (\"the ansatz\"), on which we run a VQE. In addition, a post-process of the result allows to return the total energy (combining the ground state energy of the Hamiltonian, the nuclear repulsion and the static nuclear energy).\n", + "\n", + "Once we've specified an Hamiltonian and a desired Ansatz, we send them to the VQE algorithm in order to find the Hamiltonian's ground state. In the process, the algorithm will send requests to a classical server, which task is to minimize the energy expectation value and return the optimized parameters. The simulator and optimizing parameters are defined as part of the VQE part of the model. The user should control the `max_iteration` value in a manner so the solution has reached a stable convergence. In addition, the value `num_shots` sets the number of measurements performed after each iteration, thus influence the accuracy of the solutions.\n", + "\n", + "We demonstrate two different proposal for the wavefunction solution ansatz: (1) Hardware (HW) efficient, and (2) Unitary Coupled Cluster (UCC). For groundstate solvers it is typical to initialize the Ansatz with the Hartree-Fock state." + ] + }, + { + "cell_type": "markdown", + "id": "07ed8f8e-485b-4f0f-93b7-78e7fd6fbe39", + "metadata": { + "id": "07ed8f8e-485b-4f0f-93b7-78e7fd6fbe39" + }, + "source": [ + "### 2.1 HW-Efficient Ansatz\n", + "\n", + "Hardware-efficient ansatz is a suggested solution that is generated to fit a specific hardware [1]. The ansatz creates a state with given number of parameters by user choice (number of qubits, that should fit the Hamiltonian), and creates entanglement between the qubits by the inputed connectivity map. In this example, a 4 qubit map is given, which is specifically made of $H_2$ with z2_symmetries=False.\n", + "\n", + "After constructing the model, we can synthesize it and view the outputted circuit, in charged on creating the state with an interactive interface." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "90b20061-8dbd-4136-adba-28ddacb1f583", + "metadata": { + "id": "90b20061-8dbd-4136-adba-28ddacb1f583", + "tags": [] + }, + "outputs": [], + "source": [ + "chemistry_problem = MoleculeProblem(\n", + " molecule=molecule,\n", + " mapping=\"jordan_wigner\", #'bravyi_kitaev'\n", + " z2_symmetries=False,\n", + " freeze_core=True,\n", + ")\n", + "\n", + "hwea_params = HEAParameters(\n", + " num_qubits=12,\n", + " connectivity_map=[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8),\n", + " (8, 9), (9, 10)],\n", + " reps=3,\n", + " one_qubit_gates=[\"x\", \"ry\"],\n", + " two_qubit_gates=[\"cx\"],\n", + ")\n", + "\n", + "qmod = construct_chemistry_model(\n", + " chemistry_problem=chemistry_problem,\n", + " use_hartree_fock=True,\n", + " ansatz_parameters=hwea_params,\n", + " execution_parameters=ChemistryExecutionParameters(\n", + " optimizer=OptimizerType.COBYLA,\n", + " max_iteration=30,\n", + " initial_point=None,\n", + " ),\n", + ")\n", + "\n", + "backend_preferences = ClassiqBackendPreferences(\n", + " backend_name=ClassiqSimulatorBackendNames.SIMULATOR\n", + ")\n", + "\n", + "qmod = set_execution_preferences(\n", + " qmod,\n", + " execution_preferences=ExecutionPreferences(\n", + " num_shots=1000, backend_preferences=backend_preferences\n", + " ),\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f13599d2-e8e7-4165-aa26-8ae8d4bdafaa", + "metadata": { + "id": "f13599d2-e8e7-4165-aa26-8ae8d4bdafaa", + "tags": [] + }, + "outputs": [], + "source": [ + "from classiq import write_qmod\n", + "\n", + "write_qmod(qmod, name=\"molecule_eigensolver\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "22cd12d1-2c87-400a-a983-b2f24e40fa45", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "22cd12d1-2c87-400a-a983-b2f24e40fa45", + "outputId": "d48d0740-4851-4943-f54b-325303b4838a", + "tags": [] + }, + "outputs": [], + "source": [ + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "7fb92cdc", + "metadata": { + "id": "7fb92cdc" + }, + "source": [ + "### 2.2. UCC Ansatz\n", + "\n", + "Next, we show how to create the commonly used chemistry-inspired UCC ansatz, which is a unitary version of the classical coupled cluster (CC) method [2] .\n", + "\n", + "The parameter that defines the UCC ansatz is:\n", + "- excitations (List[int] or List[str]): list of desired excitations. Allowed excitations:\n", + " - 1 for singles\n", + " - 2 for doubles\n", + " - 3 for triples\n", + " - 4 for quadruples\n", + "\n", + "Once again, after the code lines bellow run, the user is able to view the outputted circuit, in charged on creating the state with an interactive interface. In addition, the depth of the circuit is printed.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1f520673", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "1f520673", + "outputId": "fd4a3467-c48b-483c-b156-0a0cde9e2189", + "tags": [] + }, + "outputs": [], + "source": [ + "chemistry_problem = MoleculeProblem(\n", + " molecule=molecule,\n", + " mapping=\"jordan_wigner\", #'bravyi_kitaev'\n", + " z2_symmetries=True,\n", + " freeze_core=True,\n", + ")\n", + "\n", + "serialized_chemistry_model = construct_chemistry_model(\n", + " chemistry_problem=chemistry_problem,\n", + " use_hartree_fock=True,\n", + " ansatz_parameters=UCCParameters(excitations=[1, 2]),\n", + " execution_parameters=ChemistryExecutionParameters(\n", + " optimizer=OptimizerType.COBYLA,\n", + " max_iteration=30,\n", + " initial_point=None,\n", + " ),\n", + ")\n", + "\n", + "backend_preferences = ClassiqBackendPreferences(\n", + " backend_name=ClassiqSimulatorBackendNames.SIMULATOR\n", + ")\n", + "\n", + "serialized_chemistry_model = set_execution_preferences(\n", + " serialized_chemistry_model,\n", + " execution_preferences=ExecutionPreferences(\n", + " num_shots=1000, backend_preferences=backend_preferences\n", + " ),\n", + ")\n", + "\n", + "qprog = synthesize(serialized_chemistry_model)\n", + "show(qprog)\n", + "\n", + "circuit = QuantumProgram.from_qprog(qprog)\n", + "print(f\"circuit depth: {circuit.transpiled_circuit.depth}\")" + ] + }, + { + "cell_type": "markdown", + "id": "f12c9a32-f271-4892-8515-bd9e6b9fcf8b", + "metadata": { + "id": "f12c9a32-f271-4892-8515-bd9e6b9fcf8b" + }, + "source": [ + "Classiq's UCC algorithm provides an highly efficient solution in aspects of circuit depth and number of CX gates. Those ultimately reduce the gate's time and amount of resources needed for its operation." + ] + }, + { + "cell_type": "markdown", + "id": "ef36661f", + "metadata": { + "id": "ef36661f" + }, + "source": [ + "## 3. Execute to Find Ground State\n", + "\n", + "Once we've synthesized the model we can execute it." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1a66d377", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 477 + }, + "id": "1a66d377", + "outputId": "1c93e68e-1300-4fde-ec56-e6e2d377a96e", + "tags": [] + }, + "outputs": [], + "source": [ + "result = execute(qprog).result()\n", + "chemistry_result_dict = result[1].value" + ] + }, + { + "cell_type": "markdown", + "id": "f72ceeb5-bc71-46d8-a390-31ec874700f3", + "metadata": { + "id": "f72ceeb5-bc71-46d8-a390-31ec874700f3" + }, + "source": [ + "Execution of the quantum program returns several useful outputs:\n", + "- energy : the output of the VQE algorithm - the electronic energy simulated.\n", + "- nuclear_repulsion : the electrostatic energy generated by the atom's nuclei.\n", + "- hartree_fock_energy : the Hartree Fock energy.\n", + "- total_energy : this is the ground state energy of the Hamiltonian (combining the energy, the nuclear repulsion and the static nuclear energy).\n", + "\n", + "It also contains the full VQE result from which we can get, for example:\n", + "- optimal_parameters : gives the results for the anzats parameters minimizing that expectation value.\n", + "- eigenstate : gives the ground state wave function.\n", + "\n", + "Note the all energy are presented in units of Hartree." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "437b3211", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "437b3211", + "outputId": "dbe14152-d540-4cd0-f294-b17824883a4c", + "tags": [] + }, + "outputs": [], + "source": [ + "chemistry_result_dict[\"total_energy\"]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9a537d3c", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "9a537d3c", + "outputId": "bbb38543-5586-41d0-80a4-32ce72e3fa1b" + }, + "outputs": [], + "source": [ + "chemistry_result_dict[\"vqe_result\"][\"optimal_parameters\"]" + ] + }, + { + "cell_type": "markdown", + "id": "2375f3c3", + "metadata": { + "id": "2375f3c3" + }, + "source": [ + "Finally, we can compare the VQE solution to the classical solution by employing exact diagonalization:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5c896576", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "5c896576", + "outputId": "f6ada73d-6bd4-440d-98c1-d17e70b57cde", + "tags": [] + }, + "outputs": [], + "source": [ + "mat = operator.to_matrix()\n", + "w, v = np.linalg.eig(mat)\n", + "print(\"exact result:\", np.real(min(w)))\n", + "print(\"vqe result:\", chemistry_result_dict[\"energy\"])" + ] + }, + { + "cell_type": "markdown", + "id": "TXF-IJT59B7j", + "metadata": { + "id": "TXF-IJT59B7j" + }, + "source": [ + "## **h2**\n", + "\n", + "hw-eff: width 4/depth34\n", + "\n", + "ucc: width 1/depth 6, width 4, depth 3\n", + "\n", + "total en -1.1342995783232035,\n", + "exact result: -1.8572750302023786,\n", + "vqe result: -1.854268572772183\n" + ] + }, + { + "cell_type": "markdown", + "id": "2qTUaxbEX5IF", + "metadata": { + "id": "2qTUaxbEX5IF" + }, + "source": [ + "## **h2o**\n", + "\n", + "hw-eff.: width 12/depth 375,\n", + "(conn map 0-1..10-11, reps 11)\n", + "\n", + "ucc: width 8/depth 1218, width 12/depth 1048\n", + "\n", + "total energy -71.7605079203085,\n", + "exact result: -23.544497240443615,\n", + "vqe result: -80.95442108093192" + ] + }, + { + "cell_type": "markdown", + "id": "bxRq_3-Jb4_0", + "metadata": { + "id": "bxRq_3-Jb4_0" + }, + "source": [ + "##**co2**\n", + "\n", + "hw-eff: width 24/depth 175\n", + "\n", + "ucc: width 20/depth 19767, width 24/depth 16968\n", + "\n", + "Error number 90001 occurred. The resources needed to execute this request are insufficient.\n", + " This may be due to computational limitations, or high load on Classiq's servers." + ] + }, + { + "cell_type": "markdown", + "id": "b998e321", + "metadata": { + "id": "b998e321" + }, + "source": [ + "[1] Abhinav Kandala, Antonio Mezzacapo, Kristan Temme, Maika Takita, Markus Brink, Jerry M. Chow, Jay M. Gambetta Hardware-efficient variational quantum eigensolver for small molecules and quantum magnets. Nature 549, 242 (2017)\n", + "\n", + "[2] Panagiotis Kl. Barkoutsos, Jerome F. Gonthier, Igor Sokolov, Nikolaj Moll, Gian Salis, Andreas Fuhrer, Marc Ganzhorn, Daniel J. Egger, Matthias Troyer, Antonio Mezzacapo, Stefan Filipp, and Ivano Tavernelli Quantum algorithms for electronic structure calculations: Particle-hole Hamiltonian and optimized wave-function expansions Phys. Rev. A 98, 022322 (2018)\n" + ] + } + ], + "metadata": { + "colab": { + "include_colab_link": true, + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3 [Default]", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From bbee039ad78dc10deaaa36050ea5308366c5d097 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Sat, 15 Jun 2024 04:27:51 +0200 Subject: [PATCH 23/83] Delete community/QClass_2024/Submissions/HW4/Yasir_Mansour_molecule_eigensolver_ipynb_txt.ipynb --- ...nsour_molecule_eigensolver_ipynb_txt.ipynb | 7462 ----------------- 1 file changed, 7462 deletions(-) delete mode 100644 community/QClass_2024/Submissions/HW4/Yasir_Mansour_molecule_eigensolver_ipynb_txt.ipynb diff --git a/community/QClass_2024/Submissions/HW4/Yasir_Mansour_molecule_eigensolver_ipynb_txt.ipynb b/community/QClass_2024/Submissions/HW4/Yasir_Mansour_molecule_eigensolver_ipynb_txt.ipynb deleted file mode 100644 index e8a8e412..00000000 --- a/community/QClass_2024/Submissions/HW4/Yasir_Mansour_molecule_eigensolver_ipynb_txt.ipynb +++ /dev/null @@ -1,7462 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "view-in-github", - "colab_type": "text" - }, - "source": [ - "\"Open" - ] - }, - { - "cell_type": "markdown", - "id": "4fbae0f9", - "metadata": { - "id": "4fbae0f9" - }, - "source": [ - "# Molecule Eigensolver (VQE method)\n", - "\n", - "Evaluating the ground state of a molecular Hamiltonian allows us to understand the chemical properties of the molecule. In this demo, we demonstrate the usage of Variational Quantum Eigensolver (VQE) for finding the ground states and energies of several molecules: 𝐻2 , 𝐻2𝑂 and 𝐿𝑖𝐻 .\n", - "\n", - "VQE is a leading method for finding approximate values of ground state wavefuncions and energies for complicated quantum systems, and as such can give solutions for complex molecular structures. The overview of the VQE method is as following: a problem (i.e. a molecule) is defined by a Hamiltonian which ground state is sought. Then, a choice of a parameterized ansatz is made. Using a hybrid quantum-classical algorithm, a solution for the defined parameters which minimize the expectation value for the energy is found. A clever ansatz will lead to an estimated ground state solution.\n", - "\n", - "Within the scope of Classiq's VQE algorithm, the user defines a Molecule which is being translated to a concise Hamiltonian. Then, a choice between several types of well studied ansatz is given, which can be carefully picked to fit your Molecule type. In the last stage, the Hamiltonian and ansatz are sent to a classical optimizer. During this tutorial we will demonstrate the steps and user options in Classiq's VQE algorithm. Furthermore, the demonstration will present the optimization strength Classiq's VQE algorithm holds, and it's state of the art results in term of efficient quantum circuit - with ultimate combination of low depth and high accuracy, while minimizing the number of CX gates." - ] - }, - { - "cell_type": "markdown", - "source": [ - "` **RESULTS**\n", - "\n", - "Comparison of different molecules in terms of width and depth. The more atoms in a molecule, the more qubits/circuit depth are necessary. System overload when more than 3 atoms.\n", - "\n", - "## **h2**\n", - "\n", - "hw-eff ansatz: width 4/depth34\n", - "\n", - "ucc ansatz: ,\n", - "width 1/depth 6, width 4, depth 3\n", - "\n", - "total en -1.1342995783232035,\n", - "exact result: -1.8572750302023786,\n", - "vqe result: -1.854268572772183\n" - ], - "metadata": { - "id": "TWGNYMkUKh6C" - }, - "id": "TWGNYMkUKh6C" - }, - { - "cell_type": "markdown", - "source": [ - "## **h2o**\n", - "\n", - "hw-eff. ansatz: width 12/depth 375,\n", - "(conn map 0-1..10-11, reps 11)\n", - "\n", - "ucc ansatz: width 8/depth 1218, width 12/depth 1048\n", - "\n", - "total energy -71.7605079203085,\n", - "exact result: -23.544497240443615,\n", - "vqe result: -80.95442108093192" - ], - "metadata": { - "id": "XcbH8UHbKrIU" - }, - "id": "XcbH8UHbKrIU" - }, - { - "cell_type": "markdown", - "source": [ - "##**co2**\n", - "\n", - "hw-eff ansatz: width 24/depth 175\n", - "\n", - "ucc ansatz: width 20/depth 19767, width 24/depth 16968\n", - "\n", - "Error number 90001 occurred. The resources needed to execute this request are insufficient.\n", - " This may be due to computational limitations, or high load on Classiq's servers." - ], - "metadata": { - "id": "Br0-chtAKv6D" - }, - "id": "Br0-chtAKv6D" - }, - { - "cell_type": "markdown", - "id": "54d09062-1b3b-4e4b-8351-5e05a633e269", - "metadata": { - "id": "54d09062-1b3b-4e4b-8351-5e05a633e269" - }, - "source": [ - "## 0. Pre-requirments\n", - "\n", - "The model is using several Classiq's libraries." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "C3SemPUxJw4V", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "collapsed": true, - "id": "C3SemPUxJw4V", - "outputId": "b735d9f4-3d88-4b64-f115-4a9725e63811" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Collecting classiq\n", - " Downloading classiq-0.42.1-py3-none-any.whl (401 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m401.5/401.5 kB\u001b[0m \u001b[31m2.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hCollecting ConfigArgParse<2.0.0,>=1.5.3 (from classiq)\n", - " Downloading ConfigArgParse-1.7-py3-none-any.whl (25 kB)\n", - "Collecting Pyomo<6.6,>=6.5 (from classiq)\n", - " Downloading Pyomo-6.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.7 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m10.7/10.7 MB\u001b[0m \u001b[31m53.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hCollecting black<25.0,>=24.0 (from classiq)\n", - " Downloading black-24.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.8 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.8/1.8 MB\u001b[0m \u001b[31m61.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hCollecting httpx<1,>=0.23.0 (from classiq)\n", - " Downloading httpx-0.27.0-py3-none-any.whl (75 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m75.6/75.6 kB\u001b[0m \u001b[31m8.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: keyring<24.0.0,>=23.5.0 in /usr/lib/python3/dist-packages (from classiq) (23.5.0)\n", - "Requirement already satisfied: matplotlib<4.0.0,>=3.4.3 in /usr/local/lib/python3.10/dist-packages (from classiq) (3.7.1)\n", - "Collecting networkx<3.0.0,>=2.5.1 (from classiq)\n", - " Downloading networkx-2.8.8-py3-none-any.whl (2.0 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.0/2.0 MB\u001b[0m \u001b[31m72.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: numexpr<3.0.0,>=2.7.3 in /usr/local/lib/python3.10/dist-packages (from classiq) (2.10.0)\n", - "Requirement already satisfied: numpy<2.0.0,>=1.20.1 in /usr/local/lib/python3.10/dist-packages (from classiq) (1.25.2)\n", - "Collecting packaging<23.0,>=22.0 (from classiq)\n", - " Downloading packaging-22.0-py3-none-any.whl (42 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m42.6/42.6 kB\u001b[0m \u001b[31m4.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: pandas<3.0.0,>=1.4.0 in /usr/local/lib/python3.10/dist-packages (from classiq) (2.0.3)\n", - "Requirement already satisfied: plotly<6.0.0,>=5.7.0 in /usr/local/lib/python3.10/dist-packages (from classiq) (5.15.0)\n", - "Collecting pydantic<2.0.0,>=1.9.1 (from classiq)\n", - " Downloading pydantic-1.10.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.1/3.1 MB\u001b[0m \u001b[31m61.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: scipy<2.0.0,>=1.10.1 in /usr/local/lib/python3.10/dist-packages (from classiq) (1.11.4)\n", - "Collecting sympy<1.11.0,>=1.9.0 (from classiq)\n", - " Downloading sympy-1.10.1-py3-none-any.whl (6.4 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m6.4/6.4 MB\u001b[0m \u001b[31m64.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: tabulate<1,>=0.8.9 in /usr/local/lib/python3.10/dist-packages (from classiq) (0.9.0)\n", - "Requirement already satisfied: click>=8.0.0 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (8.1.7)\n", - "Collecting mypy-extensions>=0.4.3 (from black<25.0,>=24.0->classiq)\n", - " Downloading mypy_extensions-1.0.0-py3-none-any.whl (4.7 kB)\n", - "Collecting pathspec>=0.9.0 (from black<25.0,>=24.0->classiq)\n", - " Downloading pathspec-0.12.1-py3-none-any.whl (31 kB)\n", - "Requirement already satisfied: platformdirs>=2 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (4.2.2)\n", - "Requirement already satisfied: tomli>=1.1.0 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (2.0.1)\n", - "Requirement already satisfied: typing-extensions>=4.0.1 in /usr/local/lib/python3.10/dist-packages (from black<25.0,>=24.0->classiq) (4.12.1)\n", - "Requirement already satisfied: anyio in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (3.7.1)\n", - "Requirement already satisfied: certifi in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (2024.6.2)\n", - "Collecting httpcore==1.* (from httpx<1,>=0.23.0->classiq)\n", - " Downloading httpcore-1.0.5-py3-none-any.whl (77 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m77.9/77.9 kB\u001b[0m \u001b[31m8.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: idna in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (3.7)\n", - "Requirement already satisfied: sniffio in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->classiq) (1.3.1)\n", - "Collecting h11<0.15,>=0.13 (from httpcore==1.*->httpx<1,>=0.23.0->classiq)\n", - " Downloading h11-0.14.0-py3-none-any.whl (58 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m58.3/58.3 kB\u001b[0m \u001b[31m6.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (1.2.1)\n", - "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (0.12.1)\n", - "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (4.53.0)\n", - "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (1.4.5)\n", - "Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (9.4.0)\n", - "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (3.1.2)\n", - "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0.0,>=3.4.3->classiq) (2.8.2)\n", - "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas<3.0.0,>=1.4.0->classiq) (2023.4)\n", - "Requirement already satisfied: tzdata>=2022.1 in /usr/local/lib/python3.10/dist-packages (from pandas<3.0.0,>=1.4.0->classiq) (2024.1)\n", - "Requirement already satisfied: tenacity>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from plotly<6.0.0,>=5.7.0->classiq) (8.3.0)\n", - "Collecting ply (from Pyomo<6.6,>=6.5->classiq)\n", - " Downloading ply-3.11-py2.py3-none-any.whl (49 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m49.6/49.6 kB\u001b[0m \u001b[31m5.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hRequirement already satisfied: mpmath>=0.19 in /usr/local/lib/python3.10/dist-packages (from sympy<1.11.0,>=1.9.0->classiq) (1.3.0)\n", - "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.7->matplotlib<4.0.0,>=3.4.3->classiq) (1.16.0)\n", - "Requirement already satisfied: exceptiongroup in /usr/local/lib/python3.10/dist-packages (from anyio->httpx<1,>=0.23.0->classiq) (1.2.1)\n", - "Installing collected packages: ply, sympy, Pyomo, pydantic, pathspec, packaging, networkx, mypy-extensions, h11, ConfigArgParse, httpcore, black, httpx, classiq\n", - " Attempting uninstall: sympy\n", - " Found existing installation: sympy 1.12.1\n", - " Uninstalling sympy-1.12.1:\n", - " Successfully uninstalled sympy-1.12.1\n", - " Attempting uninstall: pydantic\n", - " Found existing installation: pydantic 2.7.3\n", - " Uninstalling pydantic-2.7.3:\n", - " Successfully uninstalled pydantic-2.7.3\n", - " Attempting uninstall: packaging\n", - " Found existing installation: packaging 24.0\n", - " Uninstalling packaging-24.0:\n", - " Successfully uninstalled packaging-24.0\n", - " Attempting uninstall: networkx\n", - " Found existing installation: networkx 3.3\n", - " Uninstalling networkx-3.3:\n", - " Successfully uninstalled networkx-3.3\n", - "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", - "torch 2.3.0+cu121 requires nvidia-cublas-cu12==12.1.3.1; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cuda-cupti-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cuda-nvrtc-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cuda-runtime-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cudnn-cu12==8.9.2.26; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cufft-cu12==11.0.2.54; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-curand-cu12==10.3.2.106; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cusolver-cu12==11.4.5.107; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-cusparse-cu12==12.1.0.106; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-nccl-cu12==2.20.5; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\n", - "torch 2.3.0+cu121 requires nvidia-nvtx-cu12==12.1.105; platform_system == \"Linux\" and platform_machine == \"x86_64\", which is not installed.\u001b[0m\u001b[31m\n", - "\u001b[0mSuccessfully installed ConfigArgParse-1.7 Pyomo-6.5.0 black-24.4.2 classiq-0.42.1 h11-0.14.0 httpcore-1.0.5 httpx-0.27.0 mypy-extensions-1.0.0 networkx-2.8.8 packaging-22.0 pathspec-0.12.1 ply-3.11 pydantic-1.10.15 sympy-1.10.1\n" - ] - } - ], - "source": [ - "!pip install classiq" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "zjvfmLnXJ1Kk", - "metadata": { - "id": "zjvfmLnXJ1Kk" - }, - "outputs": [], - "source": [ - "from classiq import *" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "LHrqCSj2J5PC", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "LHrqCSj2J5PC", - "outputId": "75c65d46-2d6a-4796-92ee-3dc517c54b93" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Your user code: SGSG-NSNW\n", - "If a browser doesn't automatically open, please visit this URL from any trusted device: https://auth.classiq.io/activate?user_code=SGSG-NSNW\n" - ] - } - ], - "source": [ - "import classiq\n", - "classiq.authenticate()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c6bbe65f-1e6a-475c-a43f-cb4cc04bbdfa", - "metadata": { - "id": "c6bbe65f-1e6a-475c-a43f-cb4cc04bbdfa" - }, - "outputs": [], - "source": [ - "import numpy as np\n", - "\n", - "from classiq import QuantumProgram, construct_chemistry_model, execute, show, synthesize\n", - "from classiq.applications.chemistry import (\n", - " ChemistryExecutionParameters,\n", - " HEAParameters,\n", - " Molecule,\n", - " MoleculeProblem,\n", - " UCCParameters,\n", - ")\n", - "from classiq.execution import (\n", - " ClassiqBackendPreferences,\n", - " ClassiqSimulatorBackendNames,\n", - " ExecutionPreferences,\n", - " OptimizerType,\n", - ")\n", - "from classiq.synthesis import set_execution_preferences" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "HnN_rrrOK-AI", - "metadata": { - "id": "HnN_rrrOK-AI" - }, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "id": "faa3c10f", - "metadata": { - "id": "faa3c10f" - }, - "source": [ - "## 1. Generate Qubit Hamiltonian\n", - "\n", - "The first step is to define the molecule we wish to simulate. We hereby declare the class Molecule and insert a list of atoms and their spacial positions. The algorithm will automatically regard relevant attributes such as the atom's mass, charge and spin.\n", - "\n", - "As mentioned above, during this tutorial, we demonstrate how to define and find the ground state and energies for 3 molecules:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "VN6XdfYfLApS", - "metadata": { - "id": "VN6XdfYfLApS" - }, - "outputs": [], - "source": [ - "#hydrogen\n", - "molecule_H2 = Molecule(atoms=[(\"H\", (0.0, 0.0, 0)), (\"H\", (0.0, 0.0, 0.735))])\n", - "\n", - "#oxygen\n", - "molecule_O2 = Molecule(atoms=[(\"O\", (0.0, 0.0, 0)), (\"O\", (0.0, 0.0, 1.16))])\n", - "\n", - "#lithium hydride\n", - "molecule_LiH = Molecule(atoms=[(\"H\", (0.0, 0.0, 0.0)), (\"Li\", (0.0, 0.0, 1.596))])\n", - "\n", - "#water\n", - "molecule_H2O = Molecule(\n", - " atoms=[(\"O\", (0.0, 0.0, 0.0)), (\"H\", (0, 0.586, 0.757)), (\"H\", (0, 0.586, -0.757))]\n", - ")\n", - "#beryllium hydride\n", - "molecule_BeH2 = Molecule(\n", - " atoms=[(\"Be\", (0.0, 0.0, 0.0)), (\"H\", (0, 0, 1.334)), (\"H\", (0, 0, -1.334))]\n", - ")\n", - "#carbon dioxide\n", - "molecule_CO2 = Molecule(atoms=[(\"C\", (0.0, 0.0, 0.0)),\n", - " (\"O\", (0, 0, 1.1693)), (\"O\", (0, 0, -1.1693))])\n", - "\n", - "#ethyne, acetylene\n", - "molecule_C2H2 = Molecule(atoms=[(\"C\", (0, 0, -0.5977)), (\"C\", (0, 0, 0.5977)),\n", - " (\"H\", (0, 0, -1.6692)), (\"H\", (0, 0, 1.6692))])\n", - "\n", - "#chloroform\n", - "molecule_CH3Cl = Molecule(atoms=[(\"C\", (0, 0, -1.1401)), (\"Cl\", (0, 0, 0.6645)),\n", - " (\"H\", (0, 1.0343, -1.4855)),\n", - " (\"H\", (0.8957, -0.5171, -1.4855)), (\"H\", (-0.8957, -0.5171, -1.4855))])\n", - "\n", - "#ethylene\n", - "molecule_C2H4 = Molecule(atoms=[(\"C\", (0, 0, 0.6673)), (\"C\", (0, 0, -0.6673)),\n", - " (\"H\", (0, 0.9239, 1.2411)), (\"H\", (0, -0.9239, 1.2411)),\n", - " (\"H\", (0, -0.9239, -1.2411)), (\"H\", (0, 0.9239, -1.2411))])\n" - ] - }, - { - "cell_type": "markdown", - "id": "ab162f48", - "metadata": { - "id": "ab162f48" - }, - "source": [ - "Similarly, the user is able to construct any valid essambly of atoms. The distances are recived in Å ($10^{-10} m$). We will continue this demonstration with a specific molecule. The user can change the `molecule` below to study other cases." - ] - }, - { - "cell_type": "code", - "execution_count": 157, - "id": "2e77678f", - "metadata": { - "id": "2e77678f" - }, - "outputs": [], - "source": [ - "molecule = molecule_CO2" - ] - }, - { - "cell_type": "markdown", - "id": "c4a541a5", - "metadata": { - "id": "c4a541a5" - }, - "source": [ - "Next, we define the parameters of the Hamiltonian generation program. The user has a choice over the following options:\n", - "- mapping (str): the mapping between the fermionic Hamiltonian and an qubits Hamiltonian. Supported types:\n", - " - \"jordan_wigner\"\n", - " - \"parity\"\n", - " - \"bravyi_kitaev\"\n", - " - \"fast_bravyi_kitaev\"\n", - "- freeze_core (bool): remove the \"core\" orbitals of the atoms defining the molecule.\n", - "- z2_symmetries (bool): whether to perform z2 symmetries reduction. If symmetries in the molecules exist, this option will decrease the number of qubits used and will efficient the Hamiltonian and thus the calculations.\n", - "\n", - "Finally, the Hamiltonian is generated from `MoleculeProblem`." - ] - }, - { - "cell_type": "code", - "execution_count": 158, - "id": "2e0426d5", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "collapsed": true, - "id": "2e0426d5", - "outputId": "205584a3-ca38-4d54-ca52-dbc3f88b8bbf" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Your Hamiltonian is\n", - "-55.215 * IIIIIIIIIIIIIIIIIIII\n", - "+1.411 * ZIZZIIZZZIZIZIIZZIIZ\n", - "-0.046 * IIZZZZIZZIIZZIIIIZIX\n", - "+0.046 * ZIIIZZZIIIZZIIIZZZIX\n", - "-0.120 * IIIIIIIIIIIZXIIIIIII\n", - "+0.120 * ZIZZIIZZZIZZXIIZZIIZ\n", - "+1.413 * ZIIIZZZIIIZZIIIZZZII\n", - "-0.012 * ZIZZIIZZZIZZIZZIIXIZ\n", - "+0.012 * IIZZZZIZZIIIIZZZZXIZ\n", - "+0.109 * ZIZZIIZZZIZXZIIZZIIZ\n", - "-0.109 * IIZZZZIZZIIXZIIIIZIZ\n", - "+1.083 * IIIIIIIIIIIIIIIIIIIZ\n", - "+0.061 * IIZZZZIZZIIIYIIIIZIY\n", - "+0.061 * IIZZZZIZZIIIXIIIIZIX\n", - "+1.009 * IIZZZZIZZIIIIZZZZIZI\n", - "-0.106 * IIZZZZIZZIIIIZXIIZII\n", - "+0.106 * IIIIIIIIIIIIIIXZZZZI\n", - "-0.005 * IIZZZZIZZIIIIXIIIZII\n", - "+0.005 * IIIIIIIIIIIIIXZZZZZI\n", - "+1.009 * IIIIIIIIIIIIIIIIIIZI\n", - "-0.005 * IIIIIIIIIIIIIIYZZZYI\n", - "-0.005 * IIIIIIIIIIIIIIXZZZXI\n", - "+0.106 * IIIIIIIIIIIIIYZZZZYI\n", - "+0.106 * IIIIIIIIIIIIIXZZZZXI\n", - "+1.071 * IIIIIIIIIIIIIIIIIZII\n", - "-0.071 * IIIIIIIIIIIYZZZZZYII\n", - "-0.071 * IIIIIIIIIIIXZZZZZXII\n", - "+1.021 * IIIIIIIIIIIIIIIIZIII\n", - "+1.021 * IIIIIIIIIIIIIIIZIIII\n", - "+0.738 * IIIIIIIIIIIIIIZIIIII\n", - "+0.738 * IIIIIIIIIIIIIZIIIIII\n", - "+0.721 * IIIIIIIIIIIIZIIIIIII\n", - "+0.366 * IIIIIIIIIIIZIIIIIIII\n", - "+1.411 * ZZZZZZZZZZZIIIIIIIII\n", - "-0.046 * ZZZZZZZZZXIIIIIIIIII\n", - "+0.046 * IIIIIIIIIXZIIIIIIIII\n", - "-0.120 * ZXIIIIIIIIIIIIIIIIII\n", - "+0.120 * IXZZZZZZZZZIIIIIIIII\n", - "+1.413 * IIIIIIIIIIZIIIIIIIII\n", - "+0.012 * IIIIIIYZZZYIIIIIIIII\n", - "+0.012 * IIIIIIXZZZXIIIIIIIII\n", - "-0.109 * YZZZZZZZZZYIIIIIIIII\n", - "-0.109 * XZZZZZZZZZXIIIIIIIII\n", - "+1.083 * IIIIIIIIIZIIIIIIIIII\n", - "+0.061 * IYZZZZZZZYIIIIIIIIII\n", - "+0.061 * IXZZZZZZZXIIIIIIIIII\n", - "+1.009 * IIIIIIIIZIIIIIIIIIII\n", - "+0.106 * IIIYZZZZYIIIIIIIIIII\n", - "+0.106 * IIIXZZZZXIIIIIIIIIII\n", - "+0.005 * IIYZZZZZYIIIIIIIIIII\n", - "+0.005 * IIXZZZZZXIIIIIIIIIII\n", - "+1.009 * IIIIIIIZIIIIIIIIIIII\n", - "-0.005 * IIIYZZZYIIIIIIIIIIII\n", - "-0.005 * IIIXZZZXIIIIIIIIIIII\n", - "+0.106 * IIYZZZZYIIIIIIIIIIII\n", - "+0.106 * IIXZZZZXIIIIIIIIIIII\n", - "+1.071 * IIIIIIZIIIIIIIIIIIII\n", - "-0.071 * YZZZZZYIIIIIIIIIIIII\n", - "-0.071 * XZZZZZXIIIIIIIIIIIII\n", - "+1.021 * IIIIIZIIIIIIIIIIIIII\n", - "+1.021 * IIIIZIIIIIIIIIIIIIII\n", - "+0.738 * IIIZIIIIIIIIIIIIIIII\n", - "+0.738 * IIZIIIIIIIIIIIIIIIII\n", - "+0.721 * IZIIIIIIIIIIIIIIIIII\n", - "+0.366 * ZIIIIIIIIIIIIIIIIIII\n", - "+0.077 * IIZZZZIZZIIZZIIIIZIZ\n", - "+0.011 * IIIIIIIIIIIZZZZZZXII\n", - "-0.011 * ZIIIZZZIIIZIZZZIIXII\n", - "-0.008 * IIIIIIIIIIIXIIIIIIII\n", - "+0.008 * ZIIIZZZIIIZXIIIZZZII\n", - "+0.097 * ZIZZIIZZZIZIZIIZZIII\n", - "+0.001 * ZIIIZZZIIIZIXIIZZZIX\n", - "+0.001 * ZIIIZZZIIIZIYIIZZZIY\n", - "+0.105 * ZIIIZZZIIIZIZZZIIIZZ\n", - "+0.002 * ZIIIZZZIIIZIZZXZZZIZ\n", - "-0.002 * ZIZZIIZZZIZIZIXIIZZZ\n", - "+0.000 * ZIIIZZZIIIZIZXIZZZIZ\n", - "-0.000 * ZIZZIIZZZIZIZXZIIZZZ\n", - "+0.105 * ZIZZIIZZZIZIZIIZZIZZ\n", - "+0.000 * ZIZZIIZZZIZIZIYIIZYZ\n", - "+0.000 * ZIZZIIZZZIZIZIXIIZXZ\n", - "-0.002 * ZIZZIIZZZIZIZYZIIZYZ\n", - "-0.002 * ZIZZIIZZZIZIZXZIIZXZ\n", - "+0.105 * ZIZZIIZZZIZIZIIZZZIZ\n", - "+0.006 * ZIZZIIZZZIZYIZZIIYIZ\n", - "+0.006 * ZIZZIIZZZIZXIZZIIXIZ\n", - "+0.107 * ZIZZIIZZZIZIZIIZIIIZ\n", - "+0.107 * ZIZZIIZZZIZIZIIIZIIZ\n", - "+0.116 * ZIZZIIZZZIZIZIZZZIIZ\n", - "+0.116 * ZIZZIIZZZIZIZZIZZIIZ\n", - "+0.116 * ZIZZIIZZZIZIIIIZZIIZ\n", - "+0.130 * ZIZZIIZZZIZZZIIZZIIZ\n", - "+0.016 * ZIZZIIZZZIZIZIIZZIIX\n", - "-0.016 * IIIIIIIIIIIIIIIIIIIX\n", - "+0.008 * ZIIIZZZIIIZIXIIZZZII\n", - "-0.008 * IIZZZZIZZIIIXIIIIZIZ\n", - "+0.005 * ZIIIZZZIIIZIZZZIIYIY\n", - "+0.037 * IIIIIIIIIIIZZZZZZXIX\n", - "+0.032 * IIIIIIIIIIIZZZZZZYIY\n", - "+0.032 * IIZZZZIZZIIIIZZZZYIY\n", - "+0.037 * IIZZZZIZZIIIIZZZZXIX\n", - "+0.005 * ZIZZIIZZZIZZIZZIIYIY\n", - "-0.002 * ZIIIZZZIIIZYIIIZZZIY\n", - "+0.005 * IIIIIIIIIIIXIIIIIIIX\n", - "+0.007 * IIIIIIIIIIIYIIIIIIIY\n", - "+0.007 * IIZZZZIZZIIYZIIIIZIY\n", - "+0.005 * IIZZZZIZZIIXZIIIIZIX\n", - "-0.002 * ZIZZIIZZZIZYZIIZZIIY\n", - "-0.000 * ZIZZIIZZZIZIZIIZXZZZ\n", - "+0.001 * IIIIIIIIIIIZZZZZXIIZ\n", - "-0.001 * IIZZZZIZZIIZZIIIXIZZ\n", - "-0.001 * IIZZZZIZZIIIIZZZXZII\n", - "+0.001 * IIIIIIIIIIIIIIIIXZZI\n", - "-0.000 * ZIZZIIZZZIZZIZZIXIII\n", - "-0.003 * ZIZZIIZZZIZIZIIXIZZZ\n", - "+0.034 * IIIIIIIIIIIZZZZXIIIZ\n", - "-0.031 * IIZZZZIZZIIZZIIXZIZZ\n", - "-0.031 * IIZZZZIZZIIIIZZXIZII\n", - "+0.034 * IIIIIIIIIIIIIIIXZZZI\n", - "-0.003 * ZIZZIIZZZIZZIZZXZIII\n", - "-0.003 * ZIZZIIZZZIZIZIIZXZXZ\n", - "-0.034 * IIZZZZIZZIIZZIIIYIYZ\n", - "-0.031 * IIZZZZIZZIIZZIIIXIXZ\n", - "+0.031 * IIIIIIIIIIIIIIIIYZYI\n", - "+0.034 * IIIIIIIIIIIIIIIIXZXI\n", - "+0.003 * ZIIIZZZIIIZZIIIZYIYI\n", - "+0.000 * ZIZZIIZZZIZIZIIXIZXZ\n", - "+0.001 * IIZZZZIZZIIZZIIYZIYZ\n", - "+0.001 * IIZZZZIZZIIZZIIXZIXZ\n", - "-0.001 * IIIIIIIIIIIIIIIYZZYI\n", - "-0.001 * IIIIIIIIIIIIIIIXZZXI\n", - "-0.000 * ZIIIZZZIIIZZIIIYIIYI\n", - "+0.003 * ZIZZIIZZZIZIXZZIIXIZ\n", - "-0.021 * IIZZZZIZZIIZXZZZZXIZ\n", - "-0.017 * IIZZZZIZZIIZYZZZZYIZ\n", - "-0.017 * IIIIIIIIIIIIYZZZZYII\n", - "-0.021 * IIIIIIIIIIIIXZZZZXII\n", - "+0.003 * ZIIIZZZIIIZZXZZIIXII\n", - "+0.000 * ZIZZIIZZZIZIZIYIYIIZ\n", - "-0.001 * IIZZZZIZZIIZZIYZYZIZ\n", - "-0.001 * IIZZZZIZZIIZZIXZXZIZ\n", - "+0.001 * IIIIIIIIIIIIIIYZYIII\n", - "+0.001 * IIIIIIIIIIIIIIXZXIII\n", - "-0.000 * ZIIIZZZIIIZZIIXIXZII\n", - "-0.002 * ZIZZIIZZZIZIZYZIYIIZ\n", - "+0.031 * IIZZZZIZZIIZZYZZYZIZ\n", - "+0.029 * IIZZZZIZZIIZZXZZXZIZ\n", - "-0.029 * IIIIIIIIIIIIIYZZYIII\n", - "-0.031 * IIIIIIIIIIIIIXZZXIII\n", - "+0.002 * ZIIIZZZIIIZZIXZIXZII\n", - "-0.002 * ZIZZIIZZZIZIZIYYZIIZ\n", - "+0.031 * IIZZZZIZZIIZZIYYIZIZ\n", - "+0.029 * IIZZZZIZZIIZZIXXIZIZ\n", - "-0.029 * IIIIIIIIIIIIIIYYIIII\n", - "-0.031 * IIIIIIIIIIIIIIXXIIII\n", - "+0.002 * ZIIIZZZIIIZZIIXXZZII\n", - "-0.000 * ZIZZIIZZZIZIZYZYZIIZ\n", - "+0.001 * IIZZZZIZZIIZZYZYIZIZ\n", - "+0.001 * IIZZZZIZZIIZZXZXIZIZ\n", - "-0.001 * IIIIIIIIIIIIIYZYIIII\n", - "-0.001 * IIIIIIIIIIIIIXZXIIII\n", - "+0.000 * ZIIIZZZIIIZZIXZXZZII\n", - "-0.002 * ZIZZIIZZZIZYYIIZZIIZ\n", - "-0.032 * IIZZZZIZZIIXXIIIIZIZ\n", - "-0.030 * IIZZZZIZZIIYYIIIIZIZ\n", - "-0.030 * IIIIIIIIIIIYYIIIIIII\n", - "-0.032 * IIIIIIIIIIIXXIIIIIII\n", - "-0.002 * ZIIIZZZIIIZYYIIZZZII\n", - "-0.017 * IIIIIIIIIIIZXIIIIIIZ\n", - "+0.017 * ZIZZIIZZZIZZXIIZZIII\n", - "+0.007 * IIIIIIIIIIIZZZZZZZZX\n", - "-0.007 * ZIZZIIZZZIZZIZZIIZZX\n", - "+0.006 * IIZZZZIZZIIZZIYZZIZY\n", - "+0.010 * IIIIIIIIIIIZZZXIIIIX\n", - "-0.004 * IIZZZZIZZIIZZIXZZIZX\n", - "-0.004 * ZIZZIIZZZIZZIZXZZIIX\n", - "+0.010 * ZIIIZZZIIIZZIIXIIIZX\n", - "+0.006 * ZIZZIIZZZIZZIZYZZIIY\n", - "+0.000 * IIZZZZIZZIIZZYZZZIZY\n", - "+0.001 * IIIIIIIIIIIZZXIIIIIX\n", - "-0.000 * IIZZZZIZZIIZZXZZZIZX\n", - "-0.000 * ZIZZIIZZZIZZIXIZZIIX\n", - "+0.001 * ZIIIZZZIIIZZIXZIIIZX\n", - "+0.000 * ZIZZIIZZZIZZIYIZZIIY\n", - "+0.007 * IIZZZZIZZIIZZIIIIZZX\n", - "-0.007 * ZIIIZZZIIIZZIIIZZZZX\n", - "-0.000 * IIZZZZIZZIIZZIYZZIXY\n", - "+0.001 * IIZZZZIZZIIZZIYZZIYX\n", - "+0.000 * IIZZZZIZZIIZZIXZZIXX\n", - "-0.000 * ZIIIZZZIIIZZIIYIIIYX\n", - "-0.001 * ZIIIZZZIIIZZIIXIIIXX\n", - "-0.000 * ZIIIZZZIIIZZIIXIIIYY\n", - "+0.006 * IIZZZZIZZIIZZYZZZIXY\n", - "-0.010 * IIZZZZIZZIIZZYZZZIYX\n", - "-0.004 * IIZZZZIZZIIZZXZZZIXX\n", - "+0.004 * ZIIIZZZIIIZZIYZIIIYX\n", - "+0.010 * ZIIIZZZIIIZZIXZIIIXX\n", - "+0.006 * ZIIIZZZIIIZZIXZIIIYY\n", - "+0.004 * IIZZZZIZZIIZZIIIIIIX\n", - "-0.004 * ZIIIZZZIIIZZIIIZZIIX\n", - "-0.016 * IIZZZZIZZIIXIZZZZYIY\n", - "-0.021 * IIZZZZIZZIIXIZZZZXIX\n", - "-0.006 * IIZZZZIZZIIYIZZZZYIX\n", - "+0.006 * ZIIIZZZIIIZXZZZIIXIX\n", - "+0.021 * ZIIIZZZIIIZYZZZIIYIX\n", - "-0.016 * ZIIIZZZIIIZYZZZIIXIY\n", - "+0.001 * IIZZZZIZZIIZZIIIZZIX\n", - "-0.001 * ZIIIZZZIIIZZIIIZIZIX\n", - "+0.001 * IIZZZZIZZIIZZIIZIZIX\n", - "-0.001 * ZIIIZZZIIIZZIIIIZZIX\n", - "+0.011 * IIZZZZIZZIIZZIZIIZIX\n", - "-0.011 * ZIIIZZZIIIZZIIZZZZIX\n", - "+0.011 * IIZZZZIZZIIZZZIIIZIX\n", - "-0.011 * ZIIIZZZIIIZZIZIZZZIX\n", - "+0.005 * IIZZZZIZZIIZIIIIIZIX\n", - "-0.005 * ZIIIZZZIIIZZZIIZZZIX\n", - "+0.014 * IIZZZZIZZIIIZIIIIZIX\n", - "-0.014 * ZIIIZZZIIIZIIIIZZZIX\n", - "-0.009 * IIZZZZIZZIIZXZZZZIZI\n", - "+0.009 * ZIIIZZZIIIZZXZZIIIZZ\n", - "-0.000 * IIZZZZIZZIIZZIIIYYII\n", - "-0.000 * IIIIIIIIIIIZZZZZXXZI\n", - "+0.000 * IIIIIIIIIIIZZZZZYYZI\n", - "-0.000 * ZIIIZZZIIIZZIIIZXXIZ\n", - "+0.000 * ZIIIZZZIIIZZIIIZYYIZ\n", - "+0.000 * ZIZZIIZZZIZZIZZIXXZZ\n", - "-0.001 * IIZZZZIZZIIZZIIYZYII\n", - "-0.001 * IIIIIIIIIIIZZZZXIXZI\n", - "+0.000 * IIIIIIIIIIIZZZZYIYZI\n", - "-0.000 * ZIIIZZZIIIZZIIIXIXIZ\n", - "+0.001 * ZIIIZZZIIIZZIIIYIYIZ\n", - "+0.001 * ZIZZIIZZZIZZIZZXZXZZ\n", - "+0.000 * IIZZZZIZZIIXIZZZXZII\n", - "-0.000 * IIIIIIIIIIIXIIIIXZZI\n", - "+0.000 * IIIIIIIIIIIYIIIIYZZI\n", - "-0.000 * ZIIIZZZIIIZXZZZIXZIZ\n", - "+0.000 * ZIIIZZZIIIZYZZZIYZIZ\n", - "-0.000 * ZIZZIIZZZIZYZIIZYZZZ\n", - "+0.010 * IIZZZZIZZIIXIZZXIZII\n", - "-0.009 * IIIIIIIIIIIXIIIXZZZI\n", - "+0.002 * IIIIIIIIIIIYIIIYZZZI\n", - "-0.002 * ZIIIZZZIIIZXZZZXZZIZ\n", - "+0.009 * ZIIIZZZIIIZYZZZYZZIZ\n", - "-0.010 * ZIZZIIZZZIZYZIIYIZZZ\n", - "+0.007 * IIZZZZIZZIIZXZXIIZII\n", - "-0.001 * IIIIIIIIIIIZXIXZZZZI\n", - "+0.006 * IIIIIIIIIIIZYIYZZZZI\n", - "+0.006 * ZIIIZZZIIIZZYZYZZZIZ\n", - "-0.001 * ZIIIZZZIIIZZXZXZZZIZ\n", - "+0.007 * ZIZZIIZZZIZZXIXIIZZZ\n", - "+0.000 * IIZZZZIZZIIZXXIIIZII\n", - "-0.000 * IIIIIIIIIIIZXXZZZZZI\n", - "+0.000 * IIIIIIIIIIIZYYZZZZZI\n", - "+0.000 * ZIIIZZZIIIZZYYIZZZIZ\n", - "-0.000 * ZIIIZZZIIIZZXXIZZZIZ\n", - "+0.000 * ZIZZIIZZZIZZXXZIIZZZ\n", - "-0.009 * IIIIIIIIIIIZXIIIIIZI\n", - "+0.009 * ZIZZIIZZZIZZXIIZZIZZ\n", - "-0.001 * IIIIIIIIIIIZZZZZXYYI\n", - "-0.001 * IIIIIIIIIIIZZZZZXXXI\n", - "+0.000 * IIIIIIIIIIIZZZZZYYXI\n", - "+0.000 * ZIZZIIZZZIZZIZZIYXYZ\n", - "+0.001 * ZIZZIIZZZIZZIZZIXYYZ\n", - "+0.001 * ZIZZIIZZZIZZIZZIXXXZ\n", - "+0.000 * IIIIIIIIIIIZZZZXIYYI\n", - "+0.000 * IIIIIIIIIIIZZZZXIXXI\n", - "-0.000 * IIIIIIIIIIIZZZZYIYXI\n", - "-0.000 * ZIZZIIZZZIZZIZZYZXYZ\n", - "-0.000 * ZIZZIIZZZIZZIZZXZYYZ\n", - "-0.000 * ZIZZIIZZZIZZIZZXZXXZ\n", - "-0.010 * IIIIIIIIIIIXIIIIYZYI\n", - "-0.009 * IIIIIIIIIIIXIIIIXZXI\n", - "+0.002 * IIIIIIIIIIIYIIIIYZXI\n", - "+0.002 * ZIZZIIZZZIZXZIIZYZYZ\n", - "+0.009 * ZIZZIIZZZIZYZIIZXZYZ\n", - "-0.010 * ZIZZIIZZZIZYZIIZYZXZ\n", - "+0.000 * IIIIIIIIIIIXIIIYZZYI\n", - "+0.000 * IIIIIIIIIIIXIIIXZZXI\n", - "-0.000 * IIIIIIIIIIIYIIIYZZXI\n", - "-0.000 * ZIZZIIZZZIZXZIIYIZYZ\n", - "-0.000 * ZIZZIIZZZIZYZIIXIZYZ\n", - "+0.000 * ZIZZIIZZZIZYZIIYIZXZ\n", - "+0.000 * IIIIIIIIIIIZXIYZZZYI\n", - "+0.000 * IIIIIIIIIIIZXIXZZZXI\n", - "-0.000 * IIIIIIIIIIIZYIYZZZXI\n", - "-0.000 * ZIZZIIZZZIZZYIXIIZYZ\n", - "-0.000 * ZIZZIIZZZIZZXIYIIZYZ\n", - "-0.000 * ZIZZIIZZZIZZXIXIIZXZ\n", - "-0.007 * IIIIIIIIIIIZXYZZZZYI\n", - "-0.001 * IIIIIIIIIIIZXXZZZZXI\n", - "+0.006 * IIIIIIIIIIIZYYZZZZXI\n", - "+0.006 * ZIZZIIZZZIZZYXZIIZYZ\n", - "+0.001 * ZIZZIIZZZIZZXYZIIZYZ\n", - "+0.007 * ZIZZIIZZZIZZXXZIIZXZ\n", - "-0.013 * IIIIIIIIIIIZXIIIIZII\n", - "+0.013 * ZIZZIIZZZIZZXIIZZZIZ\n", - "-0.000 * IIIIIIIIIIIZZZXIYYII\n", - "-0.000 * IIIIIIIIIIIZZZXIXXII\n", - "-0.000 * IIIIIIIIIIIZZZYIYXII\n", - "-0.000 * ZIZZIIZZZIZZIZXZYYIZ\n", - "+0.000 * ZIZZIIZZZIZZIZYZXYIZ\n", - "-0.000 * ZIZZIIZZZIZZIZYZYXIZ\n", - "+0.002 * IIIIIIIIIIIZZXIIYYII\n", - "+0.002 * IIIIIIIIIIIZZXIIXXII\n", - "+0.000 * IIIIIIIIIIIZZYIIYXII\n", - "+0.000 * ZIZZIIZZZIZZIXIZYYIZ\n", - "-0.002 * ZIZZIIZZZIZZIYIZXYIZ\n", - "+0.002 * ZIZZIIZZZIZZIYIZYXIZ\n", - "+0.002 * IIIIIIIIIIIZZZXYZYII\n", - "+0.002 * IIIIIIIIIIIZZZXXZXII\n", - "+0.000 * IIIIIIIIIIIZZZYYZXII\n", - "+0.000 * ZIZZIIZZZIZZIZXYIYIZ\n", - "-0.002 * ZIZZIIZZZIZZIZYXIYIZ\n", - "+0.002 * ZIZZIIZZZIZZIZYYIXIZ\n", - "+0.000 * IIIIIIIIIIIZZXIYZYII\n", - "+0.000 * IIIIIIIIIIIZZXIXZXII\n", - "+0.000 * IIIIIIIIIIIZZYIYZXII\n", - "+0.000 * ZIZZIIZZZIZZIXIYIYIZ\n", - "-0.000 * ZIZZIIZZZIZZIYIXIYIZ\n", - "+0.000 * ZIZZIIZZZIZZIYIYIXIZ\n", - "+0.001 * IIIIIIIIIIIXYZZZZYII\n", - "+0.004 * IIIIIIIIIIIXXZZZZXII\n", - "+0.003 * IIIIIIIIIIIYYZZZZXII\n", - "+0.003 * ZIZZIIZZZIZXYZZIIYIZ\n", - "-0.004 * ZIZZIIZZZIZYXZZIIYIZ\n", - "+0.001 * ZIZZIIZZZIZYYZZIIXIZ\n", - "-0.011 * IIIIIIIIIIIZXIIIZIII\n", - "+0.011 * ZIZZIIZZZIZZXIIZIIIZ\n", - "-0.000 * IIIIIIIIIIIXIIYZYIII\n", - "-0.000 * IIIIIIIIIIIXIIXZXIII\n", - "+0.000 * IIIIIIIIIIIYIIYZXIII\n", - "-0.000 * ZIZZIIZZZIZXZIXIXIIZ\n", - "+0.000 * ZIZZIIZZZIZYZIYIXIIZ\n", - "-0.000 * ZIZZIIZZZIZYZIXIYIIZ\n", - "+0.009 * IIIIIIIIIIIXIYZZYIII\n", - "+0.007 * IIIIIIIIIIIXIXZZXIII\n", - "-0.003 * IIIIIIIIIIIYIYZZXIII\n", - "+0.003 * ZIZZIIZZZIZXZXZIXIIZ\n", - "-0.007 * ZIZZIIZZZIZYZYZIXIIZ\n", - "+0.009 * ZIZZIIZZZIZYZXZIYIIZ\n", - "-0.011 * IIIIIIIIIIIZXIIZIIII\n", - "+0.011 * ZIZZIIZZZIZZXIIIZIIZ\n", - "+0.009 * IIIIIIIIIIIXIIYYIIII\n", - "+0.007 * IIIIIIIIIIIXIIXXIIII\n", - "-0.003 * IIIIIIIIIIIYIIYXIIII\n", - "+0.003 * ZIZZIIZZZIZXZIXXZIIZ\n", - "-0.007 * ZIZZIIZZZIZYZIYXZIIZ\n", - "+0.009 * ZIZZIIZZZIZYZIXYZIIZ\n", - "+0.000 * IIIIIIIIIIIXIYZYIIII\n", - "+0.000 * IIIIIIIIIIIXIXZXIIII\n", - "-0.000 * IIIIIIIIIIIYIYZXIIII\n", - "+0.000 * ZIZZIIZZZIZXZXZXZIIZ\n", - "-0.000 * ZIZZIIZZZIZYZYZXZIIZ\n", - "+0.000 * ZIZZIIZZZIZYZXZYZIIZ\n", - "-0.006 * IIIIIIIIIIIZXIZIIIII\n", - "+0.006 * ZIZZIIZZZIZZXIZZZIIZ\n", - "-0.006 * IIIIIIIIIIIZXZIIIIII\n", - "+0.006 * ZIZZIIZZZIZZXZIZZIIZ\n", - "+0.003 * IIIIIIIIIIIIXIIIIIII\n", - "-0.003 * ZIZZIIZZZIZIXIIZZIIZ\n", - "+0.133 * IZIIZZIIIZIIZIIZZIIZ\n", - "+0.011 * ZZIIIIZIIZZZZIIIIZIX\n", - "-0.011 * IZZZIIIZZZIZIIIZZZIX\n", - "-0.013 * ZZZZZZZZZZZZXIIIIIII\n", - "+0.013 * IZIIZZIIIZIZXIIZZIIZ\n", - "+0.058 * ZZIIIIZIIZXZZIIIIZIZ\n", - "-0.058 * IIZZZZIZZIXZZIIIIZIZ\n", - "-0.058 * ZZZZZZZZZZXIIIIIIIII\n", - "+0.058 * IIIIIIIIIIXIIIIIIIII\n", - "+0.005 * ZZZZZZZZZZXZZZZZZXII\n", - "-0.005 * IIIIIIIIIIXZZZZZZXII\n", - "+0.005 * IZIIZZIIIZYZIZZIIYIZ\n", - "-0.005 * ZIZZIIZZZIYZIZZIIYIZ\n", - "+0.014 * ZZZZZZZZZZXXIIIIIIII\n", - "-0.014 * IIIIIIIIIIXXIIIIIIII\n", - "+0.014 * IZIIZZIIIZYYZIIZZIIZ\n", - "-0.014 * ZIZZIIZZZIYYZIIZZIIZ\n", - "+0.011 * IZIIZZIIIXZIZIIZZIIZ\n", - "-0.011 * ZIZZIIZZZXIIZIIZZIIZ\n", - "+0.016 * ZZIIIIZIIXIZZIIIIZIX\n", - "-0.016 * IIZZZZIZZXZZZIIIIZIX\n", - "-0.016 * IZZZIIIZZXZZIIIZZZIX\n", - "+0.016 * ZIIIZZZIIXIZIIIZZZIX\n", - "+0.004 * ZZZZZZZZZXIZXIIIIIII\n", - "-0.004 * IIIIIIIIIXZZXIIIIIII\n", - "-0.004 * IZIIZZIIIXZZXIIZZIIZ\n", - "+0.004 * ZIZZIIZZZXIZXIIZZIIZ\n", - "+0.018 * ZZZZZZZZXIIZZZZZZZZI\n", - "-0.018 * IIIIIIIIXZZZZZZZZZZI\n", - "-0.018 * IZZZIIIZXIZZIIIZZZIZ\n", - "+0.018 * ZIIIZZZIXZIZIIIZZZIZ\n", - "-0.001 * ZZZZZZZZXIIZZZXIIIII\n", - "+0.001 * IIIIIIIIXZZZZZXIIIII\n", - "-0.001 * IZIIZZIIYIZZIZYZZIIZ\n", - "+0.001 * ZIZZIIZZYZIZIZYZZIIZ\n", - "-0.000 * ZZZZZZZZXIIZZXIIIIII\n", - "+0.000 * IIIIIIIIXZZZZXIIIIII\n", - "-0.000 * IZIIZZIIYIZZIYIZZIIZ\n", - "+0.000 * ZIZZIIZZYZIZIYIZZIIZ\n", - "+0.018 * ZZZZZZZXIIIZZZZZZZXI\n", - "-0.018 * IIIIIIIXZZZZZZZZZZXI\n", - "+0.018 * IZIIZZIYZIZZIZZIIZYZ\n", - "-0.018 * ZIZZIIZYIZIZIZZIIZYZ\n", - "+0.000 * ZZZZZZZXIIIZZZXIIIII\n", - "-0.000 * IIIIIIIXZZZZZZXIIIII\n", - "+0.000 * IZIIZZIYZIZZIZYZZIIZ\n", - "-0.000 * ZIZZIIZYIZIZIZYZZIIZ\n", - "-0.001 * ZZZZZZZXIIIZZXIIIIII\n", - "+0.001 * IIIIIIIXZZZZZXIIIIII\n", - "-0.001 * IZIIZZIYZIZZIYIZZIIZ\n", - "+0.001 * ZIZZIIZYIZIZIYIZZIIZ\n", - "+0.005 * ZZIIIIXZZIIZZIIIIZIZ\n", - "-0.005 * IIZZZZXIIZZZZIIIIZIZ\n", - "-0.005 * ZZZZZZXIIIIIIIIIIIII\n", - "+0.005 * IIIIIIXZZZZIIIIIIIII\n", - "+0.012 * ZZZZZZXIIIIZZZZZZXII\n", - "-0.012 * IIIIIIXZZZZZZZZZZXII\n", - "+0.012 * IZIIZZYZZIZZIZZIIYIZ\n", - "-0.012 * ZIZZIIYIIZIZIZZIIYIZ\n", - "-0.001 * ZZZZZZXIIIIXIIIIIIII\n", - "+0.001 * IIIIIIXZZZZXIIIIIIII\n", - "-0.001 * IZIIZZYZZIZYZIIZZIIZ\n", - "+0.001 * ZIZZIIYIIZIYZIIZZIIZ\n", - "+0.015 * ZZZZZXIIIIIZZZZZXIII\n", - "-0.015 * IIIIIXZZZZZZZZZZXIII\n", - "-0.015 * IZIIZXZZZIZZIZZIXIIZ\n", - "+0.015 * ZIZZIXIIIZIZIZZIXIIZ\n", - "+0.015 * ZZZZXIIIIIIZZZZXIIII\n", - "-0.015 * IIIIXZZZZZZZZZZXIIII\n", - "-0.015 * IZIIXIZZZIZZIZZXZIIZ\n", - "+0.015 * ZIZZXZIIIZIZIZZXZIIZ\n", - "-0.001 * ZZZXIIIIIIIZZZZZZZZI\n", - "+0.001 * IIIXZZZZZZZZZZZZZZZI\n", - "+0.001 * IZZXZZZIIIZZIIIZZZIZ\n", - "-0.001 * ZIIXIIIZZZIZIIIZZZIZ\n", - "+0.000 * ZZZXIIIIIIIZZZZZZZXI\n", - "-0.000 * IIIXZZZZZZZZZZZZZZXI\n", - "+0.000 * IZIYIIZZZIZZIZZIIZYZ\n", - "-0.000 * ZIZYZZIIIZIZIZZIIZYZ\n", - "+0.009 * ZZZXIIIIIIIZZZXIIIII\n", - "-0.009 * IIIXZZZZZZZZZZXIIIII\n", - "+0.009 * IZIYIIZZZIZZIZYZZIIZ\n", - "-0.009 * ZIZYZZIIIZIZIZYZZIIZ\n", - "-0.000 * ZZXIIIIIIIIZZZZZZZZI\n", - "+0.000 * IIXZZZZZZZZZZZZZZZZI\n", - "+0.000 * IZXIZZZIIIZZIIIZZZIZ\n", - "-0.000 * ZIXZIIIZZZIZIIIZZZIZ\n", - "-0.001 * ZZXIIIIIIIIZZZZZZZXI\n", - "+0.001 * IIXZZZZZZZZZZZZZZZXI\n", - "-0.001 * IZYZIIZZZIZZIZZIIZYZ\n", - "+0.001 * ZIYIZZIIIZIZIZZIIZYZ\n", - "+0.009 * ZZXIIIIIIIIZZXIIIIII\n", - "-0.009 * IIXZZZZZZZZZZXIIIIII\n", - "+0.009 * IZYZIIZZZIZZIYIZZIIZ\n", - "-0.009 * ZIYIZZIIIZIZIYIZZIIZ\n", - "-0.013 * IXZZIIZZZIZIZIIZZIIZ\n", - "+0.013 * ZXIIZZIIIZIIZIIZZIIZ\n", - "+0.004 * ZXZZZZIZZIIZZIIIIZIX\n", - "-0.004 * IXIIIIZIIZZZZIIIIZIX\n", - "-0.004 * IXIIZZZIIIZZIIIZZZIX\n", - "+0.004 * ZXZZIIIZZZIZIIIZZZIX\n", - "+0.017 * ZXIIIIIIIIIZXIIIIIII\n", - "-0.017 * IXZZZZZZZZZZXIIIIIII\n", - "-0.017 * IXZZIIZZZIZZXIIZZIIZ\n", - "+0.017 * ZXIIZZIIIZIZXIIZZIIZ\n", - "+0.014 * XIZZZZIZZIIZZIIIIZIZ\n", - "-0.014 * XZIIIIZIIZZZZIIIIZIZ\n", - "-0.014 * XIIIIIIIIIIIIIIIIIII\n", - "+0.014 * XZZZZZZZZZZIIIIIIIII\n", - "-0.001 * XIIIIIIIIIIZZZZZZXII\n", - "+0.001 * XZZZZZZZZZZZZZZZZXII\n", - "-0.001 * YIZZIIZZZIZZIZZIIYIZ\n", - "+0.001 * YZIIZZIIIZIZIZZIIYIZ\n", - "+0.013 * XIIIIIIIIIIXIIIIIIII\n", - "-0.013 * XZZZZZZZZZZXIIIIIIII\n", - "+0.013 * YIZZIIZZZIZYZIIZZIIZ\n", - "-0.013 * YZIIZZIIIZIYZIIZZIIZ\n", - "+0.134 * ZIZZIIZZZIIIZIIZZIIZ\n", - "+0.008 * IIZZZZIZZIZZZIIIIZIX\n", - "-0.008 * ZIIIZZZIIIIZIIIZZZIX\n", - "-0.016 * IIIIIIIIIIZZXIIIIIII\n", - "+0.016 * ZIZZIIZZZIIZXIIZZIIZ\n", - "+0.008 * IIZZZZIZZYYZZIIIIZIZ\n", - "+0.008 * IIZZZZIZZXXZZIIIIZIZ\n", - "-0.008 * IIIIIIIIIYYIIIIIIIII\n", - "-0.008 * IIIIIIIIIXXIIIIIIIII\n", - "-0.012 * IIIIIIIIIYYZZZZZZXII\n", - "-0.012 * IIIIIIIIIXXZZZZZZXII\n", - "+0.012 * ZIZZIIZZZYXZIZZIIYIZ\n", - "-0.012 * ZIZZIIZZZXYZIZZIIYIZ\n", - "+0.005 * IIIIIIIIIYYXIIIIIIII\n", - "+0.005 * IIIIIIIIIXXXIIIIIIII\n", - "-0.005 * ZIZZIIZZZYXYZIIZZIIZ\n", - "+0.005 * ZIZZIIZZZXYYZIIZZIIZ\n", - "-0.000 * IIIIIIIIYZYZZZZZXIII\n", - "-0.000 * IIIIIIIIXZXZZZZZXIII\n", - "-0.000 * ZIZZIIZZXZXZIZZIXIIZ\n", - "-0.000 * ZIZZIIZZYZYZIZZIXIIZ\n", - "-0.014 * IIIIIIIIYZYZZZZXIIII\n", - "-0.014 * IIIIIIIIXZXZZZZXIIII\n", - "-0.014 * ZIZZIIZZXZXZIZZXZIIZ\n", - "-0.014 * ZIZZIIZZYZYZIZZXZIIZ\n", - "-0.014 * IIIIIIIYZZYZZZZZXIII\n", - "-0.014 * IIIIIIIXZZXZZZZZXIII\n", - "-0.014 * ZIZZIIZXIZXZIZZIXIIZ\n", - "-0.014 * ZIZZIIZYIZYZIZZIXIIZ\n", - "+0.000 * IIIIIIIYZZYZZZZXIIII\n", - "+0.000 * IIIIIIIXZZXZZZZXIIII\n", - "+0.000 * ZIZZIIZXIZXZIZZXZIIZ\n", - "+0.000 * ZIZZIIZYIZYZIZZXZIIZ\n", - "+0.016 * ZIZZIIXIIZXIZIIZZIIZ\n", - "+0.016 * ZIZZIIYIIZYIZIIZZIIZ\n", - "-0.016 * IIZZZZYIIZYZZIIIIZIX\n", - "-0.016 * IIZZZZXIIZXZZIIIIZIX\n", - "-0.016 * ZIIIZZXZZZXZIIIZZZIX\n", - "-0.016 * ZIIIZZYZZZYZIIIZZZIX\n", - "+0.002 * IIIIIIYZZZYZXIIIIIII\n", - "+0.002 * IIIIIIXZZZXZXIIIIIII\n", - "+0.002 * ZIZZIIXIIZXZXIIZZIIZ\n", - "+0.002 * ZIZZIIYIIZYZXIIZZIIZ\n", - "-0.001 * IIIIIYZZZZYZZZZZZZZI\n", - "-0.001 * IIIIIXZZZZXZZZZZZZZI\n", - "-0.001 * ZIIIZXIZZZXZIIIZZZIZ\n", - "-0.001 * ZIIIZYIZZZYZIIIZZZIZ\n", - "-0.016 * IIIIIYZZZZYZZZZZZZXI\n", - "-0.016 * IIIIIXZZZZXZZZZZZZXI\n", - "+0.016 * ZIZZIYIIIZXZIZZIIZYZ\n", - "-0.016 * ZIZZIXIIIZYZIZZIIZYZ\n", - "-0.000 * IIIIIYZZZZYZZZXIIIII\n", - "-0.000 * IIIIIXZZZZXZZZXIIIII\n", - "+0.000 * ZIZZIYIIIZXZIZYZZIIZ\n", - "-0.000 * ZIZZIXIIIZYZIZYZZIIZ\n", - "+0.006 * IIIIIYZZZZYZZXIIIIII\n", - "+0.006 * IIIIIXZZZZXZZXIIIIII\n", - "-0.006 * ZIZZIYIIIZXZIYIZZIIZ\n", - "+0.006 * ZIZZIXIIIZYZIYIZZIIZ\n", - "-0.016 * IIIIYZZZZZYZZZZZZZZI\n", - "-0.016 * IIIIXZZZZZXZZZZZZZZI\n", - "-0.016 * ZIIIXIIZZZXZIIIZZZIZ\n", - "-0.016 * ZIIIYIIZZZYZIIIZZZIZ\n", - "+0.001 * IIIIYZZZZZYZZZZZZZXI\n", - "+0.001 * IIIIXZZZZZXZZZZZZZXI\n", - "-0.001 * ZIZZYZIIIZXZIZZIIZYZ\n", - "+0.001 * ZIZZXZIIIZYZIZZIIZYZ\n", - "+0.006 * IIIIYZZZZZYZZZXIIIII\n", - "+0.006 * IIIIXZZZZZXZZZXIIIII\n", - "-0.006 * ZIZZYZIIIZXZIZYZZIIZ\n", - "+0.006 * ZIZZXZIIIZYZIZYZZIIZ\n", - "+0.000 * IIIIYZZZZZYZZXIIIIII\n", - "+0.000 * IIIIXZZZZZXZZXIIIIII\n", - "-0.000 * ZIZZYZIIIZXZIYIZZIIZ\n", - "+0.000 * ZIZZXZIIIZYZIYIZZIIZ\n", - "-0.000 * IIIYZZZZZZYZZZZZXIII\n", - "-0.000 * IIIXZZZZZZXZZZZZXIII\n", - "-0.000 * ZIZXZZIIIZXZIZZIXIIZ\n", - "-0.000 * ZIZYZZIIIZYZIZZIXIIZ\n", - "+0.008 * IIIYZZZZZZYZZZZXIIII\n", - "+0.008 * IIIXZZZZZZXZZZZXIIII\n", - "+0.008 * ZIZXZZIIIZXZIZZXZIIZ\n", - "+0.008 * ZIZYZZIIIZYZIZZXZIIZ\n", - "+0.008 * IIYZZZZZZZYZZZZZXIII\n", - "+0.008 * IIXZZZZZZZXZZZZZXIII\n", - "+0.008 * ZIXIZZIIIZXZIZZIXIIZ\n", - "+0.008 * ZIYIZZIIIZYZIZZIXIIZ\n", - "+0.000 * IIYZZZZZZZYZZZZXIIII\n", - "+0.000 * IIXZZZZZZZXZZZZXIIII\n", - "+0.000 * ZIXIZZIIIZXZIZZXZIIZ\n", - "+0.000 * ZIYIZZIIIZYZIZZXZIIZ\n", - "+0.024 * IYIIIIZIIZYZZIIIIZIZ\n", - "+0.024 * IXIIIIZIIZXZZIIIIZIZ\n", - "-0.024 * IYZZZZZZZZYIIIIIIIII\n", - "-0.024 * IXZZZZZZZZXIIIIIIIII\n", - "+0.005 * IYZZZZZZZZYZZZZZZXII\n", - "+0.005 * IXZZZZZZZZXZZZZZZXII\n", - "-0.005 * ZYIIZZIIIZXZIZZIIYIZ\n", - "+0.005 * ZXIIZZIIIZYZIZZIIYIZ\n", - "+0.012 * IYZZZZZZZZYXIIIIIIII\n", - "+0.012 * IXZZZZZZZZXXIIIIIIII\n", - "-0.012 * ZYIIZZIIIZXYZIIZZIIZ\n", - "+0.012 * ZXIIZZIIIZYYZIIZZIIZ\n", - "+0.006 * XZIIZZIIIZXIZIIZZIIZ\n", - "+0.006 * YZIIZZIIIZYIZIIZZIIZ\n", - "+0.007 * YZIIIIZIIZYZZIIIIZIX\n", - "+0.007 * XZIIIIZIIZXZZIIIIZIX\n", - "+0.007 * XZZZIIIZZZXZIIIZZZIX\n", - "+0.007 * YZZZIIIZZZYZIIIZZZIX\n", - "+0.014 * YZZZZZZZZZYZXIIIIIII\n", - "+0.014 * XZZZZZZZZZXZXIIIIIII\n", - "+0.014 * XZIIZZIIIZXZXIIZZIIZ\n", - "+0.014 * YZIIZZIIIZYZXIIZZIIZ\n", - "+0.113 * ZIZZIIZZZZZIZIIZZIIZ\n", - "-0.006 * IIZZZZIZZZIZZIIIIZIX\n", - "+0.006 * ZIIIZZZIIZZZIIIZZZIX\n", - "-0.005 * IIIIIIIIIZIZXIIIIIII\n", - "+0.005 * ZIZZIIZZZZZZXIIZZIIZ\n", - "-0.001 * IIIIIIIIYYIZZZZZZZZI\n", - "-0.001 * IIIIIIIIXXIZZZZZZZZI\n", - "+0.001 * ZIIIZZZIYYZZIIIZZZIZ\n", - "+0.001 * ZIIIZZZIXXZZIIIZZZIZ\n", - "-0.007 * IIIIIIIIYYIZZZXIIIII\n", - "-0.007 * IIIIIIIIXXIZZZXIIIII\n", - "+0.007 * ZIZZIIZZXYZZIZYZZIIZ\n", - "-0.007 * ZIZZIIZZYXZZIZYZZIIZ\n", - "-0.000 * IIIIIIIIYYIZZXIIIIII\n", - "-0.000 * IIIIIIIIXXIZZXIIIIII\n", - "+0.000 * ZIZZIIZZXYZZIYIZZIIZ\n", - "-0.000 * ZIZZIIZZYXZZIYIZZIIZ\n", - "-0.001 * IIIIIIIYZYIZZZZZZZXI\n", - "-0.001 * IIIIIIIXZXIZZZZZZZXI\n", - "+0.001 * ZIZZIIZXIYZZIZZIIZYZ\n", - "-0.001 * ZIZZIIZYIXZZIZZIIZYZ\n", - "+0.000 * IIIIIIIYZYIZZZXIIIII\n", - "+0.000 * IIIIIIIXZXIZZZXIIIII\n", - "-0.000 * ZIZZIIZXIYZZIZYZZIIZ\n", - "+0.000 * ZIZZIIZYIXZZIZYZZIIZ\n", - "-0.007 * IIIIIIIYZYIZZXIIIIII\n", - "-0.007 * IIIIIIIXZXIZZXIIIIII\n", - "+0.007 * ZIZZIIZXIYZZIYIZZIIZ\n", - "-0.007 * ZIZZIIZYIXZZIYIZZIIZ\n", - "-0.048 * IIZZZZYIIYIZZIIIIZIZ\n", - "-0.048 * IIZZZZXIIXIZZIIIIZIZ\n", - "+0.048 * IIIIIIYZZYIIIIIIIIII\n", - "+0.048 * IIIIIIXZZXIIIIIIIIII\n", - "+0.011 * IIIIIIYZZYIZZZZZZXII\n", - "+0.011 * IIIIIIXZZXIZZZZZZXII\n", - "-0.011 * ZIZZIIXIIYZZIZZIIYIZ\n", - "+0.011 * ZIZZIIYIIXZZIZZIIYIZ\n", - "-0.009 * IIIIIIYZZYIXIIIIIIII\n", - "-0.009 * IIIIIIXZZXIXIIIIIIII\n", - "+0.009 * ZIZZIIXIIYZYZIIZZIIZ\n", - "-0.009 * ZIZZIIYIIXZYZIIZZIIZ\n", - "+0.008 * IIIIIYZZZYIZZZZZXIII\n", - "+0.008 * IIIIIXZZZXIZZZZZXIII\n", - "-0.008 * ZIZZIYIIIYZZIZZIXIIZ\n", - "-0.008 * ZIZZIXIIIXZZIZZIXIIZ\n", - "+0.008 * IIIIYZZZZYIZZZZXIIII\n", - "+0.008 * IIIIXZZZZXIZZZZXIIII\n", - "-0.008 * ZIZZYZIIIYZZIZZXZIIZ\n", - "-0.008 * ZIZZXZIIIXZZIZZXZIIZ\n", - "-0.013 * IIIYZZZZZYIZZZZZZZZI\n", - "-0.013 * IIIXZZZZZXIZZZZZZZZI\n", - "+0.013 * ZIIYIIIZZYZZIIIZZZIZ\n", - "+0.013 * ZIIXIIIZZXZZIIIZZZIZ\n", - "+0.001 * IIIYZZZZZYIZZZZZZZXI\n", - "+0.001 * IIIXZZZZZXIZZZZZZZXI\n", - "-0.001 * ZIZXZZIIIYZZIZZIIZYZ\n", - "+0.001 * ZIZYZZIIIXZZIZZIIZYZ\n", - "-0.000 * IIIYZZZZZYIZZZXIIIII\n", - "-0.000 * IIIXZZZZZXIZZZXIIIII\n", - "+0.000 * ZIZXZZIIIYZZIZYZZIIZ\n", - "-0.000 * ZIZYZZIIIXZZIZYZZIIZ\n", - "-0.001 * IIYZZZZZZYIZZZZZZZZI\n", - "-0.001 * IIXZZZZZZXIZZZZZZZZI\n", - "+0.001 * ZIYZIIIZZYZZIIIZZZIZ\n", - "+0.001 * ZIXZIIIZZXZZIIIZZZIZ\n", - "-0.013 * IIYZZZZZZYIZZZZZZZXI\n", - "-0.013 * IIXZZZZZZXIZZZZZZZXI\n", - "+0.013 * ZIXIZZIIIYZZIZZIIZYZ\n", - "-0.013 * ZIYIZZIIIXZZIZZIIZYZ\n", - "-0.000 * IIYZZZZZZYIZZXIIIIII\n", - "-0.000 * IIXZZZZZZXIZZXIIIIII\n", - "+0.000 * ZIXIZZIIIYZZIYIZZIIZ\n", - "-0.000 * ZIYIZZIIIXZZIYIZZIIZ\n", - "-0.004 * ZYIIZZIIIYZIZIIZZIIZ\n", - "-0.004 * ZXIIZZIIIXZIZIIZZIIZ\n", - "-0.013 * IYIIIIZIIYIZZIIIIZIX\n", - "-0.013 * IXIIIIZIIXIZZIIIIZIX\n", - "+0.013 * ZYZZIIIZZYZZIIIZZZIX\n", - "+0.013 * ZXZZIIIZZXZZIIIZZZIX\n", - "-0.007 * IYZZZZZZZYIZXIIIIIII\n", - "-0.007 * IXZZZZZZZXIZXIIIIIII\n", - "+0.007 * ZYIIZZIIIYZZXIIZZIIZ\n", - "+0.007 * ZXIIZZIIIXZZXIIZZIIZ\n", - "-0.000 * YZIIIIZIIYIZZIIIIZIZ\n", - "-0.000 * XZIIIIZIIXIZZIIIIZIZ\n", - "+0.000 * YZZZZZZZZYIIIIIIIIII\n", - "+0.000 * XZZZZZZZZXIIIIIIIIII\n", - "+0.007 * YZZZZZZZZYIZZZZZZXII\n", - "+0.007 * XZZZZZZZZXIZZZZZZXII\n", - "-0.007 * XZIIZZIIIYZZIZZIIYIZ\n", - "+0.007 * YZIIZZIIIXZZIZZIIYIZ\n", - "-0.004 * YZZZZZZZZYIXIIIIIIII\n", - "-0.004 * XZZZZZZZZXIXIIIIIIII\n", - "+0.004 * XZIIZZIIIYZYZIIZZIIZ\n", - "-0.004 * YZIIZZIIIXZYZIIZZIIZ\n", - "+0.123 * ZIZZIIZZIIZIZIIZZIIZ\n", - "+0.008 * IIZZZZIZIIIZZIIIIZIX\n", - "-0.008 * ZIIIZZZIZIZZIIIZZZIX\n", - "-0.006 * IIIIIIIIZIIZXIIIIIII\n", - "+0.006 * ZIZZIIZZIIZZXIIZZIIZ\n", - "+0.000 * IIIIIIYZYIIZZZZZXIII\n", - "+0.000 * IIIIIIXZXIIZZZZZXIII\n", - "+0.000 * ZIZZIIXIXIZZIZZIXIIZ\n", - "+0.000 * ZIZZIIYIYIZZIZZIXIIZ\n", - "+0.003 * IIIIIIYZYIIZZZZXIIII\n", - "+0.003 * IIIIIIXZXIIZZZZXIIII\n", - "+0.003 * ZIZZIIXIXIZZIZZXZIIZ\n", - "+0.003 * ZIZZIIYIYIZZIZZXZIIZ\n", - "+0.002 * IIZZZXZIXIIZZIIIIZIZ\n", - "+0.002 * IIZZZYZIYIIZZIIIIZIZ\n", - "+0.002 * IIIIIYZZYIIIIIIIIIII\n", - "+0.002 * IIIIIXZZXIIIIIIIIIII\n", - "+0.000 * IIIIIYZZYIIZZZZZZXII\n", - "+0.000 * IIIIIXZZXIIZZZZZZXII\n", - "-0.000 * ZIZZIYIIXIZZIZZIIYIZ\n", - "+0.000 * ZIZZIXIIYIZZIZZIIYIZ\n", - "-0.000 * IIIIIYZZYIIXIIIIIIII\n", - "-0.000 * IIIIIXZZXIIXIIIIIIII\n", - "+0.000 * ZIZZIYIIXIZYZIIZZIIZ\n", - "-0.000 * ZIZZIXIIYIZYZIIZZIIZ\n", - "+0.047 * IIZZXIZIXIIZZIIIIZIZ\n", - "+0.047 * IIZZYIZIYIIZZIIIIZIZ\n", - "+0.047 * IIIIYZZZYIIIIIIIIIII\n", - "+0.047 * IIIIXZZZXIIIIIIIIIII\n", - "+0.004 * IIIIYZZZYIIZZZZZZXII\n", - "+0.004 * IIIIXZZZXIIZZZZZZXII\n", - "-0.004 * ZIZZYZIIXIZZIZZIIYIZ\n", - "+0.004 * ZIZZXZIIYIZZIZZIIYIZ\n", - "-0.014 * IIIIYZZZYIIXIIIIIIII\n", - "-0.014 * IIIIXZZZXIIXIIIIIIII\n", - "+0.014 * ZIZZYZIIXIZYZIIZZIIZ\n", - "-0.014 * ZIZZXZIIYIZYZIIZZIIZ\n", - "+0.001 * ZIZXZZIIXIZIZIIZZIIZ\n", - "+0.001 * ZIZYZZIIYIZIZIIZZIIZ\n", - "+0.017 * IIZXIIZIXIIZZIIIIZIX\n", - "+0.017 * IIZYIIZIYIIZZIIIIZIX\n", - "+0.017 * ZIIYIIIZYIZZIIIZZZIX\n", - "+0.017 * ZIIXIIIZXIZZIIIZZZIX\n", - "-0.014 * IIIYZZZZYIIZXIIIIIII\n", - "-0.014 * IIIXZZZZXIIZXIIIIIII\n", - "-0.014 * ZIZXZZIIXIZZXIIZZIIZ\n", - "-0.014 * ZIZYZZIIYIZZXIIZZIIZ\n", - "+0.000 * ZIXIZZIIXIZIZIIZZIIZ\n", - "+0.000 * ZIYIZZIIYIZIZIIZZIIZ\n", - "+0.001 * IIXIIIZIXIIZZIIIIZIX\n", - "+0.001 * IIYIIIZIYIIZZIIIIZIX\n", - "+0.001 * ZIYZIIIZYIZZIIIZZZIX\n", - "+0.001 * ZIXZIIIZXIZZIIIZZZIX\n", - "-0.001 * IIYZZZZZYIIZXIIIIIII\n", - "-0.001 * IIXZZZZZXIIZXIIIIIII\n", - "-0.001 * ZIXIZZIIXIZZXIIZZIIZ\n", - "-0.001 * ZIYIZZIIYIZZXIIZZIIZ\n", - "-0.003 * IYZZZZZZYIIZZZZZZZZI\n", - "-0.003 * IXZZZZZZXIIZZZZZZZZI\n", - "+0.003 * ZYZZIIIZYIZZIIIZZZIZ\n", - "+0.003 * ZXZZIIIZXIZZIIIZZZIZ\n", - "-0.007 * IYZZZZZZYIIZZZXIIIII\n", - "-0.007 * IXZZZZZZXIIZZZXIIIII\n", - "+0.007 * ZYIIZZIIXIZZIZYZZIIZ\n", - "-0.007 * ZXIIZZIIYIZZIZYZZIIZ\n", - "-0.000 * IYZZZZZZYIIZZXIIIIII\n", - "-0.000 * IXZZZZZZXIIZZXIIIIII\n", - "+0.000 * ZYIIZZIIXIZZIYIZZIIZ\n", - "-0.000 * ZXIIZZIIYIZZIYIZZIIZ\n", - "-0.000 * YZZZZZZZYIIZZZZZXIII\n", - "-0.000 * XZZZZZZZXIIZZZZZXIII\n", - "-0.000 * XZIIZZIIXIZZIZZIXIIZ\n", - "-0.000 * YZIIZZIIYIZZIZZIXIIZ\n", - "-0.004 * YZZZZZZZYIIZZZZXIIII\n", - "-0.004 * XZZZZZZZXIIZZZZXIIII\n", - "-0.004 * XZIIZZIIXIZZIZZXZIIZ\n", - "-0.004 * YZIIZZIIYIZZIZZXZIIZ\n", - "+0.123 * ZIZZIIZIZIZIZIIZZIIZ\n", - "+0.008 * IIZZZZIIZIIZZIIIIZIX\n", - "-0.008 * ZIIIZZZZIIZZIIIZZZIX\n", - "-0.006 * IIIIIIIZIIIZXIIIIIII\n", - "+0.006 * ZIZZIIZIZIZZXIIZZIIZ\n", - "+0.003 * IIIIIIYYIIIZZZZZXIII\n", - "+0.003 * IIIIIIXXIIIZZZZZXIII\n", - "+0.003 * ZIZZIIXXZIZZIZZIXIIZ\n", - "+0.003 * ZIZZIIYYZIZZIZZIXIIZ\n", - "-0.000 * IIIIIIYYIIIZZZZXIIII\n", - "-0.000 * IIIIIIXXIIIZZZZXIIII\n", - "-0.000 * ZIZZIIXXZIZZIZZXZIIZ\n", - "-0.000 * ZIZZIIYYZIZZIZZXZIIZ\n", - "+0.047 * IIZZZXZXZIIZZIIIIZIZ\n", - "+0.047 * IIZZZYZYZIIZZIIIIZIZ\n", - "+0.047 * IIIIIYZYIIIIIIIIIIII\n", - "+0.047 * IIIIIXZXIIIIIIIIIIII\n", - "+0.004 * IIIIIYZYIIIZZZZZZXII\n", - "+0.004 * IIIIIXZXIIIZZZZZZXII\n", - "-0.004 * ZIZZIYIXZIZZIZZIIYIZ\n", - "+0.004 * ZIZZIXIYZIZZIZZIIYIZ\n", - "-0.014 * IIIIIYZYIIIXIIIIIIII\n", - "-0.014 * IIIIIXZXIIIXIIIIIIII\n", - "+0.014 * ZIZZIYIXZIZYZIIZZIIZ\n", - "-0.014 * ZIZZIXIYZIZYZIIZZIIZ\n", - "-0.002 * IIZZXIZXZIIZZIIIIZIZ\n", - "-0.002 * IIZZYIZYZIIZZIIIIZIZ\n", - "-0.002 * IIIIYZZYIIIIIIIIIIII\n", - "-0.002 * IIIIXZZXIIIIIIIIIIII\n", - "-0.000 * IIIIYZZYIIIZZZZZZXII\n", - "-0.000 * IIIIXZZXIIIZZZZZZXII\n", - "+0.000 * ZIZZYZIXZIZZIZZIIYIZ\n", - "-0.000 * ZIZZXZIYZIZZIZZIIYIZ\n", - "+0.000 * IIIIYZZYIIIXIIIIIIII\n", - "+0.000 * IIIIXZZXIIIXIIIIIIII\n", - "-0.000 * ZIZZYZIXZIZYZIIZZIIZ\n", - "+0.000 * ZIZZXZIYZIZYZIIZZIIZ\n", - "-0.000 * ZIZXZZIXZIZIZIIZZIIZ\n", - "-0.000 * ZIZYZZIYZIZIZIIZZIIZ\n", - "-0.001 * IIZXIIZXZIIZZIIIIZIX\n", - "-0.001 * IIZYIIZYZIIZZIIIIZIX\n", - "-0.001 * ZIIYIIIYIIZZIIIZZZIX\n", - "-0.001 * ZIIXIIIXIIZZIIIZZZIX\n", - "+0.001 * IIIYZZZYIIIZXIIIIIII\n", - "+0.001 * IIIXZZZXIIIZXIIIIIII\n", - "+0.001 * ZIZXZZIXZIZZXIIZZIIZ\n", - "+0.001 * ZIZYZZIYZIZZXIIZZIIZ\n", - "+0.001 * ZIXIZZIXZIZIZIIZZIIZ\n", - "+0.001 * ZIYIZZIYZIZIZIIZZIIZ\n", - "+0.017 * IIXIIIZXZIIZZIIIIZIX\n", - "+0.017 * IIYIIIZYZIIZZIIIIZIX\n", - "+0.017 * ZIYZIIIYIIZZIIIZZZIX\n", - "+0.017 * ZIXZIIIXIIZZIIIZZZIX\n", - "-0.014 * IIYZZZZYIIIZXIIIIIII\n", - "-0.014 * IIXZZZZXIIIZXIIIIIII\n", - "-0.014 * ZIXIZZIXZIZZXIIZZIIZ\n", - "-0.014 * ZIYIZZIYZIZZXIIZZIIZ\n", - "-0.003 * IYZZZZZYIIIZZZZZZZXI\n", - "-0.003 * IXZZZZZXIIIZZZZZZZXI\n", - "+0.003 * ZYIIZZIXZIZZIZZIIZYZ\n", - "-0.003 * ZXIIZZIYZIZZIZZIIZYZ\n", - "+0.000 * IYZZZZZYIIIZZZXIIIII\n", - "+0.000 * IXZZZZZXIIIZZZXIIIII\n", - "-0.000 * ZYIIZZIXZIZZIZYZZIIZ\n", - "+0.000 * ZXIIZZIYZIZZIZYZZIIZ\n", - "-0.007 * IYZZZZZYIIIZZXIIIIII\n", - "-0.007 * IXZZZZZXIIIZZXIIIIII\n", - "+0.007 * ZYIIZZIXZIZZIYIZZIIZ\n", - "-0.007 * ZXIIZZIYZIZZIYIZZIIZ\n", - "-0.004 * YZZZZZZYIIIZZZZZXIII\n", - "-0.004 * XZZZZZZXIIIZZZZZXIII\n", - "-0.004 * XZIIZZIXZIZZIZZIXIIZ\n", - "-0.004 * YZIIZZIYZIZZIZZIXIIZ\n", - "+0.000 * YZZZZZZYIIIZZZZXIIII\n", - "+0.000 * XZZZZZZXIIIZZZZXIIII\n", - "+0.000 * XZIIZZIXZIZZIZZXZIIZ\n", - "+0.000 * YZIIZZIYZIZZIZZXZIIZ\n", - "+0.117 * ZIZZIIIZZIZIZIIZZIIZ\n", - "-0.006 * IIZZZZZZZIIZZIIIIZIX\n", - "+0.006 * ZIIIZZIIIIZZIIIZZZIX\n", - "-0.008 * IIIIIIZIIIIZXIIIIIII\n", - "+0.008 * ZIZZIIIZZIZZXIIZZIIZ\n", - "+0.000 * IIIIIYYIIIIZZZZZZZZI\n", - "+0.000 * IIIIIXXIIIIZZZZZZZZI\n", - "+0.000 * ZIIIZXXIIIZZIIIZZZIZ\n", - "+0.000 * ZIIIZYYIIIZZIIIZZZIZ\n", - "+0.004 * IIIIIYYIIIIZZZZZZZXI\n", - "+0.004 * IIIIIXXIIIIZZZZZZZXI\n", - "-0.004 * ZIZZIYXZZIZZIZZIIZYZ\n", - "+0.004 * ZIZZIXYZZIZZIZZIIZYZ\n", - "+0.000 * IIIIIYYIIIIZZZXIIIII\n", - "+0.000 * IIIIIXXIIIIZZZXIIIII\n", - "-0.000 * ZIZZIYXZZIZZIZYZZIIZ\n", - "+0.000 * ZIZZIXYZZIZZIZYZZIIZ\n", - "-0.005 * IIIIIYYIIIIZZXIIIIII\n", - "-0.005 * IIIIIXXIIIIZZXIIIIII\n", - "+0.005 * ZIZZIYXZZIZZIYIZZIIZ\n", - "-0.005 * ZIZZIXYZZIZZIYIZZIIZ\n", - "+0.004 * IIIIYZYIIIIZZZZZZZZI\n", - "+0.004 * IIIIXZXIIIIZZZZZZZZI\n", - "+0.004 * ZIIIXIXIIIZZIIIZZZIZ\n", - "+0.004 * ZIIIYIYIIIZZIIIZZZIZ\n", - "-0.000 * IIIIYZYIIIIZZZZZZZXI\n", - "-0.000 * IIIIXZXIIIIZZZZZZZXI\n", - "+0.000 * ZIZZYZXZZIZZIZZIIZYZ\n", - "-0.000 * ZIZZXZYZZIZZIZZIIZYZ\n", - "-0.005 * IIIIYZYIIIIZZZXIIIII\n", - "-0.005 * IIIIXZXIIIIZZZXIIIII\n", - "+0.005 * ZIZZYZXZZIZZIZYZZIIZ\n", - "-0.005 * ZIZZXZYZZIZZIZYZZIIZ\n", - "-0.000 * IIIIYZYIIIIZZXIIIIII\n", - "-0.000 * IIIIXZXIIIIZZXIIIIII\n", - "+0.000 * ZIZZYZXZZIZZIYIZZIIZ\n", - "-0.000 * ZIZZXZYZZIZZIYIZZIIZ\n", - "+0.000 * IIIYZZYIIIIZZZZZXIII\n", - "+0.000 * IIIXZZXIIIIZZZZZXIII\n", - "+0.000 * ZIZXZZXZZIZZIZZIXIIZ\n", - "+0.000 * ZIZYZZYZZIZZIZZIXIIZ\n", - "-0.006 * IIIYZZYIIIIZZZZXIIII\n", - "-0.006 * IIIXZZXIIIIZZZZXIIII\n", - "-0.006 * ZIZXZZXZZIZZIZZXZIIZ\n", - "-0.006 * ZIZYZZYZZIZZIZZXZIIZ\n", - "-0.006 * IIYZZZYIIIIZZZZZXIII\n", - "-0.006 * IIXZZZXIIIIZZZZZXIII\n", - "-0.006 * ZIXIZZXZZIZZIZZIXIIZ\n", - "-0.006 * ZIYIZZYZZIZZIZZIXIIZ\n", - "-0.000 * IIYZZZYIIIIZZZZXIIII\n", - "-0.000 * IIXZZZXIIIIZZZZXIIII\n", - "-0.000 * ZIXIZZXZZIZZIZZXZIIZ\n", - "-0.000 * ZIYIZZYZZIZZIZZXZIIZ\n", - "+0.022 * IYIIIIYZZIIZZIIIIZIZ\n", - "+0.022 * IXIIIIXZZIIZZIIIIZIZ\n", - "-0.022 * IYZZZZYIIIIIIIIIIIII\n", - "-0.022 * IXZZZZXIIIIIIIIIIIII\n", - "-0.005 * IYZZZZYIIIIZZZZZZXII\n", - "-0.005 * IXZZZZXIIIIZZZZZZXII\n", - "+0.005 * ZYIIZZXZZIZZIZZIIYIZ\n", - "-0.005 * ZXIIZZYZZIZZIZZIIYIZ\n", - "+0.008 * IYZZZZYIIIIXIIIIIIII\n", - "+0.008 * IXZZZZXIIIIXIIIIIIII\n", - "-0.008 * ZYIIZZXZZIZYZIIZZIIZ\n", - "+0.008 * ZXIIZZYZZIZYZIIZZIIZ\n", - "-0.007 * XZIIZZXZZIZIZIIZZIIZ\n", - "-0.007 * YZIIZZYZZIZIZIIZZIIZ\n", - "+0.012 * YZIIIIYZZIIZZIIIIZIX\n", - "+0.012 * XZIIIIXZZIIZZIIIIZIX\n", - "+0.012 * XZZZIIXIIIZZIIIZZZIX\n", - "+0.012 * YZZZIIYIIIZZIIIZZZIX\n", - "+0.007 * YZZZZZYIIIIZXIIIIIII\n", - "+0.007 * XZZZZZXIIIIZXIIIIIII\n", - "+0.007 * XZIIZZXZZIZZXIIZZIIZ\n", - "+0.007 * YZIIZZYZZIZZXIIZZIIZ\n", - "+0.122 * ZIZZIZZZZIZIZIIZZIIZ\n", - "-0.007 * IIZZZIIZZIIZZIIIIZIX\n", - "+0.007 * ZIIIZIZIIIZZIIIZZZIX\n", - "-0.017 * IIIIIZIIIIIZXIIIIIII\n", - "+0.017 * ZIZZIZZZZIZZXIIZZIIZ\n", - "+0.001 * IIZXIXIZZIIZZIIIIZIZ\n", - "+0.001 * IIZYIYIZZIIZZIIIIZIZ\n", - "+0.001 * IIIYZYIIIIIIIIIIIIII\n", - "+0.001 * IIIXZXIIIIIIIIIIIIII\n", - "+0.000 * IIIYZYIIIIIZZZZZZXII\n", - "+0.000 * IIIXZXIIIIIZZZZZZXII\n", - "-0.000 * ZIZXZYZZZIZZIZZIIYIZ\n", - "+0.000 * ZIZYZXZZZIZZIZZIIYIZ\n", - "-0.000 * IIIYZYIIIIIXIIIIIIII\n", - "-0.000 * IIIXZXIIIIIXIIIIIIII\n", - "+0.000 * ZIZXZYZZZIZYZIIZZIIZ\n", - "-0.000 * ZIZYZXZZZIZYZIIZZIIZ\n", - "-0.038 * IIXIIXIZZIIZZIIIIZIZ\n", - "-0.038 * IIYIIYIZZIIZZIIIIZIZ\n", - "-0.038 * IIYZZYIIIIIIIIIIIIII\n", - "-0.038 * IIXZZXIIIIIIIIIIIIII\n", - "-0.007 * IIYZZYIIIIIZZZZZZXII\n", - "-0.007 * IIXZZXIIIIIZZZZZZXII\n", - "+0.007 * ZIXIZYZZZIZZIZZIIYIZ\n", - "-0.007 * ZIYIZXZZZIZZIZZIIYIZ\n", - "+0.013 * IIYZZYIIIIIXIIIIIIII\n", - "+0.013 * IIXZZXIIIIIXIIIIIIII\n", - "-0.013 * ZIXIZYZZZIZYZIIZZIIZ\n", - "+0.013 * ZIYIZXZZZIZYZIIZZIIZ\n", - "+0.006 * IYZZZYIIIIIZZZZZXIII\n", - "+0.006 * IXZZZXIIIIIZZZZZXIII\n", - "-0.006 * ZYIIZYZZZIZZIZZIXIIZ\n", - "-0.006 * ZXIIZXZZZIZZIZZIXIIZ\n", - "-0.000 * YZZZZYIIIIIZZZZZZZZI\n", - "-0.000 * XZZZZXIIIIIZZZZZZZZI\n", - "-0.000 * XZZZIXZIIIZZIIIZZZIZ\n", - "-0.000 * YZZZIYZIIIZZIIIZZZIZ\n", - "-0.005 * YZZZZYIIIIIZZZZZZZXI\n", - "-0.005 * XZZZZXIIIIIZZZZZZZXI\n", - "+0.005 * XZIIZYZZZIZZIZZIIZYZ\n", - "-0.005 * YZIIZXZZZIZZIZZIIZYZ\n", - "-0.000 * YZZZZYIIIIIZZZXIIIII\n", - "-0.000 * XZZZZXIIIIIZZZXIIIII\n", - "+0.000 * XZIIZYZZZIZZIZYZZIIZ\n", - "-0.000 * YZIIZXZZZIZZIZYZZIIZ\n", - "+0.004 * YZZZZYIIIIIZZXIIIIII\n", - "+0.004 * XZZZZXIIIIIZZXIIIIII\n", - "-0.004 * XZIIZYZZZIZZIYIZZIIZ\n", - "+0.004 * YZIIZXZZZIZZIYIZZIIZ\n", - "+0.122 * ZIZZZIZZZIZIZIIZZIIZ\n", - "-0.007 * IIZZIZIZZIIZZIIIIZIX\n", - "+0.007 * ZIIIIZZIIIZZIIIZZZIX\n", - "-0.017 * IIIIZIIIIIIZXIIIIIII\n", - "+0.017 * ZIZZZIZZZIZZXIIZZIIZ\n", - "-0.038 * IIZXXZIZZIIZZIIIIZIZ\n", - "-0.038 * IIZYYZIZZIIZZIIIIZIZ\n", - "-0.038 * IIIYYIIIIIIIIIIIIIII\n", - "-0.038 * IIIXXIIIIIIIIIIIIIII\n", - "-0.007 * IIIYYIIIIIIZZZZZZXII\n", - "-0.007 * IIIXXIIIIIIZZZZZZXII\n", - "+0.007 * ZIZXYIZZZIZZIZZIIYIZ\n", - "-0.007 * ZIZYXIZZZIZZIZZIIYIZ\n", - "+0.013 * IIIYYIIIIIIXIIIIIIII\n", - "+0.013 * IIIXXIIIIIIXIIIIIIII\n", - "-0.013 * ZIZXYIZZZIZYZIIZZIIZ\n", - "+0.013 * ZIZYXIZZZIZYZIIZZIIZ\n", - "-0.001 * IIXIXZIZZIIZZIIIIZIZ\n", - "-0.001 * IIYIYZIZZIIZZIIIIZIZ\n", - "-0.001 * IIYZYIIIIIIIIIIIIIII\n", - "-0.001 * IIXZXIIIIIIIIIIIIIII\n", - "-0.000 * IIYZYIIIIIIZZZZZZXII\n", - "-0.000 * IIXZXIIIIIIZZZZZZXII\n", - "+0.000 * ZIXIYIZZZIZZIZZIIYIZ\n", - "-0.000 * ZIYIXIZZZIZZIZZIIYIZ\n", - "+0.000 * IIYZYIIIIIIXIIIIIIII\n", - "+0.000 * IIXZXIIIIIIXIIIIIIII\n", - "-0.000 * ZIXIYIZZZIZYZIIZZIIZ\n", - "+0.000 * ZIYIXIZZZIZYZIIZZIIZ\n", - "+0.006 * IYZZYIIIIIIZZZZXIIII\n", - "+0.006 * IXZZXIIIIIIZZZZXIIII\n", - "-0.006 * ZYIIYIZZZIZZIZZXZIIZ\n", - "-0.006 * ZXIIXIZZZIZZIZZXZIIZ\n", - "-0.005 * YZZZYIIIIIIZZZZZZZZI\n", - "-0.005 * XZZZXIIIIIIZZZZZZZZI\n", - "-0.005 * XZZZXZZIIIZZIIIZZZIZ\n", - "-0.005 * YZZZYZZIIIZZIIIZZZIZ\n", - "+0.000 * YZZZYIIIIIIZZZZZZZXI\n", - "+0.000 * XZZZXIIIIIIZZZZZZZXI\n", - "-0.000 * XZIIYIZZZIZZIZZIIZYZ\n", - "+0.000 * YZIIXIZZZIZZIZZIIZYZ\n", - "+0.004 * YZZZYIIIIIIZZZXIIIII\n", - "+0.004 * XZZZXIIIIIIZZZXIIIII\n", - "-0.004 * XZIIYIZZZIZZIZYZZIIZ\n", - "+0.004 * YZIIXIZZZIZZIZYZZIIZ\n", - "+0.000 * YZZZYIIIIIIZZXIIIIII\n", - "+0.000 * XZZZXIIIIIIZZXIIIIII\n", - "-0.000 * XZIIYIZZZIZZIYIZZIIZ\n", - "+0.000 * YZIIXIZZZIZZIYIZZIIZ\n", - "+0.125 * ZIZIIIZZZIZIZIIZZIIZ\n", - "+0.011 * IIZIZZIZZIIZZIIIIZIX\n", - "-0.011 * ZIIZZZZIIIZZIIIZZZIX\n", - "-0.001 * IIIZIIIIIIIZXIIIIIII\n", - "+0.001 * ZIZIIIZZZIZZXIIZZIIZ\n", - "-0.013 * IYZYIIIIIIIZZZZZZZZI\n", - "-0.013 * IXZXIIIIIIIZZZZZZZZI\n", - "+0.013 * ZYZYZZZIIIZZIIIZZZIZ\n", - "+0.013 * ZXZXZZZIIIZZIIIZZZIZ\n", - "+0.001 * IYZYIIIIIIIZZZZZZZXI\n", - "+0.001 * IXZXIIIIIIIZZZZZZZXI\n", - "-0.001 * ZYIXIIZZZIZZIZZIIZYZ\n", - "+0.001 * ZXIYIIZZZIZZIZZIIZYZ\n", - "-0.004 * IYZYIIIIIIIZZZXIIIII\n", - "-0.004 * IXZXIIIIIIIZZZXIIIII\n", - "+0.004 * ZYIXIIZZZIZZIZYZZIIZ\n", - "-0.004 * ZXIYIIZZZIZZIZYZZIIZ\n", - "-0.000 * YZZYIIIIIIIZZZZZXIII\n", - "-0.000 * XZZXIIIIIIIZZZZZXIII\n", - "-0.000 * XZIXIIZZZIZZIZZIXIIZ\n", - "-0.000 * YZIYIIZZZIZZIZZIXIIZ\n", - "+0.007 * YZZYIIIIIIIZZZZXIIII\n", - "+0.007 * XZZXIIIIIIIZZZZXIIII\n", - "+0.007 * XZIXIIZZZIZZIZZXZIIZ\n", - "+0.007 * YZIYIIZZZIZZIZZXZIIZ\n", - "+0.125 * ZIIZIIZZZIZIZIIZZIIZ\n", - "+0.011 * IIIZZZIZZIIZZIIIIZIX\n", - "-0.011 * ZIZIZZZIIIZZIIIZZZIX\n", - "-0.001 * IIZIIIIIIIIZXIIIIIII\n", - "+0.001 * ZIIZIIZZZIZZXIIZZIIZ\n", - "-0.001 * IYYIIIIIIIIZZZZZZZZI\n", - "-0.001 * IXXIIIIIIIIZZZZZZZZI\n", - "+0.001 * ZYYIZZZIIIZZIIIZZZIZ\n", - "+0.001 * ZXXIZZZIIIZZIIIZZZIZ\n", - "-0.013 * IYYIIIIIIIIZZZZZZZXI\n", - "-0.013 * IXXIIIIIIIIZZZZZZZXI\n", - "+0.013 * ZYXZIIZZZIZZIZZIIZYZ\n", - "-0.013 * ZXYZIIZZZIZZIZZIIZYZ\n", - "-0.004 * IYYIIIIIIIIZZXIIIIII\n", - "-0.004 * IXXIIIIIIIIZZXIIIIII\n", - "+0.004 * ZYXZIIZZZIZZIYIZZIIZ\n", - "-0.004 * ZXYZIIZZZIZZIYIZZIIZ\n", - "+0.007 * YZYIIIIIIIIZZZZZXIII\n", - "+0.007 * XZXIIIIIIIIZZZZZXIII\n", - "+0.007 * XZXZIIZZZIZZIZZIXIIZ\n", - "+0.007 * YZYZIIZZZIZZIZZIXIIZ\n", - "+0.000 * YZYIIIIIIIIZZZZXIIII\n", - "+0.000 * XZXIIIIIIIIZZZZXIIII\n", - "+0.000 * XZXZIIZZZIZZIZZXZIIZ\n", - "+0.000 * YZYZIIZZZIZZIZZXZIIZ\n", - "+0.133 * ZZZZIIZZZIZIZIIZZIIZ\n", - "+0.012 * IZZZZZIZZIIZZIIIIZIX\n", - "-0.012 * ZZIIZZZIIIZZIIIZZZIX\n", - "-0.010 * IZIIIIIIIIIZXIIIIIII\n", - "+0.010 * ZZZZIIZZZIZZXIIZZIIZ\n", - "+0.045 * YYZZZZIZZIIZZIIIIZIZ\n", - "+0.045 * XXZZZZIZZIIZZIIIIZIZ\n", - "-0.045 * YYIIIIIIIIIIIIIIIIII\n", - "-0.045 * XXIIIIIIIIIIIIIIIIII\n", - "+0.004 * YYIIIIIIIIIZZZZZZXII\n", - "+0.004 * XXIIIIIIIIIZZZZZZXII\n", - "-0.004 * XYZZIIZZZIZZIZZIIYIZ\n", - "+0.004 * YXZZIIZZZIZZIZZIIYIZ\n", - "+0.012 * YYIIIIIIIIIXIIIIIIII\n", - "+0.012 * XXIIIIIIIIIXIIIIIIII\n", - "-0.012 * XYZZIIZZZIZYZIIZZIIZ\n", - "+0.012 * YXZZIIZZZIZYZIIZZIIZ\n", - "+0.143 * IIZZIIZZZIZIZIIZZIIZ\n", - "+0.018 * ZIZZZZIZZIIZZIIIIZIX\n", - "-0.018 * IIIIZZZIIIZZIIIZZZIX\n", - "-0.009 * ZIIIIIIIIIIZXIIIIIII\n", - "+0.009 * IIZZIIZZZIZZXIIZZIIZ\n", - "+0.101 * ZIIIZZZIIIZZIIIZZZIZ\n", - "+0.000 * ZIZZIIZZZIZZYIIZZIIY\n", - "+0.000 * ZIZZIIZZZIZZXIIZZIIX\n", - "+0.109 * ZIZZIIZZZIZZIZZIIZZI\n", - "+0.003 * ZIZZIIZZZIZZIZXZZIII\n", - "-0.003 * ZIIIZZZIIIZZIIXIIIZI\n", - "+0.000 * ZIZZIIZZZIZZIXIZZIII\n", - "-0.000 * ZIIIZZZIIIZZIXZIIIZI\n", - "+0.109 * ZIIIZZZIIIZZIIIZZZZI\n", - "+0.000 * ZIIIZZZIIIZZIIYIIIYI\n", - "+0.000 * ZIIIZZZIIIZZIIXIIIXI\n", - "-0.003 * ZIIIZZZIIIZZIYZIIIYI\n", - "-0.003 * ZIIIZZZIIIZZIXZIIIXI\n", - "+0.102 * ZIIIZZZIIIZZIIIZZIII\n", - "-0.000 * ZIIIZZZIIIZXZZZIIXII\n", - "-0.000 * ZIIIZZZIIIZYZZZIIYII\n", - "+0.108 * ZIIIZZZIIIZZIIIZIZII\n", - "+0.108 * ZIIIZZZIIIZZIIIIZZII\n", - "+0.117 * ZIIIZZZIIIZZIIZZZZII\n", - "+0.117 * ZIIIZZZIIIZZIZIZZZII\n", - "+0.116 * ZIIIZZZIIIZZZIIZZZII\n", - "+0.127 * ZIIIZZZIIIZIIIIZZZII\n", - "+0.017 * ZIZZIIZZZIZZIZZIIXII\n", - "-0.017 * IIZZZZIZZIIIIZZZZXII\n", - "+0.010 * ZIZZIIZZZIZXZIIZZIII\n", - "-0.010 * IIZZZZIZZIIXZIIIIZII\n", - "+0.000 * ZIIIZZZIIIZZIIIZXIZX\n", - "+0.000 * ZIZZIIZZZIZZIZZIYIIY\n", - "-0.000 * ZIIIZZZIIIZZIIIZYIZY\n", - "+0.000 * IIZZZZIZZIIIIZZZXZIX\n", - "-0.000 * IIIIIIIIIIIIIIIIXZZX\n", - "-0.000 * IIZZZZIZZIIIIZZZYZIY\n", - "+0.003 * ZIIIZZZIIIZZIIIXIIZX\n", - "+0.011 * ZIZZIIZZZIZZIZZYZIIY\n", - "-0.008 * ZIIIZZZIIIZZIIIYIIZY\n", - "+0.008 * IIZZZZIZZIIIIZZXIZIX\n", - "-0.011 * IIIIIIIIIIIIIIIXZZZX\n", - "-0.003 * IIZZZZIZZIIIIZZYIZIY\n", - "+0.003 * ZIIIZZZIIIZZIIIZXIXX\n", - "+0.011 * ZIIIZZZIIIZZIIIZXIYY\n", - "-0.008 * ZIIIZZZIIIZZIIIZYIXY\n", - "-0.008 * IIIIIIIIIIIIIIIIYZYX\n", - "-0.011 * IIIIIIIIIIIIIIIIXZXX\n", - "-0.003 * IIIIIIIIIIIIIIIIXZYY\n", - "-0.000 * ZIIIZZZIIIZZIIIXIIXX\n", - "-0.000 * ZIIIZZZIIIZZIIIXIIYY\n", - "+0.000 * ZIIIZZZIIIZZIIIYIIXY\n", - "+0.000 * IIIIIIIIIIIIIIIYZZYX\n", - "+0.000 * IIIIIIIIIIIIIIIXZZXX\n", - "+0.000 * IIIIIIIIIIIIIIIXZZYY\n", - "+0.023 * ZIIIZZZIIIZZYZZIIYIX\n", - "-0.023 * ZIIIZZZIIIZZYZZIIXIY\n", - "-0.001 * ZIIIZZZIIIZZXZZIIYIY\n", - "-0.001 * IIIIIIIIIIIIYZZZZYIX\n", - "+0.023 * IIIIIIIIIIIIXZZZZXIX\n", - "+0.023 * IIIIIIIIIIIIXZZZZYIY\n", - "-0.000 * ZIIIZZZIIIZZIIYIYZIX\n", - "+0.000 * ZIIIZZZIIIZZIIYIXZIY\n", - "-0.000 * ZIIIZZZIIIZZIIXIYZIY\n", - "-0.000 * IIIIIIIIIIIIIIYZYIIX\n", - "-0.000 * IIIIIIIIIIIIIIXZXIIX\n", - "-0.000 * IIIIIIIIIIIIIIXZYIIY\n", - "+0.005 * ZIIIZZZIIIZZIYZIYZIX\n", - "-0.009 * ZIIIZZZIIIZZIYZIXZIY\n", - "+0.005 * ZIIIZZZIIIZZIXZIYZIY\n", - "+0.005 * IIIIIIIIIIIIIYZZYIIX\n", - "+0.009 * IIIIIIIIIIIIIXZZXIIX\n", - "+0.005 * IIIIIIIIIIIIIXZZYIIY\n", - "+0.005 * ZIIIZZZIIIZZIIYYZZIX\n", - "-0.009 * ZIIIZZZIIIZZIIYXZZIY\n", - "+0.005 * ZIIIZZZIIIZZIIXYZZIY\n", - "+0.005 * IIIIIIIIIIIIIIYYIIIX\n", - "+0.009 * IIIIIIIIIIIIIIXXIIIX\n", - "+0.005 * IIIIIIIIIIIIIIXYIIIY\n", - "+0.000 * ZIIIZZZIIIZZIYZYZZIX\n", - "-0.000 * ZIIIZZZIIIZZIYZXZZIY\n", - "+0.000 * ZIIIZZZIIIZZIXZYZZIY\n", - "+0.000 * IIIIIIIIIIIIIYZYIIIX\n", - "+0.000 * IIIIIIIIIIIIIXZXIIIX\n", - "+0.000 * IIIIIIIIIIIIIXZYIIIY\n", - "-0.007 * ZIIIZZZIIIZXXIIZZZIX\n", - "-0.014 * ZIIIZZZIIIZXYIIZZZIY\n", - "+0.007 * ZIIIZZZIIIZYXIIZZZIY\n", - "+0.007 * IIIIIIIIIIIYYIIIIIIX\n", - "+0.014 * IIIIIIIIIIIXXIIIIIIX\n", - "+0.007 * IIIIIIIIIIIXYIIIIIIY\n", - "+0.012 * ZIIIZZZIIIZZIIIZZXZZ\n", - "-0.012 * IIIIIIIIIIIIIIIIIXZZ\n", - "+0.000 * ZIIIZZZIIIZXZZZIIIZZ\n", - "-0.000 * IIIIIIIIIIIXZZZZZZZZ\n", - "+0.010 * ZIIIZZZIIIZZIIYIIYIZ\n", - "+0.002 * ZIZZIIZZZIZZIZXZZXZZ\n", - "-0.008 * ZIZZIIZZZIZZIZYZZYZZ\n", - "-0.008 * IIIIIIIIIIIIIIYZZYIZ\n", - "+0.002 * IIIIIIIIIIIIIIXZZXIZ\n", - "+0.010 * IIZZZZIZZIIIIZYIIYZZ\n", - "+0.001 * ZIIIZZZIIIZZIYZIIYIZ\n", - "+0.000 * ZIZZIIZZZIZZIXIZZXZZ\n", - "-0.000 * ZIZZIIZZZIZZIYIZZYZZ\n", - "-0.000 * IIIIIIIIIIIIIYZZZYIZ\n", - "+0.000 * IIIIIIIIIIIIIXZZZXIZ\n", - "+0.001 * IIZZZZIZZIIIIYIIIYZZ\n", - "+0.001 * ZIIIZZZIIIZZYZZIYZIZ\n", - "-0.000 * ZIZZIIZZZIZZYIIZYZZZ\n", - "+0.000 * ZIZZIIZZZIZZXIIZXZZZ\n", - "-0.000 * IIIIIIIIIIIIYZZZYIIZ\n", - "+0.000 * IIIIIIIIIIIIXZZZXIIZ\n", - "-0.001 * IIZZZZIZZIIIXIIIXIZZ\n", - "+0.017 * ZIIIZZZIIIZZYZZYZZIZ\n", - "-0.013 * ZIZZIIZZZIZZYIIYIZZZ\n", - "+0.003 * ZIZZIIZZZIZZXIIXIZZZ\n", - "-0.003 * IIIIIIIIIIIIYZZYIIIZ\n", - "+0.013 * IIIIIIIIIIIIXZZXIIIZ\n", - "-0.017 * IIZZZZIZZIIIXIIXZIZZ\n", - "-0.011 * ZIIIZZZIIIZXZZXZZZIZ\n", - "+0.008 * ZIZZIIZZZIZXZIXIIZZZ\n", - "-0.003 * ZIZZIIZZZIZYZIYIIZZZ\n", - "-0.003 * IIIIIIIIIIIYZZYIIIIZ\n", - "+0.008 * IIIIIIIIIIIXZZXIIIIZ\n", - "-0.011 * IIZZZZIZZIIXZIXZZIZZ\n", - "-0.001 * ZIIIZZZIIIZXZXIZZZIZ\n", - "+0.000 * ZIZZIIZZZIZXZXZIIZZZ\n", - "-0.000 * ZIZZIIZZZIZYZYZIIZZZ\n", - "-0.000 * IIIIIIIIIIIYZYIIIIIZ\n", - "+0.000 * IIIIIIIIIIIXZXIIIIIZ\n", - "-0.001 * IIZZZZIZZIIXZXZZZIZZ\n", - "+0.012 * ZIZZIIZZZIZZIZZIIXZZ\n", - "-0.012 * IIZZZZIZZIIIIZZZZXZZ\n", - "+0.000 * ZIZZIIZZZIZXZIIZZIZZ\n", - "-0.000 * IIZZZZIZZIIXZIIIIZZZ\n", - "-0.001 * ZIZZIIZZZIZZIZXZZYYZ\n", - "-0.000 * ZIZZIIZZZIZZIZXZZXXZ\n", - "+0.000 * ZIZZIIZZZIZZIZYZZYXZ\n", - "+0.000 * IIZZZZIZZIIIIZXIIYYZ\n", - "+0.000 * IIZZZZIZZIIIIZYIIXYZ\n", - "-0.001 * IIZZZZIZZIIIIZYIIYXZ\n", - "+0.010 * ZIZZIIZZZIZZIXIZZYYZ\n", - "+0.002 * ZIZZIIZZZIZZIXIZZXXZ\n", - "-0.008 * ZIZZIIZZZIZZIYIZZYXZ\n", - "-0.008 * IIZZZZIZZIIIIXIIIYYZ\n", - "-0.002 * IIZZZZIZZIIIIYIIIXYZ\n", - "+0.010 * IIZZZZIZZIIIIYIIIYXZ\n", - "+0.017 * ZIZZIIZZZIZZYIIZXZYZ\n", - "-0.013 * ZIZZIIZZZIZZYIIZYZXZ\n", - "+0.003 * ZIZZIIZZZIZZXIIZXZXZ\n", - "-0.003 * IIZZZZIZZIIIYIIIXIYZ\n", - "-0.013 * IIZZZZIZZIIIXIIIYIYZ\n", - "-0.017 * IIZZZZIZZIIIXIIIXIXZ\n", - "-0.001 * ZIZZIIZZZIZZYIIXIZYZ\n", - "+0.000 * ZIZZIIZZZIZZYIIYIZXZ\n", - "-0.000 * ZIZZIIZZZIZZXIIXIZXZ\n", - "+0.000 * IIZZZZIZZIIIYIIXZIYZ\n", - "+0.000 * IIZZZZIZZIIIXIIYZIYZ\n", - "+0.001 * IIZZZZIZZIIIXIIXZIXZ\n", - "-0.001 * ZIZZIIZZZIZXZIYIIZYZ\n", - "-0.000 * ZIZZIIZZZIZXZIXIIZXZ\n", - "+0.000 * ZIZZIIZZZIZYZIYIIZXZ\n", - "+0.000 * IIZZZZIZZIIYZIXZZIYZ\n", - "+0.000 * IIZZZZIZZIIXZIYZZIYZ\n", - "+0.001 * IIZZZZIZZIIXZIXZZIXZ\n", - "+0.011 * ZIZZIIZZZIZXZYZIIZYZ\n", - "+0.008 * ZIZZIIZZZIZXZXZIIZXZ\n", - "-0.003 * ZIZZIIZZZIZYZYZIIZXZ\n", - "-0.003 * IIZZZZIZZIIYZXZZZIYZ\n", - "-0.008 * IIZZZZIZZIIXZYZZZIYZ\n", - "-0.011 * IIZZZZIZZIIXZXZZZIXZ\n", - "+0.016 * ZIZZIIZZZIZXZIIZZZIZ\n", - "-0.016 * IIZZZZIZZIIXZIIIIIIZ\n", - "+0.005 * ZIZZIIZZZIZZIZZIZXIZ\n", - "-0.005 * IIZZZZIZZIIIIZZZIXIZ\n", - "+0.005 * ZIZZIIZZZIZZIZZZIXIZ\n", - "-0.005 * IIZZZZIZZIIIIZZIZXIZ\n", - "+0.015 * ZIZZIIZZZIZZIZIIIXIZ\n", - "-0.015 * IIZZZZIZZIIIIZIZZXIZ\n", - "+0.015 * ZIZZIIZZZIZZIIZIIXIZ\n", - "-0.015 * IIZZZZIZZIIIIIZZZXIZ\n", - "+0.007 * ZIZZIIZZZIZZZZZIIXIZ\n", - "-0.007 * IIZZZZIZZIIIZZZZZXIZ\n", - "+0.014 * ZIZZIIZZZIZIIZZIIXIZ\n", - "-0.014 * IIZZZZIZZIIZIZZZZXIZ\n", - "+0.007 * ZIZZIIZZZIZXZIIZIIIZ\n", - "-0.007 * IIZZZZIZZIIXZIIIZZIZ\n", - "+0.000 * ZIZZIIZZZIZZYIYIXIIZ\n", - "-0.000 * ZIZZIIZZZIZZYIXIYIIZ\n", - "-0.000 * ZIZZIIZZZIZZXIYIYIIZ\n", - "-0.000 * IIZZZZIZZIIIYIXZYZIZ\n", - "-0.000 * IIZZZZIZZIIIXIYZYZIZ\n", - "-0.000 * IIZZZZIZZIIIXIXZXZIZ\n", - "-0.012 * ZIZZIIZZZIZZYYZIXIIZ\n", - "+0.006 * ZIZZIIZZZIZZYXZIYIIZ\n", - "+0.005 * ZIZZIIZZZIZZXYZIYIIZ\n", - "+0.005 * IIZZZZIZZIIIYXZZYZIZ\n", - "+0.006 * IIZZZZIZZIIIXYZZYZIZ\n", - "+0.012 * IIZZZZIZZIIIXXZZXZIZ\n", - "+0.007 * ZIZZIIZZZIZXZIIIZIIZ\n", - "-0.007 * IIZZZZIZZIIXZIIZIZIZ\n", - "-0.012 * ZIZZIIZZZIZZYIYXZIIZ\n", - "+0.006 * ZIZZIIZZZIZZYIXYZIIZ\n", - "+0.005 * ZIZZIIZZZIZZXIYYZIIZ\n", - "+0.005 * IIZZZZIZZIIIYIXYIZIZ\n", - "+0.006 * IIZZZZIZZIIIXIYYIZIZ\n", - "+0.012 * IIZZZZIZZIIIXIXXIZIZ\n", - "-0.000 * ZIZZIIZZZIZZYYZXZIIZ\n", - "+0.000 * ZIZZIIZZZIZZYXZYZIIZ\n", - "+0.000 * ZIZZIIZZZIZZXYZYZIIZ\n", - "+0.000 * IIZZZZIZZIIIYXZYIZIZ\n", - "+0.000 * IIZZZZIZZIIIXYZYIZIZ\n", - "+0.000 * IIZZZZIZZIIIXXZXIZIZ\n", - "-0.004 * ZIZZIIZZZIZXZIZZZIIZ\n", - "+0.004 * IIZZZZIZZIIXZIZIIZIZ\n", - "-0.004 * ZIZZIIZZZIZXZZIZZIIZ\n", - "+0.004 * IIZZZZIZZIIXZZIIIZIZ\n", - "-0.015 * ZIZZIIZZZIZXIIIZZIIZ\n", - "+0.015 * IIZZZZIZZIIXIIIIIZIZ\n", - "+0.134 * IZZZIIIZZZIZIIIZZZII\n", - "+0.016 * IZIIZZIIIZIZIZZIIXIZ\n", - "-0.016 * ZZIIIIZIIZZIIZZZZXIZ\n", - "+0.006 * IZIIZZIIIZIXZIIZZIIZ\n", - "-0.006 * ZZIIIIZIIZZXZIIIIZIZ\n", - "+0.008 * IZZZIIIZZZYZIIIZZZIY\n", - "-0.008 * ZIIIZZZIIIYZIIIZZZIY\n", - "+0.008 * ZZZZZZZZZZXIIIIIIIIX\n", - "-0.008 * IIIIIIIIIIXIIIIIIIIX\n", - "+0.024 * IZIIZZIIIZYZYIIZZIIZ\n", - "-0.024 * ZIZZIIZZZIYZYIIZZIIZ\n", - "+0.024 * ZZIIIIZIIZXIXIIIIZIZ\n", - "-0.024 * IIZZZZIZZIXIXIIIIZIZ\n", - "+0.008 * IZZZIIIZZXZZIIIZZZII\n", - "-0.008 * ZIIIZZZIIXIZIIIZZZII\n", - "+0.016 * IZIIZZIIIXZZIZZIIXIZ\n", - "-0.016 * ZIZZIIZZZXIZIZZIIXIZ\n", - "-0.016 * ZZIIIIZIIXIIIZZZZXIZ\n", - "+0.016 * IIZZZZIZZXZIIZZZZXIZ\n", - "-0.007 * IZIIZZIIIXZXZIIZZIIZ\n", - "+0.007 * ZIZZIIZZZXIXZIIZZIIZ\n", - "+0.007 * ZZIIIIZIIXIXZIIIIZIZ\n", - "-0.007 * IIZZZZIZZXZXZIIIIZIZ\n", - "-0.001 * IZIIZZIIYIZZIZZIYIIZ\n", - "+0.001 * ZIZZIIZZYZIZIZZIYIIZ\n", - "+0.001 * ZZIIIIZIYIIIIZZZYZIZ\n", - "-0.001 * IIZZZZIZYZZIIZZZYZIZ\n", - "-0.016 * IZIIZZIIYIZZIZZYZIIZ\n", - "+0.016 * ZIZZIIZZYZIZIZZYZIIZ\n", - "+0.016 * ZZIIIIZIYIIIIZZYIZIZ\n", - "-0.016 * IIZZZZIZYZZIIZZYIZIZ\n", - "-0.016 * IZIIZZIYZIZZIZZIYIIZ\n", - "+0.016 * ZIZZIIZYIZIZIZZIYIIZ\n", - "+0.016 * ZZIIIIZYZIIIIZZZYZIZ\n", - "-0.016 * IIZZZZIYIZZIIZZZYZIZ\n", - "+0.001 * IZIIZZIYZIZZIZZYZIIZ\n", - "-0.001 * ZIZZIIZYIZIZIZZYZIIZ\n", - "-0.001 * ZZIIIIZYZIIIIZZYIZIZ\n", - "+0.001 * IIZZZZIYIZZIIZZYIZIZ\n", - "-0.012 * IZZZIIYIIIZZIIIZZZIY\n", - "+0.012 * ZIIIZZYZZZIZIIIZZZIY\n", - "-0.012 * ZZZZZZXIIIIIIIIIIIIX\n", - "+0.012 * IIIIIIXZZZZIIIIIIIIX\n", - "+0.005 * IZIIZZYZZIZZYIIZZIIZ\n", - "-0.005 * ZIZZIIYIIZIZYIIZZIIZ\n", - "+0.005 * ZZIIIIXZZIIIXIIIIZIZ\n", - "-0.005 * IIZZZZXIIZZIXIIIIZIZ\n", - "+0.000 * IZIIZXZZZIZZIZZIIZZZ\n", - "-0.000 * ZIZZIXIIIZIZIZZIIZZZ\n", - "-0.000 * ZZZZZXIIIIIIIIIIIIIZ\n", - "+0.000 * IIIIIXZZZZZIIIIIIIIZ\n", - "+0.014 * IZIIZXZZZIZZIZZIIZXZ\n", - "-0.014 * ZIZZIXIIIZIZIZZIIZXZ\n", - "+0.014 * ZZIIIYIZZIIIIZZZZIYZ\n", - "-0.014 * IIZZZYZIIZZIIZZZZIYZ\n", - "+0.000 * IZIIZXZZZIZZIZXZZIIZ\n", - "-0.000 * ZIZZIXIIIZIZIZXZZIIZ\n", - "+0.000 * ZZIIIYIZZIIIIZYIIZIZ\n", - "-0.000 * IIZZZYZIIZZIIZYIIZIZ\n", - "-0.008 * IZIIZXZZZIZZIXIZZIIZ\n", - "+0.008 * ZIZZIXIIIZIZIXIZZIIZ\n", - "-0.008 * ZZIIIYIZZIIIIYIIIZIZ\n", - "+0.008 * IIZZZYZIIZZIIYIIIZIZ\n", - "+0.014 * IZIIXIZZZIZZIZZIIZZZ\n", - "-0.014 * ZIZZXZIIIZIZIZZIIZZZ\n", - "-0.014 * ZZZZXIIIIIIIIIIIIIIZ\n", - "+0.014 * IIIIXZZZZZZIIIIIIIIZ\n", - "-0.000 * IZIIXIZZZIZZIZZIIZXZ\n", - "+0.000 * ZIZZXZIIIZIZIZZIIZXZ\n", - "-0.000 * ZZIIYZIZZIIIIZZZZIYZ\n", - "+0.000 * IIZZYIZIIZZIIZZZZIYZ\n", - "-0.008 * IZIIXIZZZIZZIZXZZIIZ\n", - "+0.008 * ZIZZXZIIIZIZIZXZZIIZ\n", - "-0.008 * ZZIIYZIZZIIIIZYIIZIZ\n", - "+0.008 * IIZZYIZIIZZIIZYIIZIZ\n", - "-0.000 * IZIIXIZZZIZZIXIZZIIZ\n", - "+0.000 * ZIZZXZIIIZIZIXIZZIIZ\n", - "-0.000 * ZZIIYZIZZIIIIYIIIZIZ\n", - "+0.000 * IIZZYIZIIZZIIYIIIZIZ\n", - "-0.000 * IZIYIIZZZIZZIZZIYIIZ\n", - "+0.000 * ZIZYZZIIIZIZIZZIYIIZ\n", - "+0.000 * ZZIYZZIZZIIIIZZZYZIZ\n", - "-0.000 * IIZYIIZIIZZIIZZZYZIZ\n", - "+0.006 * IZIYIIZZZIZZIZZYZIIZ\n", - "-0.006 * ZIZYZZIIIZIZIZZYZIIZ\n", - "-0.006 * ZZIYZZIZZIIIIZZYIZIZ\n", - "+0.006 * IIZYIIZIIZZIIZZYIZIZ\n", - "+0.006 * IZYZIIZZZIZZIZZIYIIZ\n", - "-0.006 * ZIYIZZIIIZIZIZZIYIIZ\n", - "-0.006 * ZZYZZZIZZIIIIZZZYZIZ\n", - "+0.006 * IIYIIIZIIZZIIZZZYZIZ\n", - "+0.000 * IZYZIIZZZIZZIZZYZIIZ\n", - "-0.000 * ZIYIZZIIIZIZIZZYZIIZ\n", - "-0.000 * ZZYZZZIZZIIIIZZYIZIZ\n", - "+0.000 * IIYIIIZIIZZIIZZYIZIZ\n", - "-0.016 * IXIIZZZIIIZZIIIZZZII\n", - "+0.016 * ZXZZIIIZZZIZIIIZZZII\n", - "-0.002 * IXZZIIZZZIZZIZZIIXIZ\n", - "+0.002 * ZXIIZZIIIZIZIZZIIXIZ\n", - "+0.002 * ZXZZZZIZZIIIIZZZZXIZ\n", - "-0.002 * IXIIIIZIIZZIIZZZZXIZ\n", - "-0.014 * IXZZIIZZZIZXZIIZZIIZ\n", - "+0.014 * ZXIIZZIIIZIXZIIZZIIZ\n", - "+0.014 * ZXZZZZIZZIIXZIIIIZIZ\n", - "-0.014 * IXIIIIZIIZZXZIIIIZIZ\n", - "+0.005 * YIIIZZZIIIZZIIIZZZIY\n", - "-0.005 * YZZZIIIZZZIZIIIZZZIY\n", - "+0.005 * XIIIIIIIIIIIIIIIIIIX\n", - "-0.005 * XZZZZZZZZZZIIIIIIIIX\n", - "+0.012 * YIZZIIZZZIZZYIIZZIIZ\n", - "-0.012 * YZIIZZIIIZIZYIIZZIIZ\n", - "+0.012 * XIZZZZIZZIIIXIIIIZIZ\n", - "-0.012 * XZIIIIZIIZZIXIIIIZIZ\n", - "+0.136 * ZIIIZZZIIIIZIIIZZZII\n", - "+0.014 * ZIZZIIZZZIIZIZZIIXIZ\n", - "-0.014 * IIZZZZIZZIZIIZZZZXIZ\n", - "+0.009 * ZIZZIIZZZIIXZIIZZIIZ\n", - "-0.009 * IIZZZZIZZIZXZIIIIZIZ\n", - "-0.014 * ZIIIZZZIIYXZIIIZZZIY\n", - "+0.014 * ZIIIZZZIIXYZIIIZZZIY\n", - "+0.014 * IIIIIIIIIYYIIIIIIIIX\n", - "+0.014 * IIIIIIIIIXXIIIIIIIIX\n", - "-0.001 * ZIZZIIZZZYXZYIIZZIIZ\n", - "+0.001 * ZIZZIIZZZXYZYIIZZIIZ\n", - "+0.001 * IIZZZZIZZYYIXIIIIZIZ\n", - "+0.001 * IIZZZZIZZXXIXIIIIZIZ\n", - "+0.013 * ZIZZIIZZXZXZIZZIIZZZ\n", - "+0.013 * ZIZZIIZZYZYZIZZIIZZZ\n", - "+0.013 * IIIIIIIIYZYIIIIIIIIZ\n", - "+0.013 * IIIIIIIIXZXIIIIIIIIZ\n", - "-0.006 * ZIZZIIZZXZXZIZXZZIIZ\n", - "-0.006 * ZIZZIIZZYZYZIZXZZIIZ\n", - "-0.006 * IIZZZZIZXZYIIZYIIZIZ\n", - "+0.006 * IIZZZZIZYZXIIZYIIZIZ\n", - "-0.000 * ZIZZIIZZXZXZIXIZZIIZ\n", - "-0.000 * ZIZZIIZZYZYZIXIZZIIZ\n", - "-0.000 * IIZZZZIZXZYIIYIIIZIZ\n", - "+0.000 * IIZZZZIZYZXIIYIIIZIZ\n", - "+0.013 * ZIZZIIZXIZXZIZZIIZXZ\n", - "+0.013 * ZIZZIIZYIZYZIZZIIZXZ\n", - "+0.013 * IIZZZZIXIZYIIZZZZIYZ\n", - "-0.013 * IIZZZZIYIZXIIZZZZIYZ\n", - "+0.000 * ZIZZIIZXIZXZIZXZZIIZ\n", - "+0.000 * ZIZZIIZYIZYZIZXZZIIZ\n", - "+0.000 * IIZZZZIXIZYIIZYIIZIZ\n", - "-0.000 * IIZZZZIYIZXIIZYIIZIZ\n", - "-0.006 * ZIZZIIZXIZXZIXIZZIIZ\n", - "-0.006 * ZIZZIIZYIZYZIXIZZIIZ\n", - "-0.006 * IIZZZZIXIZYIIYIIIZIZ\n", - "+0.006 * IIZZZZIYIZXIIYIIIZIZ\n", - "+0.014 * ZIIIZZXZZZXZIIIZZZII\n", - "+0.014 * ZIIIZZYZZZYZIIIZZZII\n", - "+0.019 * ZIZZIIXIIZXZIZZIIXIZ\n", - "+0.019 * ZIZZIIYIIZYZIZZIIXIZ\n", - "+0.019 * IIZZZZYIIZYIIZZZZXIZ\n", - "+0.019 * IIZZZZXIIZXIIZZZZXIZ\n", - "-0.004 * ZIZZIIXIIZXXZIIZZIIZ\n", - "-0.004 * ZIZZIIYIIZYXZIIZZIIZ\n", - "-0.004 * IIZZZZYIIZYXZIIIIZIZ\n", - "-0.004 * IIZZZZXIIZXXZIIIIZIZ\n", - "-0.018 * ZIZZIYIIIZXZIZZIYIIZ\n", - "+0.018 * ZIZZIXIIIZYZIZZIYIIZ\n", - "+0.018 * IIZZZXZIIZYIIZZZYZIZ\n", - "-0.018 * IIZZZYZIIZXIIZZZYZIZ\n", - "-0.018 * ZIZZYZIIIZXZIZZYZIIZ\n", - "+0.018 * ZIZZXZIIIZYZIZZYZIIZ\n", - "+0.018 * IIZZXIZIIZYIIZZYIZIZ\n", - "-0.018 * IIZZYIZIIZXIIZZYIZIZ\n", - "-0.006 * ZIZXZZIIIZXZIZZIIZZZ\n", - "-0.006 * ZIZYZZIIIZYZIZZIIZZZ\n", - "-0.006 * IIIYZZZZZZYIIIIIIIIZ\n", - "-0.006 * IIIXZZZZZZXIIIIIIIIZ\n", - "+0.000 * ZIZXZZIIIZXZIZZIIZXZ\n", - "+0.000 * ZIZYZZIIIZYZIZZIIZXZ\n", - "+0.000 * IIZXIIZIIZYIIZZZZIYZ\n", - "-0.000 * IIZYIIZIIZXIIZZZZIYZ\n", - "+0.007 * ZIZXZZIIIZXZIZXZZIIZ\n", - "+0.007 * ZIZYZZIIIZYZIZXZZIIZ\n", - "+0.007 * IIZXIIZIIZYIIZYIIZIZ\n", - "-0.007 * IIZYIIZIIZXIIZYIIZIZ\n", - "-0.000 * ZIXIZZIIIZXZIZZIIZZZ\n", - "-0.000 * ZIYIZZIIIZYZIZZIIZZZ\n", - "-0.000 * IIYZZZZZZZYIIIIIIIIZ\n", - "-0.000 * IIXZZZZZZZXIIIIIIIIZ\n", - "-0.006 * ZIXIZZIIIZXZIZZIIZXZ\n", - "-0.006 * ZIYIZZIIIZYZIZZIIZXZ\n", - "-0.006 * IIXIIIZIIZYIIZZZZIYZ\n", - "+0.006 * IIYIIIZIIZXIIZZZZIYZ\n", - "+0.007 * ZIXIZZIIIZXZIXIZZIIZ\n", - "+0.007 * ZIYIZZIIIZYZIXIZZIIZ\n", - "+0.007 * IIXIIIZIIZYIIYIIIZIZ\n", - "-0.007 * IIYIIIZIIZXIIYIIIZIZ\n", - "-0.001 * ZYZZIIIZZZXZIIIZZZIY\n", - "+0.001 * ZXZZIIIZZZYZIIIZZZIY\n", - "+0.001 * IYZZZZZZZZYIIIIIIIIX\n", - "+0.001 * IXZZZZZZZZXIIIIIIIIX\n", - "-0.016 * ZYIIZZIIIZXZYIIZZIIZ\n", - "+0.016 * ZXIIZZIIIZYZYIIZZIIZ\n", - "+0.016 * IYIIIIZIIZYIXIIIIZIZ\n", - "+0.016 * IXIIIIZIIZXIXIIIIZIZ\n", - "+0.009 * XZZZIIIZZZXZIIIZZZII\n", - "+0.009 * YZZZIIIZZZYZIIIZZZII\n", - "-0.004 * XZIIZZIIIZXZIZZIIXIZ\n", - "-0.004 * YZIIZZIIIZYZIZZIIXIZ\n", - "-0.004 * YZIIIIZIIZYIIZZZZXIZ\n", - "-0.004 * XZIIIIZIIZXIIZZZZXIZ\n", - "+0.016 * XZIIZZIIIZXXZIIZZIIZ\n", - "+0.016 * YZIIZZIIIZYXZIIZZIIZ\n", - "+0.016 * YZIIIIZIIZYXZIIIIZIZ\n", - "+0.016 * XZIIIIZIIZXXZIIIIZIZ\n", - "+0.115 * ZIIIZZZIIZZZIIIZZZII\n", - "-0.005 * ZIZZIIZZZZZZIZZIIXIZ\n", - "+0.005 * IIZZZZIZZZIIIZZZZXIZ\n", - "+0.002 * ZIZZIIZZZZZXZIIZZIIZ\n", - "-0.002 * IIZZZZIZZZIXZIIIIZIZ\n", - "+0.000 * ZIZZIIZZXYZZIZZIYIIZ\n", - "-0.000 * ZIZZIIZZYXZZIZZIYIIZ\n", - "-0.000 * IIZZZZIZXYIIIZZZYZIZ\n", - "+0.000 * IIZZZZIZYXIIIZZZYZIZ\n", - "+0.004 * ZIZZIIZZXYZZIZZYZIIZ\n", - "-0.004 * ZIZZIIZZYXZZIZZYZIIZ\n", - "-0.004 * IIZZZZIZXYIIIZZYIZIZ\n", - "+0.004 * IIZZZZIZYXIIIZZYIZIZ\n", - "+0.004 * ZIZZIIZXIYZZIZZIYIIZ\n", - "-0.004 * ZIZZIIZYIXZZIZZIYIIZ\n", - "-0.004 * IIZZZZIXIYIIIZZZYZIZ\n", - "+0.004 * IIZZZZIYIXIIIZZZYZIZ\n", - "-0.000 * ZIZZIIZXIYZZIZZYZIIZ\n", - "+0.000 * ZIZZIIZYIXZZIZZYZIIZ\n", - "+0.000 * IIZZZZIXIYIIIZZYIZIZ\n", - "-0.000 * IIZZZZIYIXIIIZZYIZIZ\n", - "+0.022 * ZIIIZZXZZYZZIIIZZZIY\n", - "-0.022 * ZIIIZZYZZXZZIIIZZZIY\n", - "-0.022 * IIIIIIYZZYIIIIIIIIIX\n", - "-0.022 * IIIIIIXZZXIIIIIIIIIX\n", - "+0.012 * ZIZZIIXIIYZZYIIZZIIZ\n", - "-0.012 * ZIZZIIYIIXZZYIIZZIIZ\n", - "-0.012 * IIZZZZYIIYIIXIIIIZIZ\n", - "-0.012 * IIZZZZXIIXIIXIIIIZIZ\n", - "+0.000 * ZIZZIYIIIYZZIZZIIZZZ\n", - "+0.000 * ZIZZIXIIIXZZIZZIIZZZ\n", - "-0.000 * IIIIIYZZZYIIIIIIIIIZ\n", - "-0.000 * IIIIIXZZZXIIIIIIIIIZ\n", - "+0.006 * ZIZZIYIIIYZZIZZIIZXZ\n", - "+0.006 * ZIZZIXIIIXZZIZZIIZXZ\n", - "-0.006 * IIZZZXZIIYIIIZZZZIYZ\n", - "+0.006 * IIZZZYZIIXIIIZZZZIYZ\n", - "+0.000 * ZIZZIYIIIYZZIZXZZIIZ\n", - "+0.000 * ZIZZIXIIIXZZIZXZZIIZ\n", - "-0.000 * IIZZZXZIIYIIIZYIIZIZ\n", - "+0.000 * IIZZZYZIIXIIIZYIIZIZ\n", - "-0.006 * ZIZZIYIIIYZZIXIZZIIZ\n", - "-0.006 * ZIZZIXIIIXZZIXIZZIIZ\n", - "+0.006 * IIZZZXZIIYIIIYIIIZIZ\n", - "-0.006 * IIZZZYZIIXIIIYIIIZIZ\n", - "+0.006 * ZIZZYZIIIYZZIZZIIZZZ\n", - "+0.006 * ZIZZXZIIIXZZIZZIIZZZ\n", - "-0.006 * IIIIYZZZZYIIIIIIIIIZ\n", - "-0.006 * IIIIXZZZZXIIIIIIIIIZ\n", - "-0.000 * ZIZZYZIIIYZZIZZIIZXZ\n", - "-0.000 * ZIZZXZIIIXZZIZZIIZXZ\n", - "+0.000 * IIZZXIZIIYIIIZZZZIYZ\n", - "-0.000 * IIZZYIZIIXIIIZZZZIYZ\n", - "-0.006 * ZIZZYZIIIYZZIZXZZIIZ\n", - "-0.006 * ZIZZXZIIIXZZIZXZZIIZ\n", - "+0.006 * IIZZXIZIIYIIIZYIIZIZ\n", - "-0.006 * IIZZYIZIIXIIIZYIIZIZ\n", - "-0.000 * ZIZZYZIIIYZZIXIZZIIZ\n", - "-0.000 * ZIZZXZIIIXZZIXIZZIIZ\n", - "+0.000 * IIZZXIZIIYIIIYIIIZIZ\n", - "-0.000 * IIZZYIZIIXIIIYIIIZIZ\n", - "+0.000 * ZIZXZZIIIYZZIZZIYIIZ\n", - "-0.000 * ZIZYZZIIIXZZIZZIYIIZ\n", - "-0.000 * IIZXIIZIIYIIIZZZYZIZ\n", - "+0.000 * IIZYIIZIIXIIIZZZYZIZ\n", - "-0.011 * ZIZXZZIIIYZZIZZYZIIZ\n", - "+0.011 * ZIZYZZIIIXZZIZZYZIIZ\n", - "+0.011 * IIZXIIZIIYIIIZZYIZIZ\n", - "-0.011 * IIZYIIZIIXIIIZZYIZIZ\n", - "-0.011 * ZIXIZZIIIYZZIZZIYIIZ\n", - "+0.011 * ZIYIZZIIIXZZIZZIYIIZ\n", - "+0.011 * IIXIIIZIIYIIIZZZYZIZ\n", - "-0.011 * IIYIIIZIIXIIIZZZYZIZ\n", - "-0.000 * ZIXIZZIIIYZZIZZYZIIZ\n", - "+0.000 * ZIYIZZIIIXZZIZZYZIIZ\n", - "+0.000 * IIXIIIZIIYIIIZZYIZIZ\n", - "-0.000 * IIYIIIZIIXIIIZZYIZIZ\n", - "-0.000 * ZYZZIIIZZYZZIIIZZZII\n", - "-0.000 * ZXZZIIIZZXZZIIIZZZII\n", - "-0.011 * ZYIIZZIIIYZZIZZIIXIZ\n", - "-0.011 * ZXIIZZIIIXZZIZZIIXIZ\n", - "+0.011 * IYIIIIZIIYIIIZZZZXIZ\n", - "+0.011 * IXIIIIZIIXIIIZZZZXIZ\n", - "+0.007 * ZYIIZZIIIYZXZIIZZIIZ\n", - "+0.007 * ZXIIZZIIIXZXZIIZZIIZ\n", - "-0.007 * IYIIIIZIIYIXZIIIIZIZ\n", - "-0.007 * IXIIIIZIIXIXZIIIIZIZ\n", - "+0.008 * XZZZIIIZZYZZIIIZZZIY\n", - "-0.008 * YZZZIIIZZXZZIIIZZZIY\n", - "-0.008 * YZZZZZZZZYIIIIIIIIIX\n", - "-0.008 * XZZZZZZZZXIIIIIIIIIX\n", - "+0.000 * XZIIZZIIIYZZYIIZZIIZ\n", - "-0.000 * YZIIZZIIIXZZYIIZZIIZ\n", - "-0.000 * YZIIIIZIIYIIXIIIIZIZ\n", - "-0.000 * XZIIIIZIIXIIXIIIIZIZ\n", - "+0.123 * ZIIIZZZIZIZZIIIZZZII\n", - "+0.011 * ZIZZIIZZIIZZIZZIIXIZ\n", - "-0.011 * IIZZZZIZIIIIIZZZZXIZ\n", - "+0.002 * ZIZZIIZZIIZXZIIZZIIZ\n", - "-0.002 * IIZZZZIZIIIXZIIIIZIZ\n", - "-0.001 * ZIZZIIXIXIZZIZZIIZZZ\n", - "-0.001 * ZIZZIIYIYIZZIZZIIZZZ\n", - "-0.001 * IIIIIIYZYIIIIIIIIIIZ\n", - "-0.001 * IIIIIIXZXIIIIIIIIIIZ\n", - "+0.004 * ZIZZIIXIXIZZIZXZZIIZ\n", - "+0.004 * ZIZZIIYIYIZZIZXZZIIZ\n", - "+0.004 * IIZZZZYIXIIIIZYIIZIZ\n", - "-0.004 * IIZZZZXIYIIIIZYIIZIZ\n", - "+0.000 * ZIZZIIXIXIZZIXIZZIIZ\n", - "+0.000 * ZIZZIIYIYIZZIXIZZIIZ\n", - "+0.000 * IIZZZZYIXIIIIYIIIZIZ\n", - "-0.000 * IIZZZZXIYIIIIYIIIZIZ\n", - "+0.001 * ZIIIZXIZYIZZIIIZZZIY\n", - "-0.001 * ZIIIZYIZXIZZIIIZZZIY\n", - "-0.001 * IIIIIYZZYIIIIIIIIIIX\n", - "-0.001 * IIIIIXZZXIIIIIIIIIIX\n", - "+0.001 * ZIZZIYIIXIZZYIIZZIIZ\n", - "-0.001 * ZIZZIXIIYIZZYIIZZIIZ\n", - "+0.001 * IIZZZXZIXIIIXIIIIZIZ\n", - "+0.001 * IIZZZYZIYIIIXIIIIZIZ\n", - "+0.015 * ZIIIXIIZYIZZIIIZZZIY\n", - "-0.015 * ZIIIYIIZXIZZIIIZZZIY\n", - "-0.015 * IIIIYZZZYIIIIIIIIIIX\n", - "-0.015 * IIIIXZZZXIIIIIIIIIIX\n", - "+0.018 * ZIZZYZIIXIZZYIIZZIIZ\n", - "-0.018 * ZIZZXZIIYIZZYIIZZIIZ\n", - "+0.018 * IIZZXIZIXIIIXIIIIZIZ\n", - "+0.018 * IIZZYIZIYIIIXIIIIZIZ\n", - "+0.004 * ZIIYIIIZYIZZIIIZZZII\n", - "+0.004 * ZIIXIIIZXIZZIIIZZZII\n", - "+0.014 * ZIZXZZIIXIZZIZZIIXIZ\n", - "+0.014 * ZIZYZZIIYIZZIZZIIXIZ\n", - "-0.014 * IIZXIIZIXIIIIZZZZXIZ\n", - "-0.014 * IIZYIIZIYIIIIZZZZXIZ\n", - "-0.015 * ZIZXZZIIXIZXZIIZZIIZ\n", - "-0.015 * ZIZYZZIIYIZXZIIZZIIZ\n", - "+0.015 * IIZXIIZIXIIXZIIIIZIZ\n", - "+0.015 * IIZYIIZIYIIXZIIIIZIZ\n", - "+0.000 * ZIYZIIIZYIZZIIIZZZII\n", - "+0.000 * ZIXZIIIZXIZZIIIZZZII\n", - "+0.001 * ZIXIZZIIXIZZIZZIIXIZ\n", - "+0.001 * ZIYIZZIIYIZZIZZIIXIZ\n", - "-0.001 * IIXIIIZIXIIIIZZZZXIZ\n", - "-0.001 * IIYIIIZIYIIIIZZZZXIZ\n", - "-0.001 * ZIXIZZIIXIZXZIIZZIIZ\n", - "-0.001 * ZIYIZZIIYIZXZIIZZIIZ\n", - "+0.001 * IIXIIIZIXIIXZIIIIZIZ\n", - "+0.001 * IIYIIIZIYIIXZIIIIZIZ\n", - "+0.000 * ZYIIZZIIXIZZIZZIYIIZ\n", - "-0.000 * ZXIIZZIIYIZZIZZIYIIZ\n", - "-0.000 * IYIIIIZIXIIIIZZZYZIZ\n", - "+0.000 * IXIIIIZIYIIIIZZZYZIZ\n", - "+0.002 * ZYIIZZIIXIZZIZZYZIIZ\n", - "-0.002 * ZXIIZZIIYIZZIZZYZIIZ\n", - "-0.002 * IYIIIIZIXIIIIZZYIZIZ\n", - "+0.002 * IXIIIIZIYIIIIZZYIZIZ\n", - "+0.002 * XZIIZZIIXIZZIZZIIZZZ\n", - "+0.002 * YZIIZZIIYIZZIZZIIZZZ\n", - "+0.002 * YZZZZZZZYIIIIIIIIIIZ\n", - "+0.002 * XZZZZZZZXIIIIIIIIIIZ\n", - "-0.004 * XZIIZZIIXIZZIZXZZIIZ\n", - "-0.004 * YZIIZZIIYIZZIZXZZIIZ\n", - "-0.004 * YZIIIIZIXIIIIZYIIZIZ\n", - "+0.004 * XZIIIIZIYIIIIZYIIZIZ\n", - "-0.000 * XZIIZZIIXIZZIXIZZIIZ\n", - "-0.000 * YZIIZZIIYIZZIXIZZIIZ\n", - "-0.000 * YZIIIIZIXIIIIYIIIZIZ\n", - "+0.000 * XZIIIIZIYIIIIYIIIZIZ\n", - "+0.123 * ZIIIZZZZIIZZIIIZZZII\n", - "+0.011 * ZIZZIIZIZIZZIZZIIXIZ\n", - "-0.011 * IIZZZZIIZIIIIZZZZXIZ\n", - "+0.002 * ZIZZIIZIZIZXZIIZZIIZ\n", - "-0.002 * IIZZZZIIZIIXZIIIIZIZ\n", - "-0.001 * ZIZZIIXXZIZZIZZIIZXZ\n", - "-0.001 * ZIZZIIYYZIZZIZZIIZXZ\n", - "-0.001 * IIZZZZYXZIIIIZZZZIYZ\n", - "+0.001 * IIZZZZXYZIIIIZZZZIYZ\n", - "-0.000 * ZIZZIIXXZIZZIZXZZIIZ\n", - "-0.000 * ZIZZIIYYZIZZIZXZZIIZ\n", - "-0.000 * IIZZZZYXZIIIIZYIIZIZ\n", - "+0.000 * IIZZZZXYZIIIIZYIIZIZ\n", - "+0.004 * ZIZZIIXXZIZZIXIZZIIZ\n", - "+0.004 * ZIZZIIYYZIZZIXIZZIIZ\n", - "+0.004 * IIZZZZYXZIIIIYIIIZIZ\n", - "-0.004 * IIZZZZXYZIIIIYIIIZIZ\n", - "+0.015 * ZIIIZXIYIIZZIIIZZZIY\n", - "-0.015 * ZIIIZYIXIIZZIIIZZZIY\n", - "-0.015 * IIIIIYZYIIIIIIIIIIIX\n", - "-0.015 * IIIIIXZXIIIIIIIIIIIX\n", - "+0.018 * ZIZZIYIXZIZZYIIZZIIZ\n", - "-0.018 * ZIZZIXIYZIZZYIIZZIIZ\n", - "+0.018 * IIZZZXZXZIIIXIIIIZIZ\n", - "+0.018 * IIZZZYZYZIIIXIIIIZIZ\n", - "-0.001 * ZIIIXIIYIIZZIIIZZZIY\n", - "+0.001 * ZIIIYIIXIIZZIIIZZZIY\n", - "+0.001 * IIIIYZZYIIIIIIIIIIIX\n", - "+0.001 * IIIIXZZXIIIIIIIIIIIX\n", - "-0.001 * ZIZZYZIXZIZZYIIZZIIZ\n", - "+0.001 * ZIZZXZIYZIZZYIIZZIIZ\n", - "-0.001 * IIZZXIZXZIIIXIIIIZIZ\n", - "-0.001 * IIZZYIZYZIIIXIIIIZIZ\n", - "-0.000 * ZIIYIIIYIIZZIIIZZZII\n", - "-0.000 * ZIIXIIIXIIZZIIIZZZII\n", - "-0.001 * ZIZXZZIXZIZZIZZIIXIZ\n", - "-0.001 * ZIZYZZIYZIZZIZZIIXIZ\n", - "+0.001 * IIZXIIZXZIIIIZZZZXIZ\n", - "+0.001 * IIZYIIZYZIIIIZZZZXIZ\n", - "+0.001 * ZIZXZZIXZIZXZIIZZIIZ\n", - "+0.001 * ZIZYZZIYZIZXZIIZZIIZ\n", - "-0.001 * IIZXIIZXZIIXZIIIIZIZ\n", - "-0.001 * IIZYIIZYZIIXZIIIIZIZ\n", - "+0.004 * ZIYZIIIYIIZZIIIZZZII\n", - "+0.004 * ZIXZIIIXIIZZIIIZZZII\n", - "+0.014 * ZIXIZZIXZIZZIZZIIXIZ\n", - "+0.014 * ZIYIZZIYZIZZIZZIIXIZ\n", - "-0.014 * IIXIIIZXZIIIIZZZZXIZ\n", - "-0.014 * IIYIIIZYZIIIIZZZZXIZ\n", - "-0.015 * ZIXIZZIXZIZXZIIZZIIZ\n", - "-0.015 * ZIYIZZIYZIZXZIIZZIIZ\n", - "+0.015 * IIXIIIZXZIIXZIIIIZIZ\n", - "+0.015 * IIYIIIZYZIIXZIIIIZIZ\n", - "+0.002 * ZYIIZZIXZIZZIZZIYIIZ\n", - "-0.002 * ZXIIZZIYZIZZIZZIYIIZ\n", - "-0.002 * IYIIIIZXZIIIIZZZYZIZ\n", - "+0.002 * IXIIIIZYZIIIIZZZYZIZ\n", - "-0.000 * ZYIIZZIXZIZZIZZYZIIZ\n", - "+0.000 * ZXIIZZIYZIZZIZZYZIIZ\n", - "+0.000 * IYIIIIZXZIIIIZZYIZIZ\n", - "-0.000 * IXIIIIZYZIIIIZZYIZIZ\n", - "+0.002 * XZIIZZIXZIZZIZZIIZXZ\n", - "+0.002 * YZIIZZIYZIZZIZZIIZXZ\n", - "+0.002 * YZIIIIZXZIIIIZZZZIYZ\n", - "-0.002 * XZIIIIZYZIIIIZZZZIYZ\n", - "+0.000 * XZIIZZIXZIZZIZXZZIIZ\n", - "+0.000 * YZIIZZIYZIZZIZXZZIIZ\n", - "+0.000 * YZIIIIZXZIIIIZYIIZIZ\n", - "-0.000 * XZIIIIZYZIIIIZYIIZIZ\n", - "-0.004 * XZIIZZIXZIZZIXIZZIIZ\n", - "-0.004 * YZIIZZIYZIZZIXIZZIIZ\n", - "-0.004 * YZIIIIZXZIIIIYIIIZIZ\n", - "+0.004 * XZIIIIZYZIIIIYIIIZIZ\n", - "+0.121 * ZIIIZZIIIIZZIIIZZZII\n", - "-0.004 * ZIZZIIIZZIZZIZZIIXIZ\n", - "+0.004 * IIZZZZZZZIIIIZZZZXIZ\n", - "+0.004 * ZIZZIIIZZIZXZIIZZIIZ\n", - "-0.004 * IIZZZZZZZIIXZIIIIZIZ\n", - "+0.006 * ZIZZIYXZZIZZIZZIYIIZ\n", - "-0.006 * ZIZZIXYZZIZZIZZIYIIZ\n", - "-0.006 * IIZZZXYZZIIIIZZZYZIZ\n", - "+0.006 * IIZZZYXZZIIIIZZZYZIZ\n", - "+0.006 * ZIZZYZXZZIZZIZZYZIIZ\n", - "-0.006 * ZIZZXZYZZIZZIZZYZIIZ\n", - "-0.006 * IIZZXIYZZIIIIZZYIZIZ\n", - "+0.006 * IIZZYIXZZIIIIZZYIZIZ\n", - "+0.006 * ZIZXZZXZZIZZIZZIIZZZ\n", - "+0.006 * ZIZYZZYZZIZZIZZIIZZZ\n", - "+0.006 * IIIYZZYIIIIIIIIIIIIZ\n", - "+0.006 * IIIXZZXIIIIIIIIIIIIZ\n", - "-0.000 * ZIZXZZXZZIZZIZZIIZXZ\n", - "-0.000 * ZIZYZZYZZIZZIZZIIZXZ\n", - "-0.000 * IIZXIIYZZIIIIZZZZIYZ\n", - "+0.000 * IIZYIIXZZIIIIZZZZIYZ\n", - "-0.003 * ZIZXZZXZZIZZIZXZZIIZ\n", - "-0.003 * ZIZYZZYZZIZZIZXZZIIZ\n", - "-0.003 * IIZXIIYZZIIIIZYIIZIZ\n", - "+0.003 * IIZYIIXZZIIIIZYIIZIZ\n", - "+0.000 * ZIXIZZXZZIZZIZZIIZZZ\n", - "+0.000 * ZIYIZZYZZIZZIZZIIZZZ\n", - "+0.000 * IIYZZZYIIIIIIIIIIIIZ\n", - "+0.000 * IIXZZZXIIIIIIIIIIIIZ\n", - "+0.006 * ZIXIZZXZZIZZIZZIIZXZ\n", - "+0.006 * ZIYIZZYZZIZZIZZIIZXZ\n", - "+0.006 * IIXIIIYZZIIIIZZZZIYZ\n", - "-0.006 * IIYIIIXZZIIIIZZZZIYZ\n", - "-0.003 * ZIXIZZXZZIZZIXIZZIIZ\n", - "-0.003 * ZIYIZZYZZIZZIXIZZIIZ\n", - "-0.003 * IIXIIIYZZIIIIYIIIZIZ\n", - "+0.003 * IIYIIIXZZIIIIYIIIZIZ\n", - "-0.010 * ZYZZIIXIIIZZIIIZZZIY\n", - "+0.010 * ZXZZIIYIIIZZIIIZZZIY\n", - "+0.010 * IYZZZZYIIIIIIIIIIIIX\n", - "+0.010 * IXZZZZXIIIIIIIIIIIIX\n", - "-0.009 * ZYIIZZXZZIZZYIIZZIIZ\n", - "+0.009 * ZXIIZZYZZIZZYIIZZIIZ\n", - "+0.009 * IYIIIIYZZIIIXIIIIZIZ\n", - "+0.009 * IXIIIIXZZIIIXIIIIZIZ\n", - "-0.004 * XZZZIIXIIIZZIIIZZZII\n", - "-0.004 * YZZZIIYIIIZZIIIZZZII\n", - "-0.012 * XZIIZZXZZIZZIZZIIXIZ\n", - "-0.012 * YZIIZZYZZIZZIZZIIXIZ\n", - "-0.012 * YZIIIIYZZIIIIZZZZXIZ\n", - "-0.012 * XZIIIIXZZIIIIZZZZXIZ\n", - "+0.011 * XZIIZZXZZIZXZIIZZIIZ\n", - "+0.011 * YZIIZZYZZIZXZIIZZIIZ\n", - "+0.011 * YZIIIIYZZIIXZIIIIZIZ\n", - "+0.011 * XZIIIIXZZIIXZIIIIZIZ\n", - "+0.126 * ZIIIZIZIIIZZIIIZZZII\n", - "-0.001 * ZIZZIZZZZIZZIZZIIXIZ\n", - "+0.001 * IIZZZIIZZIIIIZZZZXIZ\n", - "+0.015 * ZIZZIZZZZIZXZIIZZIIZ\n", - "-0.015 * IIZZZIIZZIIXZIIIIZIZ\n", - "+0.000 * ZIIYIXZIIIZZIIIZZZIY\n", - "-0.000 * ZIIXIYZIIIZZIIIZZZIY\n", - "-0.000 * IIIYZYIIIIIIIIIIIIIX\n", - "-0.000 * IIIXZXIIIIIIIIIIIIIX\n", - "+0.000 * ZIZXZYZZZIZZYIIZZIIZ\n", - "-0.000 * ZIZYZXZZZIZZYIIZZIIZ\n", - "+0.000 * IIZXIXIZZIIIXIIIIZIZ\n", - "+0.000 * IIZYIYIZZIIIXIIIIZIZ\n", - "-0.016 * ZIYZIXZIIIZZIIIZZZIY\n", - "+0.016 * ZIXZIYZIIIZZIIIZZZIY\n", - "+0.016 * IIYZZYIIIIIIIIIIIIIX\n", - "+0.016 * IIXZZXIIIIIIIIIIIIIX\n", - "-0.015 * ZIXIZYZZZIZZYIIZZIIZ\n", - "+0.015 * ZIYIZXZZZIZZYIIZZIIZ\n", - "-0.015 * IIXIIXIZZIIIXIIIIZIZ\n", - "-0.015 * IIYIIYIZZIIIXIIIIZIZ\n", - "+0.000 * ZYIIZYZZZIZZIZZIIZZZ\n", - "+0.000 * ZXIIZXZZZIZZIZZIIZZZ\n", - "-0.000 * IYZZZYIIIIIIIIIIIIIZ\n", - "-0.000 * IXZZZXIIIIIIIIIIIIIZ\n", - "+0.005 * ZYIIZYZZZIZZIZZIIZXZ\n", - "+0.005 * ZXIIZXZZZIZZIZZIIZXZ\n", - "-0.005 * IYIIIXIZZIIIIZZZZIYZ\n", - "+0.005 * IXIIIYIZZIIIIZZZZIYZ\n", - "+0.000 * ZYIIZYZZZIZZIZXZZIIZ\n", - "+0.000 * ZXIIZXZZZIZZIZXZZIIZ\n", - "-0.000 * IYIIIXIZZIIIIZYIIZIZ\n", - "+0.000 * IXIIIYIZZIIIIZYIIZIZ\n", - "-0.003 * ZYIIZYZZZIZZIXIZZIIZ\n", - "-0.003 * ZXIIZXZZZIZZIXIZZIIZ\n", - "+0.003 * IYIIIXIZZIIIIYIIIZIZ\n", - "-0.003 * IXIIIYIZZIIIIYIIIZIZ\n", - "-0.007 * XZIIZYZZZIZZIZZIYIIZ\n", - "+0.007 * YZIIZXZZZIZZIZZIYIIZ\n", - "+0.007 * YZIIIXIZZIIIIZZZYZIZ\n", - "-0.007 * XZIIIYIZZIIIIZZZYZIZ\n", - "+0.126 * ZIIIIZZIIIZZIIIZZZII\n", - "-0.001 * ZIZZZIZZZIZZIZZIIXIZ\n", - "+0.001 * IIZZIZIZZIIIIZZZZXIZ\n", - "+0.015 * ZIZZZIZZZIZXZIIZZIIZ\n", - "-0.015 * IIZZIZIZZIIXZIIIIZIZ\n", - "-0.016 * ZIIYXZZIIIZZIIIZZZIY\n", - "+0.016 * ZIIXYZZIIIZZIIIZZZIY\n", - "+0.016 * IIIYYIIIIIIIIIIIIIIX\n", - "+0.016 * IIIXXIIIIIIIIIIIIIIX\n", - "-0.015 * ZIZXYIZZZIZZYIIZZIIZ\n", - "+0.015 * ZIZYXIZZZIZZYIIZZIIZ\n", - "-0.015 * IIZXXZIZZIIIXIIIIZIZ\n", - "-0.015 * IIZYYZIZZIIIXIIIIZIZ\n", - "-0.000 * ZIYZXZZIIIZZIIIZZZIY\n", - "+0.000 * ZIXZYZZIIIZZIIIZZZIY\n", - "+0.000 * IIYZYIIIIIIIIIIIIIIX\n", - "+0.000 * IIXZXIIIIIIIIIIIIIIX\n", - "-0.000 * ZIXIYIZZZIZZYIIZZIIZ\n", - "+0.000 * ZIYIXIZZZIZZYIIZZIIZ\n", - "-0.000 * IIXIXZIZZIIIXIIIIZIZ\n", - "-0.000 * IIYIYZIZZIIIXIIIIZIZ\n", - "+0.005 * ZYIIYIZZZIZZIZZIIZZZ\n", - "+0.005 * ZXIIXIZZZIZZIZZIIZZZ\n", - "-0.005 * IYZZYIIIIIIIIIIIIIIZ\n", - "-0.005 * IXZZXIIIIIIIIIIIIIIZ\n", - "-0.000 * ZYIIYIZZZIZZIZZIIZXZ\n", - "-0.000 * ZXIIXIZZZIZZIZZIIZXZ\n", - "+0.000 * IYIIXZIZZIIIIZZZZIYZ\n", - "-0.000 * IXIIYZIZZIIIIZZZZIYZ\n", - "-0.003 * ZYIIYIZZZIZZIZXZZIIZ\n", - "-0.003 * ZXIIXIZZZIZZIZXZZIIZ\n", - "+0.003 * IYIIXZIZZIIIIZYIIZIZ\n", - "-0.003 * IXIIYZIZZIIIIZYIIZIZ\n", - "-0.000 * ZYIIYIZZZIZZIXIZZIIZ\n", - "-0.000 * ZXIIXIZZZIZZIXIZZIIZ\n", - "+0.000 * IYIIXZIZZIIIIYIIIZIZ\n", - "-0.000 * IXIIYZIZZIIIIYIIIZIZ\n", - "-0.007 * XZIIYIZZZIZZIZZYZIIZ\n", - "+0.007 * YZIIXIZZZIZZIZZYZIIZ\n", - "+0.007 * YZIIXZIZZIIIIZZYIZIZ\n", - "-0.007 * XZIIYZIZZIIIIZZYIZIZ\n", - "+0.123 * ZIIZZZZIIIZZIIIZZZII\n", - "+0.012 * ZIZIIIZZZIZZIZZIIXIZ\n", - "-0.012 * IIZIZZIZZIIIIZZZZXIZ\n", - "-0.002 * ZIZIIIZZZIZXZIIZZIIZ\n", - "+0.002 * IIZIZZIZZIIXZIIIIZIZ\n", - "+0.000 * ZYIXIIZZZIZZIZZIYIIZ\n", - "-0.000 * ZXIYIIZZZIZZIZZIYIIZ\n", - "-0.000 * IYIXZZIZZIIIIZZZYZIZ\n", - "+0.000 * IXIYZZIZZIIIIZZZYZIZ\n", - "-0.009 * ZYIXIIZZZIZZIZZYZIIZ\n", - "+0.009 * ZXIYIIZZZIZZIZZYZIIZ\n", - "+0.009 * IYIXZZIZZIIIIZZYIZIZ\n", - "-0.009 * IXIYZZIZZIIIIZZYIZIZ\n", - "-0.007 * XZIXIIZZZIZZIZZIIZZZ\n", - "-0.007 * YZIYIIZZZIZZIZZIIZZZ\n", - "-0.007 * YZZYIIIIIIIIIIIIIIIZ\n", - "-0.007 * XZZXIIIIIIIIIIIIIIIZ\n", - "+0.000 * XZIXIIZZZIZZIZZIIZXZ\n", - "+0.000 * YZIYIIZZZIZZIZZIIZXZ\n", - "+0.000 * YZIXZZIZZIIIIZZZZIYZ\n", - "-0.000 * XZIYZZIZZIIIIZZZZIYZ\n", - "+0.002 * XZIXIIZZZIZZIZXZZIIZ\n", - "+0.002 * YZIYIIZZZIZZIZXZZIIZ\n", - "+0.002 * YZIXZZIZZIIIIZYIIZIZ\n", - "-0.002 * XZIYZZIZZIIIIZYIIZIZ\n", - "+0.123 * ZIZIZZZIIIZZIIIZZZII\n", - "+0.012 * ZIIZIIZZZIZZIZZIIXIZ\n", - "-0.012 * IIIZZZIZZIIIIZZZZXIZ\n", - "-0.002 * ZIIZIIZZZIZXZIIZZIIZ\n", - "+0.002 * IIIZZZIZZIIXZIIIIZIZ\n", - "-0.009 * ZYXZIIZZZIZZIZZIYIIZ\n", - "+0.009 * ZXYZIIZZZIZZIZZIYIIZ\n", - "+0.009 * IYXZZZIZZIIIIZZZYZIZ\n", - "-0.009 * IXYZZZIZZIIIIZZZYZIZ\n", - "-0.000 * ZYXZIIZZZIZZIZZYZIIZ\n", - "+0.000 * ZXYZIIZZZIZZIZZYZIIZ\n", - "+0.000 * IYXZZZIZZIIIIZZYIZIZ\n", - "-0.000 * IXYZZZIZZIIIIZZYIZIZ\n", - "-0.000 * XZXZIIZZZIZZIZZIIZZZ\n", - "-0.000 * YZYZIIZZZIZZIZZIIZZZ\n", - "-0.000 * YZYIIIIIIIIIIIIIIIIZ\n", - "-0.000 * XZXIIIIIIIIIIIIIIIIZ\n", - "-0.007 * XZXZIIZZZIZZIZZIIZXZ\n", - "-0.007 * YZYZIIZZZIZZIZZIIZXZ\n", - "-0.007 * YZXZZZIZZIIIIZZZZIYZ\n", - "+0.007 * XZYZZZIZZIIIIZZZZIYZ\n", - "+0.002 * XZXZIIZZZIZZIXIZZIIZ\n", - "+0.002 * YZYZIIZZZIZZIXIZZIIZ\n", - "+0.002 * YZXZZZIZZIIIIYIIIZIZ\n", - "-0.002 * XZYZZZIZZIIIIYIIIZIZ\n", - "+0.132 * ZZIIZZZIIIZZIIIZZZII\n", - "+0.016 * ZZZZIIZZZIZZIZZIIXIZ\n", - "-0.016 * IZZZZZIZZIIIIZZZZXIZ\n", - "+0.005 * ZZZZIIZZZIZXZIIZZIIZ\n", - "-0.005 * IZZZZZIZZIIXZIIIIZIZ\n", - "-0.007 * XYIIZZZIIIZZIIIZZZIY\n", - "+0.007 * YXIIZZZIIIZZIIIZZZIY\n", - "+0.007 * YYIIIIIIIIIIIIIIIIIX\n", - "+0.007 * XXIIIIIIIIIIIIIIIIIX\n", - "-0.020 * XYZZIIZZZIZZYIIZZIIZ\n", - "+0.020 * YXZZIIZZZIZZYIIZZIIZ\n", - "+0.020 * YYZZZZIZZIIIXIIIIZIZ\n", - "+0.020 * XXZZZZIZZIIIXIIIIZIZ\n", - "+0.143 * IIIIZZZIIIZZIIIZZZII\n", - "+0.024 * IIZZIIZZZIZZIZZIIXIZ\n", - "-0.024 * ZIZZZZIZZIIIIZZZZXIZ\n", - "-0.002 * IIZZIIZZZIZXZIIZZIIZ\n", - "+0.002 * ZIZZZZIZZIIXZIIIIZIZ\n", - "+0.102 * IIZZZZIZZIIIIZZZZIZZ\n", - "-0.008 * IIZZZZIZZIIIIZXIIZIZ\n", - "+0.008 * IIIIIIIIIIIIIIXZZZZZ\n", - "-0.000 * IIZZZZIZZIIIIXIIIZIZ\n", - "+0.000 * IIIIIIIIIIIIIXZZZZZZ\n", - "+0.102 * IIIIIIIIIIIIIIIIIIZZ\n", - "-0.000 * IIIIIIIIIIIIIIYZZZYZ\n", - "-0.000 * IIIIIIIIIIIIIIXZZZXZ\n", - "+0.008 * IIIIIIIIIIIIIYZZZZYZ\n", - "+0.008 * IIIIIIIIIIIIIXZZZZXZ\n", - "+0.060 * IIIIIIIIIIIIIIIIIZIZ\n", - "+0.005 * IIIIIIIIIIIYZZZZZYIZ\n", - "+0.005 * IIIIIIIIIIIXZZZZZXIZ\n", - "+0.109 * IIIIIIIIIIIIIIIIZIIZ\n", - "+0.109 * IIIIIIIIIIIIIIIZIIIZ\n", - "+0.101 * IIIIIIIIIIIIIIZIIIIZ\n", - "+0.101 * IIIIIIIIIIIIIZIIIIIZ\n", - "+0.100 * IIIIIIIIIIIIZIIIIIIZ\n", - "+0.113 * IIIIIIIIIIIZIIIIIIIZ\n", - "-0.002 * IIIIIIIIIIIIYZZZZZZY\n", - "-0.002 * IIIIIIIIIIIIXZZZZZZX\n", - "+0.001 * IIIIIIIIIIIIIIIIYXIY\n", - "-0.000 * IIZZZZIZZIIIIZZZXYZY\n", - "-0.001 * IIZZZZIZZIIIIZZZYXZY\n", - "-0.001 * IIIIIIIIIIIIIIIIYYIX\n", - "+0.000 * IIIIIIIIIIIIIIIIXXIX\n", - "+0.001 * IIZZZZIZZIIIIZZZYYZX\n", - "+0.042 * IIIIIIIIIIIIIIIYZXIY\n", - "-0.000 * IIZZZZIZZIIIIZZXIYZY\n", - "-0.041 * IIZZZZIZZIIIIZZYIXZY\n", - "-0.041 * IIIIIIIIIIIIIIIYZYIX\n", - "+0.000 * IIIIIIIIIIIIIIIXZXIX\n", - "+0.042 * IIZZZZIZZIIIIZZYIYZX\n", - "-0.000 * IIIIIIIIIIIYZZZZXIIY\n", - "+0.000 * IIZZZZIZZIIYZIIIXIZY\n", - "+0.000 * IIZZZZIZZIIXZIIIYIZY\n", - "+0.000 * IIIIIIIIIIIYZZZZYIIX\n", - "-0.000 * IIIIIIIIIIIXZZZZXIIX\n", - "+0.000 * IIZZZZIZZIIXZIIIXIZX\n", - "-0.006 * IIIIIIIIIIIYZZZXIIIY\n", - "+0.005 * IIZZZZIZZIIYZIIXZIZY\n", - "+0.000 * IIZZZZIZZIIXZIIYZIZY\n", - "+0.000 * IIIIIIIIIIIYZZZYIIIX\n", - "-0.005 * IIIIIIIIIIIXZZZXIIIX\n", - "+0.006 * IIZZZZIZZIIXZIIXZIZX\n", - "-0.011 * IIIIIIIIIIIIYZXIIIIY\n", - "+0.010 * IIZZZZIZZIIIYIXZZIZY\n", - "+0.001 * IIZZZZIZZIIIXIYZZIZY\n", - "+0.001 * IIIIIIIIIIIIYZYIIIIX\n", - "-0.010 * IIIIIIIIIIIIXZXIIIIX\n", - "+0.011 * IIZZZZIZZIIIXIXZZIZX\n", - "-0.001 * IIIIIIIIIIIIYXIIIIIY\n", - "+0.001 * IIZZZZIZZIIIYXZZZIZY\n", - "+0.000 * IIZZZZIZZIIIXYZZZIZY\n", - "+0.000 * IIIIIIIIIIIIYYIIIIIX\n", - "-0.001 * IIIIIIIIIIIIXXIIIIIX\n", - "+0.001 * IIZZZZIZZIIIXXZZZIZX\n", - "-0.002 * IIZZZZIZZIIIYIIIIZZY\n", - "-0.002 * IIZZZZIZZIIIXIIIIZZX\n", - "+0.042 * IIZZZZIZZIIIIZZZXXYY\n", - "-0.000 * IIZZZZIZZIIIIZZZXYXY\n", - "-0.041 * IIZZZZIZZIIIIZZZYXXY\n", - "-0.041 * IIZZZZIZZIIIIZZZXYYX\n", - "-0.000 * IIZZZZIZZIIIIZZZYXYX\n", - "+0.042 * IIZZZZIZZIIIIZZZYYXX\n", - "-0.001 * IIZZZZIZZIIIIZZXIXYY\n", - "+0.000 * IIZZZZIZZIIIIZZXIYXY\n", - "+0.001 * IIZZZZIZZIIIIZZYIXXY\n", - "+0.001 * IIZZZZIZZIIIIZZXIYYX\n", - "+0.000 * IIZZZZIZZIIIIZZYIXYX\n", - "-0.001 * IIZZZZIZZIIIIZZYIYXX\n", - "+0.006 * IIZZZZIZZIIYZIIIYIYY\n", - "+0.005 * IIZZZZIZZIIYZIIIXIXY\n", - "+0.000 * IIZZZZIZZIIXZIIIYIXY\n", - "+0.000 * IIZZZZIZZIIYZIIIXIYX\n", - "+0.005 * IIZZZZIZZIIXZIIIYIYX\n", - "+0.006 * IIZZZZIZZIIXZIIIXIXX\n", - "-0.000 * IIZZZZIZZIIYZIIYZIYY\n", - "-0.000 * IIZZZZIZZIIYZIIXZIXY\n", - "-0.000 * IIZZZZIZZIIXZIIYZIXY\n", - "-0.000 * IIZZZZIZZIIYZIIXZIYX\n", - "-0.000 * IIZZZZIZZIIXZIIYZIYX\n", - "-0.000 * IIZZZZIZZIIXZIIXZIXX\n", - "-0.001 * IIZZZZIZZIIIYIYZZIYY\n", - "-0.001 * IIZZZZIZZIIIYIXZZIXY\n", - "-0.000 * IIZZZZIZZIIIXIYZZIXY\n", - "-0.000 * IIZZZZIZZIIIYIXZZIYX\n", - "-0.001 * IIZZZZIZZIIIXIYZZIYX\n", - "-0.001 * IIZZZZIZZIIIXIXZZIXX\n", - "+0.011 * IIZZZZIZZIIIYYZZZIYY\n", - "+0.010 * IIZZZZIZZIIIYXZZZIXY\n", - "+0.001 * IIZZZZIZZIIIXYZZZIXY\n", - "+0.001 * IIZZZZIZZIIIYXZZZIYX\n", - "+0.010 * IIZZZZIZZIIIXYZZZIYX\n", - "+0.011 * IIZZZZIZZIIIXXZZZIXX\n", - "-0.018 * IIZZZZIZZIIIYIIIIIIY\n", - "-0.018 * IIZZZZIZZIIIXIIIIIIX\n", - "+0.000 * IIZZZZIZZIIIIZXIYXIY\n", - "-0.001 * IIZZZZIZZIIIIZXIXYIY\n", - "-0.001 * IIZZZZIZZIIIIZYIYYIY\n", - "-0.001 * IIZZZZIZZIIIIZXIXXIX\n", - "-0.001 * IIZZZZIZZIIIIZYIYXIX\n", - "+0.000 * IIZZZZIZZIIIIZYIXYIX\n", - "-0.000 * IIZZZZIZZIIIIXIIYXIY\n", - "+0.036 * IIZZZZIZZIIIIXIIXYIY\n", - "+0.035 * IIZZZZIZZIIIIYIIYYIY\n", - "+0.035 * IIZZZZIZZIIIIXIIXXIX\n", - "+0.036 * IIZZZZIZZIIIIYIIYXIX\n", - "-0.000 * IIZZZZIZZIIIIYIIXYIX\n", - "-0.000 * IIZZZZIZZIIIIZXYZXIY\n", - "+0.036 * IIZZZZIZZIIIIZXXZYIY\n", - "+0.035 * IIZZZZIZZIIIIZYYZYIY\n", - "+0.035 * IIZZZZIZZIIIIZXXZXIX\n", - "+0.036 * IIZZZZIZZIIIIZYYZXIX\n", - "-0.000 * IIZZZZIZZIIIIZYXZYIX\n", - "-0.000 * IIZZZZIZZIIIIXIYZXIY\n", - "+0.001 * IIZZZZIZZIIIIXIXZYIY\n", - "+0.001 * IIZZZZIZZIIIIYIYZYIY\n", - "+0.001 * IIZZZZIZZIIIIXIXZXIX\n", - "+0.001 * IIZZZZIZZIIIIYIYZXIX\n", - "-0.000 * IIZZZZIZZIIIIYIXZYIX\n", - "-0.006 * IIZZZZIZZIIYXZZZZXIY\n", - "-0.032 * IIZZZZIZZIIYYZZZZYIY\n", - "-0.026 * IIZZZZIZZIIXXZZZZYIY\n", - "-0.026 * IIZZZZIZZIIYYZZZZXIX\n", - "-0.032 * IIZZZZIZZIIXXZZZZXIX\n", - "-0.006 * IIZZZZIZZIIXYZZZZYIX\n", - "+0.009 * IIZZZZIZZIIIYIIIZZIY\n", - "+0.009 * IIZZZZIZZIIIXIIIZZIX\n", - "+0.000 * IIZZZZIZZIIYZIYZYZIY\n", - "+0.000 * IIZZZZIZZIIYZIXZXZIY\n", - "+0.000 * IIZZZZIZZIIXZIYZXZIY\n", - "+0.000 * IIZZZZIZZIIYZIXZYZIX\n", - "+0.000 * IIZZZZIZZIIXZIYZYZIX\n", - "+0.000 * IIZZZZIZZIIXZIXZXZIX\n", - "-0.007 * IIZZZZIZZIIYZYZZYZIY\n", - "-0.007 * IIZZZZIZZIIYZXZZXZIY\n", - "-0.001 * IIZZZZIZZIIXZYZZXZIY\n", - "-0.001 * IIZZZZIZZIIYZXZZYZIX\n", - "-0.007 * IIZZZZIZZIIXZYZZYZIX\n", - "-0.007 * IIZZZZIZZIIXZXZZXZIX\n", - "+0.009 * IIZZZZIZZIIIYIIZIZIY\n", - "+0.009 * IIZZZZIZZIIIXIIZIZIX\n", - "-0.007 * IIZZZZIZZIIYZIYYIZIY\n", - "-0.007 * IIZZZZIZZIIYZIXXIZIY\n", - "-0.001 * IIZZZZIZZIIXZIYXIZIY\n", - "-0.001 * IIZZZZIZZIIYZIXYIZIX\n", - "-0.007 * IIZZZZIZZIIXZIYYIZIX\n", - "-0.007 * IIZZZZIZZIIXZIXXIZIX\n", - "-0.000 * IIZZZZIZZIIYZYZYIZIY\n", - "-0.000 * IIZZZZIZZIIYZXZXIZIY\n", - "-0.000 * IIZZZZIZZIIXZYZXIZIY\n", - "-0.000 * IIZZZZIZZIIYZXZYIZIX\n", - "-0.000 * IIZZZZIZZIIXZYZYIZIX\n", - "-0.000 * IIZZZZIZZIIXZXZXIZIX\n", - "+0.000 * IIZZZZIZZIIIYIZIIZIY\n", - "+0.000 * IIZZZZIZZIIIXIZIIZIX\n", - "+0.000 * IIZZZZIZZIIIYZIIIZIY\n", - "+0.000 * IIZZZZIZZIIIXZIIIZIX\n", - "-0.011 * IIZZZZIZZIIZYIIIIZIY\n", - "-0.011 * IIZZZZIZZIIZXIIIIZIX\n", - "+0.113 * ZZZZZZZZZZZIIIIIIIIZ\n", - "-0.004 * ZZIIIIZIIZZIYIIIIZIY\n", - "-0.004 * ZZIIIIZIIZZIXIIIIZIX\n", - "-0.048 * ZZIIIIZIIZXIIZZZZYIY\n", - "+0.048 * IIZZZZIZZIXIIZZZZYIY\n", - "-0.048 * ZZIIIIZIIZXIIZZZZXIX\n", - "+0.048 * IIZZZZIZZIXIIZZZZXIX\n", - "-0.000 * ZZIIIIZIIZXYZIIIIZIY\n", - "+0.000 * IIZZZZIZZIXYZIIIIZIY\n", - "-0.000 * ZZIIIIZIIZXXZIIIIZIX\n", - "+0.000 * IIZZZZIZZIXXZIIIIZIX\n", - "-0.006 * ZZZZZZZZZXIIIIIIIIIZ\n", - "+0.006 * IIIIIIIIIXZIIIIIIIIZ\n", - "-0.013 * ZZIIIIZIIXIIYIIIIZIY\n", - "+0.013 * IIZZZZIZZXZIYIIIIZIY\n", - "-0.013 * ZZIIIIZIIXIIXIIIIZIX\n", - "+0.013 * IIZZZZIZZXZIXIIIIZIX\n", - "-0.001 * ZZIIIIZIYIIIIZZZZIZY\n", - "+0.001 * IIZZZZIZYZZIIZZZZIZY\n", - "-0.001 * ZZZZZZZZXIIIIIIIIIIX\n", - "+0.001 * IIIIIIIIXZZIIIIIIIIX\n", - "-0.013 * ZZIIIIZIYIIIIZXIIZIY\n", - "+0.013 * IIZZZZIZYZZIIZXIIZIY\n", - "+0.013 * ZZIIIIZIYIIIIZYIIZIX\n", - "-0.013 * IIZZZZIZYZZIIZYIIZIX\n", - "-0.001 * ZZIIIIZIYIIIIXIIIZIY\n", - "+0.001 * IIZZZZIZYZZIIXIIIZIY\n", - "+0.001 * ZZIIIIZIYIIIIYIIIZIX\n", - "-0.001 * IIZZZZIZYZZIIYIIIZIX\n", - "-0.001 * ZZIIIIZYZIIIIZZZZIXY\n", - "+0.001 * IIZZZZIYIZZIIZZZZIXY\n", - "+0.001 * ZZIIIIZYZIIIIZZZZIYX\n", - "-0.001 * IIZZZZIYIZZIIZZZZIYX\n", - "+0.001 * ZZIIIIZYZIIIIZXIIZIY\n", - "-0.001 * IIZZZZIYIZZIIZXIIZIY\n", - "-0.001 * ZZIIIIZYZIIIIZYIIZIX\n", - "+0.001 * IIZZZZIYIZZIIZYIIZIX\n", - "-0.013 * ZZIIIIZYZIIIIXIIIZIY\n", - "+0.013 * IIZZZZIYIZZIIXIIIZIY\n", - "+0.013 * ZZIIIIZYZIIIIYIIIZIX\n", - "-0.013 * IIZZZZIYIZZIIYIIIZIX\n", - "+0.011 * ZZIIIIXZZIIIIZZZZYIY\n", - "-0.011 * IIZZZZXIIZZIIZZZZYIY\n", - "+0.011 * ZZIIIIXZZIIIIZZZZXIX\n", - "-0.011 * IIZZZZXIIZZIIZZZZXIX\n", - "+0.007 * ZZIIIIXZZIIYZIIIIZIY\n", - "-0.007 * IIZZZZXIIZZYZIIIIZIY\n", - "+0.007 * ZZIIIIXZZIIXZIIIIZIX\n", - "-0.007 * IIZZZZXIIZZXZIIIIZIX\n", - "+0.008 * ZZIIIYIZZIIIIZZZXZIY\n", - "-0.008 * IIZZZYZIIZZIIZZZXZIY\n", - "-0.008 * ZZIIIYIZZIIIIZZZYZIX\n", - "+0.008 * IIZZZYZIIZZIIZZZYZIX\n", - "+0.008 * ZZIIYZIZZIIIIZZXIZIY\n", - "-0.008 * IIZZYIZIIZZIIZZXIZIY\n", - "-0.008 * ZZIIYZIZZIIIIZZYIZIX\n", - "+0.008 * IIZZYIZIIZZIIZZYIZIX\n", - "-0.007 * ZZIYZZIZZIIIIZZZZIZY\n", - "+0.007 * IIZYIIZIIZZIIZZZZIZY\n", - "-0.007 * ZZZXIIIIIIIIIIIIIIIX\n", - "+0.007 * IIIXZZZZZZZIIIIIIIIX\n", - "+0.000 * ZZIYZZIZZIIIIZZZZIXY\n", - "-0.000 * IIZYIIZIIZZIIZZZZIXY\n", - "-0.000 * ZZIYZZIZZIIIIZZZZIYX\n", - "+0.000 * IIZYIIZIIZZIIZZZZIYX\n", - "-0.000 * ZZIYZZIZZIIIIZXIIZIY\n", - "+0.000 * IIZYIIZIIZZIIZXIIZIY\n", - "+0.000 * ZZIYZZIZZIIIIZYIIZIX\n", - "-0.000 * IIZYIIZIIZZIIZYIIZIX\n", - "-0.000 * ZZYZZZIZZIIIIZZZZIZY\n", - "+0.000 * IIYIIIZIIZZIIZZZZIZY\n", - "-0.000 * ZZXIIIIIIIIIIIIIIIIX\n", - "+0.000 * IIXZZZZZZZZIIIIIIIIX\n", - "-0.007 * ZZYZZZIZZIIIIZZZZIXY\n", - "+0.007 * IIYIIIZIIZZIIZZZZIXY\n", - "+0.007 * ZZYZZZIZZIIIIZZZZIYX\n", - "-0.007 * IIYIIIZIIZZIIZZZZIYX\n", - "-0.000 * ZZYZZZIZZIIIIXIIIZIY\n", - "+0.000 * IIYIIIZIIZZIIXIIIZIY\n", - "+0.000 * ZZYZZZIZZIIIIYIIIZIX\n", - "-0.000 * IIYIIIZIIZZIIYIIIZIX\n", - "-0.005 * ZXIIIIIIIIIIIIIIIIIZ\n", - "+0.005 * IXZZZZZZZZZIIIIIIIIZ\n", - "-0.007 * ZXZZZZIZZIIIYIIIIZIY\n", - "+0.007 * IXIIIIZIIZZIYIIIIZIY\n", - "-0.007 * ZXZZZZIZZIIIXIIIIZIX\n", - "+0.007 * IXIIIIZIIZZIXIIIIZIX\n", - "-0.009 * XIZZZZIZZIIIIZZZZYIY\n", - "+0.009 * XZIIIIZIIZZIIZZZZYIY\n", - "-0.009 * XIZZZZIZZIIIIZZZZXIX\n", - "+0.009 * XZIIIIZIIZZIIZZZZXIX\n", - "-0.004 * XIZZZZIZZIIYZIIIIZIY\n", - "+0.004 * XZIIIIZIIZZYZIIIIZIY\n", - "-0.004 * XIZZZZIZZIIXZIIIIZIX\n", - "+0.004 * XZIIIIZIIZZXZIIIIZIX\n", - "+0.115 * IIIIIIIIIIZIIIIIIIIZ\n", - "-0.000 * IIZZZZIZZIZIYIIIIZIY\n", - "-0.000 * IIZZZZIZZIZIXIIIIZIX\n", - "-0.022 * IIZZZZIZZYYIIZZZZYIY\n", - "-0.022 * IIZZZZIZZXXIIZZZZYIY\n", - "-0.022 * IIZZZZIZZYYIIZZZZXIX\n", - "-0.022 * IIZZZZIZZXXIIZZZZXIX\n", - "-0.008 * IIZZZZIZZYYYZIIIIZIY\n", - "-0.008 * IIZZZZIZZXXYZIIIIZIY\n", - "-0.008 * IIZZZZIZZYYXZIIIIZIX\n", - "-0.008 * IIZZZZIZZXXXZIIIIZIX\n", - "+0.000 * IIZZZZIZXZYIIZZZXZIY\n", - "-0.000 * IIZZZZIZYZXIIZZZXZIY\n", - "-0.000 * IIZZZZIZXZYIIZZZYZIX\n", - "+0.000 * IIZZZZIZYZXIIZZZYZIX\n", - "+0.006 * IIZZZZIZXZYIIZZXIZIY\n", - "-0.006 * IIZZZZIZYZXIIZZXIZIY\n", - "-0.006 * IIZZZZIZXZYIIZZYIZIX\n", - "+0.006 * IIZZZZIZYZXIIZZYIZIX\n", - "+0.006 * IIZZZZIXIZYIIZZZXZIY\n", - "-0.006 * IIZZZZIYIZXIIZZZXZIY\n", - "-0.006 * IIZZZZIXIZYIIZZZYZIX\n", - "+0.006 * IIZZZZIYIZXIIZZZYZIX\n", - "-0.000 * IIZZZZIXIZYIIZZXIZIY\n", - "+0.000 * IIZZZZIYIZXIIZZXIZIY\n", - "+0.000 * IIZZZZIXIZYIIZZYIZIX\n", - "-0.000 * IIZZZZIYIZXIIZZYIZIX\n", - "+0.005 * IIIIIIYZZZYIIIIIIIIZ\n", - "+0.005 * IIIIIIXZZZXIIIIIIIIZ\n", - "+0.011 * IIZZZZYIIZYIYIIIIZIY\n", - "+0.011 * IIZZZZXIIZXIYIIIIZIY\n", - "+0.011 * IIZZZZYIIZYIXIIIIZIX\n", - "+0.011 * IIZZZZXIIZXIXIIIIZIX\n", - "+0.000 * IIZZZXZIIZYIIZZZZIZY\n", - "-0.000 * IIZZZYZIIZXIIZZZZIZY\n", - "-0.000 * IIIIIYZZZZYIIIIIIIIX\n", - "-0.000 * IIIIIXZZZZXIIIIIIIIX\n", - "+0.004 * IIZZZXZIIZYIIZZZZIXY\n", - "-0.004 * IIZZZYZIIZXIIZZZZIXY\n", - "-0.004 * IIZZZXZIIZYIIZZZZIYX\n", - "+0.004 * IIZZZYZIIZXIIZZZZIYX\n", - "+0.000 * IIZZZXZIIZYIIZXIIZIY\n", - "-0.000 * IIZZZYZIIZXIIZXIIZIY\n", - "-0.000 * IIZZZXZIIZYIIZYIIZIX\n", - "+0.000 * IIZZZYZIIZXIIZYIIZIX\n", - "-0.011 * IIZZZXZIIZYIIXIIIZIY\n", - "+0.011 * IIZZZYZIIZXIIXIIIZIY\n", - "+0.011 * IIZZZXZIIZYIIYIIIZIX\n", - "-0.011 * IIZZZYZIIZXIIYIIIZIX\n", - "+0.004 * IIZZXIZIIZYIIZZZZIZY\n", - "-0.004 * IIZZYIZIIZXIIZZZZIZY\n", - "-0.004 * IIIIYZZZZZYIIIIIIIIX\n", - "-0.004 * IIIIXZZZZZXIIIIIIIIX\n", - "-0.000 * IIZZXIZIIZYIIZZZZIXY\n", - "+0.000 * IIZZYIZIIZXIIZZZZIXY\n", - "+0.000 * IIZZXIZIIZYIIZZZZIYX\n", - "-0.000 * IIZZYIZIIZXIIZZZZIYX\n", - "-0.011 * IIZZXIZIIZYIIZXIIZIY\n", - "+0.011 * IIZZYIZIIZXIIZXIIZIY\n", - "+0.011 * IIZZXIZIIZYIIZYIIZIX\n", - "-0.011 * IIZZYIZIIZXIIZYIIZIX\n", - "-0.000 * IIZZXIZIIZYIIXIIIZIY\n", - "+0.000 * IIZZYIZIIZXIIXIIIZIY\n", - "+0.000 * IIZZXIZIIZYIIYIIIZIX\n", - "-0.000 * IIZZYIZIIZXIIYIIIZIX\n", - "+0.000 * IIZXIIZIIZYIIZZZXZIY\n", - "-0.000 * IIZYIIZIIZXIIZZZXZIY\n", - "-0.000 * IIZXIIZIIZYIIZZZYZIX\n", - "+0.000 * IIZYIIZIIZXIIZZZYZIX\n", - "-0.006 * IIZXIIZIIZYIIZZXIZIY\n", - "+0.006 * IIZYIIZIIZXIIZZXIZIY\n", - "+0.006 * IIZXIIZIIZYIIZZYIZIX\n", - "-0.006 * IIZYIIZIIZXIIZZYIZIX\n", - "-0.006 * IIXIIIZIIZYIIZZZXZIY\n", - "+0.006 * IIYIIIZIIZXIIZZZXZIY\n", - "+0.006 * IIXIIIZIIZYIIZZZYZIX\n", - "-0.006 * IIYIIIZIIZXIIZZZYZIX\n", - "-0.000 * IIXIIIZIIZYIIZZXIZIY\n", - "+0.000 * IIYIIIZIIZXIIZZXIZIY\n", - "+0.000 * IIXIIIZIIZYIIZZYIZIX\n", - "-0.000 * IIYIIIZIIZXIIZZYIZIX\n", - "-0.012 * IYIIIIZIIZYIIZZZZYIY\n", - "-0.012 * IXIIIIZIIZXIIZZZZYIY\n", - "-0.012 * IYIIIIZIIZYIIZZZZXIX\n", - "-0.012 * IXIIIIZIIZXIIZZZZXIX\n", - "-0.000 * IYIIIIZIIZYYZIIIIZIY\n", - "-0.000 * IXIIIIZIIZXYZIIIIZIY\n", - "-0.000 * IYIIIIZIIZYXZIIIIZIX\n", - "-0.000 * IXIIIIZIIZXXZIIIIZIX\n", - "-0.002 * YZZZZZZZZZYIIIIIIIIZ\n", - "-0.002 * XZZZZZZZZZXIIIIIIIIZ\n", - "-0.007 * YZIIIIZIIZYIYIIIIZIY\n", - "-0.007 * XZIIIIZIIZXIYIIIIZIY\n", - "-0.007 * YZIIIIZIIZYIXIIIIZIX\n", - "-0.007 * XZIIIIZIIZXIXIIIIZIX\n", - "+0.125 * IIIIIIIIIZIIIIIIIIIZ\n", - "+0.010 * IIZZZZIZZZIIYIIIIZIY\n", - "+0.010 * IIZZZZIZZZIIXIIIIZIX\n", - "-0.008 * IIZZZZIZXYIIIZZZZIZY\n", - "+0.008 * IIZZZZIZYXIIIZZZZIZY\n", - "+0.008 * IIIIIIIIYYIIIIIIIIIX\n", - "+0.008 * IIIIIIIIXXIIIIIIIIIX\n", - "+0.000 * IIZZZZIZXYIIIZXIIZIY\n", - "-0.000 * IIZZZZIZYXIIIZXIIZIY\n", - "-0.000 * IIZZZZIZXYIIIZYIIZIX\n", - "+0.000 * IIZZZZIZYXIIIZYIIZIX\n", - "+0.000 * IIZZZZIZXYIIIXIIIZIY\n", - "-0.000 * IIZZZZIZYXIIIXIIIZIY\n", - "-0.000 * IIZZZZIZXYIIIYIIIZIX\n", - "+0.000 * IIZZZZIZYXIIIYIIIZIX\n", - "-0.008 * IIZZZZIXIYIIIZZZZIXY\n", - "+0.008 * IIZZZZIYIXIIIZZZZIXY\n", - "+0.008 * IIZZZZIXIYIIIZZZZIYX\n", - "-0.008 * IIZZZZIYIXIIIZZZZIYX\n", - "-0.000 * IIZZZZIXIYIIIZXIIZIY\n", - "+0.000 * IIZZZZIYIXIIIZXIIZIY\n", - "+0.000 * IIZZZZIXIYIIIZYIIZIX\n", - "-0.000 * IIZZZZIYIXIIIZYIIZIX\n", - "+0.000 * IIZZZZIXIYIIIXIIIZIY\n", - "-0.000 * IIZZZZIYIXIIIXIIIZIY\n", - "-0.000 * IIZZZZIXIYIIIYIIIZIX\n", - "+0.000 * IIZZZZIYIXIIIYIIIZIX\n", - "+0.068 * IIZZZZYIIYIIIZZZZYIY\n", - "+0.068 * IIZZZZXIIXIIIZZZZYIY\n", - "+0.068 * IIZZZZYIIYIIIZZZZXIX\n", - "+0.068 * IIZZZZXIIXIIIZZZZXIX\n", - "+0.011 * IIZZZZYIIYIYZIIIIZIY\n", - "+0.011 * IIZZZZXIIXIYZIIIIZIY\n", - "+0.011 * IIZZZZYIIYIXZIIIIZIX\n", - "+0.011 * IIZZZZXIIXIXZIIIIZIX\n", - "-0.009 * IIZZZXZIIYIIIZZZXZIY\n", - "+0.009 * IIZZZYZIIXIIIZZZXZIY\n", - "+0.009 * IIZZZXZIIYIIIZZZYZIX\n", - "-0.009 * IIZZZYZIIXIIIZZZYZIX\n", - "-0.009 * IIZZXIZIIYIIIZZXIZIY\n", - "+0.009 * IIZZYIZIIXIIIZZXIZIY\n", - "+0.009 * IIZZXIZIIYIIIZZYIZIX\n", - "-0.009 * IIZZYIZIIXIIIZZYIZIX\n", - "+0.000 * IIZXIIZIIYIIIZZZZIZY\n", - "-0.000 * IIZYIIZIIXIIIZZZZIZY\n", - "-0.000 * IIIYZZZZZYIIIIIIIIIX\n", - "-0.000 * IIIXZZZZZXIIIIIIIIIX\n", - "-0.000 * IIZXIIZIIYIIIZZZZIXY\n", - "+0.000 * IIZYIIZIIXIIIZZZZIXY\n", - "+0.000 * IIZXIIZIIYIIIZZZZIYX\n", - "-0.000 * IIZYIIZIIXIIIZZZZIYX\n", - "-0.012 * IIZXIIZIIYIIIZXIIZIY\n", - "+0.012 * IIZYIIZIIXIIIZXIIZIY\n", - "+0.012 * IIZXIIZIIYIIIZYIIZIX\n", - "-0.012 * IIZYIIZIIXIIIZYIIZIX\n", - "+0.000 * IIXIIIZIIYIIIZZZZIZY\n", - "-0.000 * IIYIIIZIIXIIIZZZZIZY\n", - "-0.000 * IIYZZZZZZYIIIIIIIIIX\n", - "-0.000 * IIXZZZZZZXIIIIIIIIIX\n", - "+0.000 * IIXIIIZIIYIIIZZZZIXY\n", - "-0.000 * IIYIIIZIIXIIIZZZZIXY\n", - "-0.000 * IIXIIIZIIYIIIZZZZIYX\n", - "+0.000 * IIYIIIZIIXIIIZZZZIYX\n", - "-0.012 * IIXIIIZIIYIIIXIIIZIY\n", - "+0.012 * IIYIIIZIIXIIIXIIIZIY\n", - "+0.012 * IIXIIIZIIYIIIYIIIZIX\n", - "-0.012 * IIYIIIZIIXIIIYIIIZIX\n", - "+0.010 * IYZZZZZZZYIIIIIIIIIZ\n", - "+0.010 * IXZZZZZZZXIIIIIIIIIZ\n", - "+0.015 * IYIIIIZIIYIIYIIIIZIY\n", - "+0.015 * IXIIIIZIIXIIYIIIIZIY\n", - "+0.015 * IYIIIIZIIYIIXIIIIZIX\n", - "+0.015 * IXIIIIZIIXIIXIIIIZIX\n", - "+0.011 * YZIIIIZIIYIIIZZZZYIY\n", - "+0.011 * XZIIIIZIIXIIIZZZZYIY\n", - "+0.011 * YZIIIIZIIYIIIZZZZXIX\n", - "+0.011 * XZIIIIZIIXIIIZZZZXIX\n", - "+0.008 * YZIIIIZIIYIYZIIIIZIY\n", - "+0.008 * XZIIIIZIIXIYZIIIIZIY\n", - "+0.008 * YZIIIIZIIYIXZIIIIZIX\n", - "+0.008 * XZIIIIZIIXIXZIIIIZIX\n", - "+0.110 * IIIIIIIIZIIIIIIIIIIZ\n", - "-0.006 * IIZZZZIZIIIIYIIIIZIY\n", - "-0.006 * IIZZZZIZIIIIXIIIIZIX\n", - "-0.000 * IIZZZZYIXIIIIZZZXZIY\n", - "+0.000 * IIZZZZXIYIIIIZZZXZIY\n", - "+0.000 * IIZZZZYIXIIIIZZZYZIX\n", - "-0.000 * IIZZZZXIYIIIIZZZYZIX\n", - "-0.006 * IIZZZZYIXIIIIZZXIZIY\n", - "+0.006 * IIZZZZXIYIIIIZZXIZIY\n", - "+0.006 * IIZZZZYIXIIIIZZYIZIX\n", - "-0.006 * IIZZZZXIYIIIIZZYIZIX\n", - "-0.002 * IIZZZXZIXIIIIZZZZYIY\n", - "-0.002 * IIZZZYZIYIIIIZZZZYIY\n", - "-0.002 * IIZZZXZIXIIIIZZZZXIX\n", - "-0.002 * IIZZZYZIYIIIIZZZZXIX\n", - "-0.000 * IIZZZXZIXIIYZIIIIZIY\n", - "-0.000 * IIZZZYZIYIIYZIIIIZIY\n", - "-0.000 * IIZZZXZIXIIXZIIIIZIX\n", - "-0.000 * IIZZZYZIYIIXZIIIIZIX\n", - "-0.048 * IIZZXIZIXIIIIZZZZYIY\n", - "-0.048 * IIZZYIZIYIIIIZZZZYIY\n", - "-0.048 * IIZZXIZIXIIIIZZZZXIX\n", - "-0.048 * IIZZYIZIYIIIIZZZZXIX\n", - "-0.004 * IIZZXIZIXIIYZIIIIZIY\n", - "-0.004 * IIZZYIZIYIIYZIIIIZIY\n", - "-0.004 * IIZZXIZIXIIXZIIIIZIX\n", - "-0.004 * IIZZYIZIYIIXZIIIIZIX\n", - "+0.009 * IIIYZZZZYIIIIIIIIIIZ\n", - "+0.009 * IIIXZZZZXIIIIIIIIIIZ\n", - "-0.016 * IIZXIIZIXIIIYIIIIZIY\n", - "-0.016 * IIZYIIZIYIIIYIIIIZIY\n", - "-0.016 * IIZXIIZIXIIIXIIIIZIX\n", - "-0.016 * IIZYIIZIYIIIXIIIIZIX\n", - "+0.000 * IIYZZZZZYIIIIIIIIIIZ\n", - "+0.000 * IIXZZZZZXIIIIIIIIIIZ\n", - "-0.001 * IIXIIIZIXIIIYIIIIZIY\n", - "-0.001 * IIYIIIZIYIIIYIIIIZIY\n", - "-0.001 * IIXIIIZIXIIIXIIIIZIX\n", - "-0.001 * IIYIIIZIYIIIXIIIIZIX\n", - "-0.004 * IYIIIIZIXIIIIZZZZIZY\n", - "+0.004 * IXIIIIZIYIIIIZZZZIZY\n", - "+0.004 * IYZZZZZZYIIIIIIIIIIX\n", - "+0.004 * IXZZZZZZXIIIIIIIIIIX\n", - "-0.005 * IYIIIIZIXIIIIZXIIZIY\n", - "+0.005 * IXIIIIZIYIIIIZXIIZIY\n", - "+0.005 * IYIIIIZIXIIIIZYIIZIX\n", - "-0.005 * IXIIIIZIYIIIIZYIIZIX\n", - "-0.000 * IYIIIIZIXIIIIXIIIZIY\n", - "+0.000 * IXIIIIZIYIIIIXIIIZIY\n", - "+0.000 * IYIIIIZIXIIIIYIIIZIX\n", - "-0.000 * IXIIIIZIYIIIIYIIIZIX\n", - "+0.000 * YZIIIIZIXIIIIZZZXZIY\n", - "-0.000 * XZIIIIZIYIIIIZZZXZIY\n", - "-0.000 * YZIIIIZIXIIIIZZZYZIX\n", - "+0.000 * XZIIIIZIYIIIIZZZYZIX\n", - "+0.002 * YZIIIIZIXIIIIZZXIZIY\n", - "-0.002 * XZIIIIZIYIIIIZZXIZIY\n", - "-0.002 * YZIIIIZIXIIIIZZYIZIX\n", - "+0.002 * XZIIIIZIYIIIIZZYIZIX\n", - "+0.110 * IIIIIIIZIIIIIIIIIIIZ\n", - "-0.006 * IIZZZZIIZIIIYIIIIZIY\n", - "-0.006 * IIZZZZIIZIIIXIIIIZIX\n", - "-0.006 * IIZZZZYXZIIIIZZZXZIY\n", - "+0.006 * IIZZZZXYZIIIIZZZXZIY\n", - "+0.006 * IIZZZZYXZIIIIZZZYZIX\n", - "-0.006 * IIZZZZXYZIIIIZZZYZIX\n", - "+0.000 * IIZZZZYXZIIIIZZXIZIY\n", - "-0.000 * IIZZZZXYZIIIIZZXIZIY\n", - "-0.000 * IIZZZZYXZIIIIZZYIZIX\n", - "+0.000 * IIZZZZXYZIIIIZZYIZIX\n", - "-0.048 * IIZZZXZXZIIIIZZZZYIY\n", - "-0.048 * IIZZZYZYZIIIIZZZZYIY\n", - "-0.048 * IIZZZXZXZIIIIZZZZXIX\n", - "-0.048 * IIZZZYZYZIIIIZZZZXIX\n", - "-0.004 * IIZZZXZXZIIYZIIIIZIY\n", - "-0.004 * IIZZZYZYZIIYZIIIIZIY\n", - "-0.004 * IIZZZXZXZIIXZIIIIZIX\n", - "-0.004 * IIZZZYZYZIIXZIIIIZIX\n", - "+0.002 * IIZZXIZXZIIIIZZZZYIY\n", - "+0.002 * IIZZYIZYZIIIIZZZZYIY\n", - "+0.002 * IIZZXIZXZIIIIZZZZXIX\n", - "+0.002 * IIZZYIZYZIIIIZZZZXIX\n", - "+0.000 * IIZZXIZXZIIYZIIIIZIY\n", - "+0.000 * IIZZYIZYZIIYZIIIIZIY\n", - "+0.000 * IIZZXIZXZIIXZIIIIZIX\n", - "+0.000 * IIZZYIZYZIIXZIIIIZIX\n", - "-0.000 * IIIYZZZYIIIIIIIIIIIZ\n", - "-0.000 * IIIXZZZXIIIIIIIIIIIZ\n", - "+0.001 * IIZXIIZXZIIIYIIIIZIY\n", - "+0.001 * IIZYIIZYZIIIYIIIIZIY\n", - "+0.001 * IIZXIIZXZIIIXIIIIZIX\n", - "+0.001 * IIZYIIZYZIIIXIIIIZIX\n", - "+0.009 * IIYZZZZYIIIIIIIIIIIZ\n", - "+0.009 * IIXZZZZXIIIIIIIIIIIZ\n", - "-0.016 * IIXIIIZXZIIIYIIIIZIY\n", - "-0.016 * IIYIIIZYZIIIYIIIIZIY\n", - "-0.016 * IIXIIIZXZIIIXIIIIZIX\n", - "-0.016 * IIYIIIZYZIIIXIIIIZIX\n", - "-0.004 * IYIIIIZXZIIIIZZZZIXY\n", - "+0.004 * IXIIIIZYZIIIIZZZZIXY\n", - "+0.004 * IYIIIIZXZIIIIZZZZIYX\n", - "-0.004 * IXIIIIZYZIIIIZZZZIYX\n", - "+0.000 * IYIIIIZXZIIIIZXIIZIY\n", - "-0.000 * IXIIIIZYZIIIIZXIIZIY\n", - "-0.000 * IYIIIIZXZIIIIZYIIZIX\n", - "+0.000 * IXIIIIZYZIIIIZYIIZIX\n", - "-0.005 * IYIIIIZXZIIIIXIIIZIY\n", - "+0.005 * IXIIIIZYZIIIIXIIIZIY\n", - "+0.005 * IYIIIIZXZIIIIYIIIZIX\n", - "-0.005 * IXIIIIZYZIIIIYIIIZIX\n", - "+0.002 * YZIIIIZXZIIIIZZZXZIY\n", - "-0.002 * XZIIIIZYZIIIIZZZXZIY\n", - "-0.002 * YZIIIIZXZIIIIZZZYZIX\n", - "+0.002 * XZIIIIZYZIIIIZZZYZIX\n", - "-0.000 * YZIIIIZXZIIIIZZXIZIY\n", - "+0.000 * XZIIIIZYZIIIIZZXIZIY\n", - "+0.000 * YZIIIIZXZIIIIZZYIZIX\n", - "-0.000 * XZIIIIZYZIIIIZZYIZIX\n", - "+0.128 * IIIIIIZIIIIIIIIIIIIZ\n", - "+0.013 * IIZZZZZZZIIIYIIIIZIY\n", - "+0.013 * IIZZZZZZZIIIXIIIIZIX\n", - "-0.000 * IIZZZXYZZIIIIZZZZIZY\n", - "+0.000 * IIZZZYXZZIIIIZZZZIZY\n", - "+0.000 * IIIIIYYIIIIIIIIIIIIX\n", - "+0.000 * IIIIIXXIIIIIIIIIIIIX\n", - "-0.006 * IIZZZXYZZIIIIZZZZIXY\n", - "+0.006 * IIZZZYXZZIIIIZZZZIXY\n", - "+0.006 * IIZZZXYZZIIIIZZZZIYX\n", - "-0.006 * IIZZZYXZZIIIIZZZZIYX\n", - "-0.000 * IIZZZXYZZIIIIZXIIZIY\n", - "+0.000 * IIZZZYXZZIIIIZXIIZIY\n", - "+0.000 * IIZZZXYZZIIIIZYIIZIX\n", - "-0.000 * IIZZZYXZZIIIIZYIIZIX\n", - "+0.006 * IIZZZXYZZIIIIXIIIZIY\n", - "-0.006 * IIZZZYXZZIIIIXIIIZIY\n", - "-0.006 * IIZZZXYZZIIIIYIIIZIX\n", - "+0.006 * IIZZZYXZZIIIIYIIIZIX\n", - "-0.006 * IIZZXIYZZIIIIZZZZIZY\n", - "+0.006 * IIZZYIXZZIIIIZZZZIZY\n", - "+0.006 * IIIIYZYIIIIIIIIIIIIX\n", - "+0.006 * IIIIXZXIIIIIIIIIIIIX\n", - "+0.000 * IIZZXIYZZIIIIZZZZIXY\n", - "-0.000 * IIZZYIXZZIIIIZZZZIXY\n", - "-0.000 * IIZZXIYZZIIIIZZZZIYX\n", - "+0.000 * IIZZYIXZZIIIIZZZZIYX\n", - "+0.006 * IIZZXIYZZIIIIZXIIZIY\n", - "-0.006 * IIZZYIXZZIIIIZXIIZIY\n", - "-0.006 * IIZZXIYZZIIIIZYIIZIX\n", - "+0.006 * IIZZYIXZZIIIIZYIIZIX\n", - "+0.000 * IIZZXIYZZIIIIXIIIZIY\n", - "-0.000 * IIZZYIXZZIIIIXIIIZIY\n", - "-0.000 * IIZZXIYZZIIIIYIIIZIX\n", - "+0.000 * IIZZYIXZZIIIIYIIIZIX\n", - "-0.000 * IIZXIIYZZIIIIZZZXZIY\n", - "+0.000 * IIZYIIXZZIIIIZZZXZIY\n", - "+0.000 * IIZXIIYZZIIIIZZZYZIX\n", - "-0.000 * IIZYIIXZZIIIIZZZYZIX\n", - "+0.006 * IIZXIIYZZIIIIZZXIZIY\n", - "-0.006 * IIZYIIXZZIIIIZZXIZIY\n", - "-0.006 * IIZXIIYZZIIIIZZYIZIX\n", - "+0.006 * IIZYIIXZZIIIIZZYIZIX\n", - "+0.006 * IIXIIIYZZIIIIZZZXZIY\n", - "-0.006 * IIYIIIXZZIIIIZZZXZIY\n", - "-0.006 * IIXIIIYZZIIIIZZZYZIX\n", - "+0.006 * IIYIIIXZZIIIIZZZYZIX\n", - "+0.000 * IIXIIIYZZIIIIZZXIZIY\n", - "-0.000 * IIYIIIXZZIIIIZZXIZIY\n", - "-0.000 * IIXIIIYZZIIIIZZYIZIX\n", - "+0.000 * IIYIIIXZZIIIIZZYIZIX\n", - "-0.031 * IYIIIIYZZIIIIZZZZYIY\n", - "-0.031 * IXIIIIXZZIIIIZZZZYIY\n", - "-0.031 * IYIIIIYZZIIIIZZZZXIX\n", - "-0.031 * IXIIIIXZZIIIIZZZZXIX\n", - "-0.008 * IYIIIIYZZIIYZIIIIZIY\n", - "-0.008 * IXIIIIXZZIIYZIIIIZIY\n", - "-0.008 * IYIIIIYZZIIXZIIIIZIX\n", - "-0.008 * IXIIIIXZZIIXZIIIIZIX\n", - "-0.006 * YZZZZZYIIIIIIIIIIIIZ\n", - "-0.006 * XZZZZZXIIIIIIIIIIIIZ\n", - "-0.014 * YZIIIIYZZIIIYIIIIZIY\n", - "-0.014 * XZIIIIXZZIIIYIIIIZIY\n", - "-0.014 * YZIIIIYZZIIIXIIIIZIX\n", - "-0.014 * XZIIIIXZZIIIXIIIIZIX\n", - "+0.118 * IIIIIZIIIIIIIIIIIIIZ\n", - "+0.008 * IIZZZIIZZIIIYIIIIZIY\n", - "+0.008 * IIZZZIIZZIIIXIIIIZIX\n", - "-0.001 * IIZXIXIZZIIIIZZZZYIY\n", - "-0.001 * IIZYIYIZZIIIIZZZZYIY\n", - "-0.001 * IIZXIXIZZIIIIZZZZXIX\n", - "-0.001 * IIZYIYIZZIIIIZZZZXIX\n", - "-0.000 * IIZXIXIZZIIYZIIIIZIY\n", - "-0.000 * IIZYIYIZZIIYZIIIIZIY\n", - "-0.000 * IIZXIXIZZIIXZIIIIZIX\n", - "-0.000 * IIZYIYIZZIIXZIIIIZIX\n", - "+0.042 * IIXIIXIZZIIIIZZZZYIY\n", - "+0.042 * IIYIIYIZZIIIIZZZZYIY\n", - "+0.042 * IIXIIXIZZIIIIZZZZXIX\n", - "+0.042 * IIYIIYIZZIIIIZZZZXIX\n", - "+0.006 * IIXIIXIZZIIYZIIIIZIY\n", - "+0.006 * IIYIIYIZZIIYZIIIIZIY\n", - "+0.006 * IIXIIXIZZIIXZIIIIZIX\n", - "+0.006 * IIYIIYIZZIIXZIIIIZIX\n", - "-0.001 * IYIIIXIZZIIIIZZZXZIY\n", - "+0.001 * IXIIIYIZZIIIIZZZXZIY\n", - "+0.001 * IYIIIXIZZIIIIZZZYZIX\n", - "-0.001 * IXIIIYIZZIIIIZZZYZIX\n", - "+0.000 * YZIIIXIZZIIIIZZZZIZY\n", - "-0.000 * XZIIIYIZZIIIIZZZZIZY\n", - "-0.000 * YZZZZYIIIIIIIIIIIIIX\n", - "-0.000 * XZZZZXIIIIIIIIIIIIIX\n", - "+0.001 * YZIIIXIZZIIIIZZZZIXY\n", - "-0.001 * XZIIIYIZZIIIIZZZZIXY\n", - "-0.001 * YZIIIXIZZIIIIZZZZIYX\n", - "+0.001 * XZIIIYIZZIIIIZZZZIYX\n", - "+0.000 * YZIIIXIZZIIIIZXIIZIY\n", - "-0.000 * XZIIIYIZZIIIIZXIIZIY\n", - "-0.000 * YZIIIXIZZIIIIZYIIZIX\n", - "+0.000 * XZIIIYIZZIIIIZYIIZIX\n", - "-0.002 * YZIIIXIZZIIIIXIIIZIY\n", - "+0.002 * XZIIIYIZZIIIIXIIIZIY\n", - "+0.002 * YZIIIXIZZIIIIYIIIZIX\n", - "-0.002 * XZIIIYIZZIIIIYIIIZIX\n", - "+0.118 * IIIIZIIIIIIIIIIIIIIZ\n", - "+0.008 * IIZZIZIZZIIIYIIIIZIY\n", - "+0.008 * IIZZIZIZZIIIXIIIIZIX\n", - "+0.042 * IIZXXZIZZIIIIZZZZYIY\n", - "+0.042 * IIZYYZIZZIIIIZZZZYIY\n", - "+0.042 * IIZXXZIZZIIIIZZZZXIX\n", - "+0.042 * IIZYYZIZZIIIIZZZZXIX\n", - "+0.006 * IIZXXZIZZIIYZIIIIZIY\n", - "+0.006 * IIZYYZIZZIIYZIIIIZIY\n", - "+0.006 * IIZXXZIZZIIXZIIIIZIX\n", - "+0.006 * IIZYYZIZZIIXZIIIIZIX\n", - "+0.001 * IIXIXZIZZIIIIZZZZYIY\n", - "+0.001 * IIYIYZIZZIIIIZZZZYIY\n", - "+0.001 * IIXIXZIZZIIIIZZZZXIX\n", - "+0.001 * IIYIYZIZZIIIIZZZZXIX\n", - "+0.000 * IIXIXZIZZIIYZIIIIZIY\n", - "+0.000 * IIYIYZIZZIIYZIIIIZIY\n", - "+0.000 * IIXIXZIZZIIXZIIIIZIX\n", - "+0.000 * IIYIYZIZZIIXZIIIIZIX\n", - "-0.001 * IYIIXZIZZIIIIZZXIZIY\n", - "+0.001 * IXIIYZIZZIIIIZZXIZIY\n", - "+0.001 * IYIIXZIZZIIIIZZYIZIX\n", - "-0.001 * IXIIYZIZZIIIIZZYIZIX\n", - "+0.001 * YZIIXZIZZIIIIZZZZIZY\n", - "-0.001 * XZIIYZIZZIIIIZZZZIZY\n", - "-0.001 * YZZZYIIIIIIIIIIIIIIX\n", - "-0.001 * XZZZXIIIIIIIIIIIIIIX\n", - "-0.000 * YZIIXZIZZIIIIZZZZIXY\n", - "+0.000 * XZIIYZIZZIIIIZZZZIXY\n", - "+0.000 * YZIIXZIZZIIIIZZZZIYX\n", - "-0.000 * XZIIYZIZZIIIIZZZZIYX\n", - "-0.002 * YZIIXZIZZIIIIZXIIZIY\n", - "+0.002 * XZIIYZIZZIIIIZXIIZIY\n", - "+0.002 * YZIIXZIZZIIIIZYIIZIX\n", - "-0.002 * XZIIYZIZZIIIIZYIIZIX\n", - "-0.000 * YZIIXZIZZIIIIXIIIZIY\n", - "+0.000 * XZIIYZIZZIIIIXIIIZIY\n", - "+0.000 * YZIIXZIZZIIIIYIIIZIX\n", - "-0.000 * XZIIYZIZZIIIIYIIIZIX\n", - "+0.113 * IIIZIIIIIIIIIIIIIIIZ\n", - "-0.009 * IIZIZZIZZIIIYIIIIZIY\n", - "-0.009 * IIZIZZIZZIIIXIIIIZIX\n", - "-0.006 * IYIXZZIZZIIIIZZZZIZY\n", - "+0.006 * IXIYZZIZZIIIIZZZZIZY\n", - "+0.006 * IYZYIIIIIIIIIIIIIIIX\n", - "+0.006 * IXZXIIIIIIIIIIIIIIIX\n", - "+0.000 * IYIXZZIZZIIIIZZZZIXY\n", - "-0.000 * IXIYZZIZZIIIIZZZZIXY\n", - "-0.000 * IYIXZZIZZIIIIZZZZIYX\n", - "+0.000 * IXIYZZIZZIIIIZZZZIYX\n", - "-0.009 * IYIXZZIZZIIIIZXIIZIY\n", - "+0.009 * IXIYZZIZZIIIIZXIIZIY\n", - "+0.009 * IYIXZZIZZIIIIZYIIZIX\n", - "-0.009 * IXIYZZIZZIIIIZYIIZIX\n", - "+0.000 * YZIXZZIZZIIIIZZZXZIY\n", - "-0.000 * XZIYZZIZZIIIIZZZXZIY\n", - "-0.000 * YZIXZZIZZIIIIZZZYZIX\n", - "+0.000 * XZIYZZIZZIIIIZZZYZIX\n", - "-0.001 * YZIXZZIZZIIIIZZXIZIY\n", - "+0.001 * XZIYZZIZZIIIIZZXIZIY\n", - "+0.001 * YZIXZZIZZIIIIZZYIZIX\n", - "-0.001 * XZIYZZIZZIIIIZZYIZIX\n", - "+0.113 * IIZIIIIIIIIIIIIIIIIZ\n", - "-0.009 * IIIZZZIZZIIIYIIIIZIY\n", - "-0.009 * IIIZZZIZZIIIXIIIIZIX\n", - "-0.000 * IYXZZZIZZIIIIZZZZIZY\n", - "+0.000 * IXYZZZIZZIIIIZZZZIZY\n", - "+0.000 * IYYIIIIIIIIIIIIIIIIX\n", - "+0.000 * IXXIIIIIIIIIIIIIIIIX\n", - "-0.006 * IYXZZZIZZIIIIZZZZIXY\n", - "+0.006 * IXYZZZIZZIIIIZZZZIXY\n", - "+0.006 * IYXZZZIZZIIIIZZZZIYX\n", - "-0.006 * IXYZZZIZZIIIIZZZZIYX\n", - "-0.009 * IYXZZZIZZIIIIXIIIZIY\n", - "+0.009 * IXYZZZIZZIIIIXIIIZIY\n", - "+0.009 * IYXZZZIZZIIIIYIIIZIX\n", - "-0.009 * IXYZZZIZZIIIIYIIIZIX\n", - "-0.001 * YZXZZZIZZIIIIZZZXZIY\n", - "+0.001 * XZYZZZIZZIIIIZZZXZIY\n", - "+0.001 * YZXZZZIZZIIIIZZZYZIX\n", - "-0.001 * XZYZZZIZZIIIIZZZYZIX\n", - "-0.000 * YZXZZZIZZIIIIZZXIZIY\n", - "+0.000 * XZYZZZIZZIIIIZZXIZIY\n", - "+0.000 * YZXZZZIZZIIIIZZYIZIX\n", - "-0.000 * XZYZZZIZZIIIIZZYIZIX\n", - "+0.115 * IZIIIIIIIIIIIIIIIIIZ\n", - "-0.005 * IZZZZZIZZIIIYIIIIZIY\n", - "-0.005 * IZZZZZIZZIIIXIIIIZIX\n", - "-0.040 * YYZZZZIZZIIIIZZZZYIY\n", - "-0.040 * XXZZZZIZZIIIIZZZZYIY\n", - "-0.040 * YYZZZZIZZIIIIZZZZXIX\n", - "-0.040 * XXZZZZIZZIIIIZZZZXIX\n", - "-0.002 * YYZZZZIZZIIYZIIIIZIY\n", - "-0.002 * XXZZZZIZZIIYZIIIIZIY\n", - "-0.002 * YYZZZZIZZIIXZIIIIZIX\n", - "-0.002 * XXZZZZIZZIIXZIIIIZIX\n", - "+0.120 * ZIIIIIIIIIIIIIIIIIIZ\n", - "-0.009 * ZIZZZZIZZIIIYIIIIZIY\n", - "-0.009 * ZIZZZZIZZIIIXIIIIZIX\n", - "+0.110 * IIZZZZIZZIIIIZZZZIII\n", - "-0.000 * IIZZZZIZZIIIIZXIIZXI\n", - "-0.000 * IIZZZZIZZIIIIZYIIZYI\n", - "+0.003 * IIZZZZIZZIIIIXIIIZXI\n", - "+0.003 * IIZZZZIZZIIIIYIIIZYI\n", - "+0.106 * IIZZZZIZZIIIIZZZZZZI\n", - "+0.006 * IIZZZZIZZIIYZIIIIYZI\n", - "+0.006 * IIZZZZIZZIIXZIIIIXZI\n", - "+0.108 * IIZZZZIZZIIIIZZZIIZI\n", - "-0.001 * IIZZZZIZZIIIIZZXXIZI\n", - "-0.001 * IIZZZZIZZIIIIZZYYIZI\n", - "+0.071 * IIZZZZIZZIIIIZZIZIZI\n", - "+0.097 * IIZZZZIZZIIIIZIZZIZI\n", - "-0.001 * IIZZZZIZZIIIIXXZZIZI\n", - "-0.001 * IIZZZZIZZIIIIYYZZIZI\n", - "+0.114 * IIZZZZIZZIIIIIZZZIZI\n", - "+0.115 * IIZZZZIZZIIIZZZZZIZI\n", - "+0.127 * IIZZZZIZZIIZIZZZZIZI\n", - "+0.003 * IIZZZZIZZIIIIZXIIZZI\n", - "-0.003 * IIIIIIIIIIIIIIXZZZII\n", - "+0.000 * IIZZZZIZZIIIIXIIIZZI\n", - "-0.000 * IIIIIIIIIIIIIXZZZZII\n", - "-0.001 * IIZZZZIZZIIIIZZZIIXI\n", - "+0.001 * IIIIIIIIIIIIIIIIZIXI\n", - "-0.038 * IIZZZZIZZIIIIZZXYIYI\n", - "-0.038 * IIZZZZIZZIIIIZZXXIXI\n", - "+0.000 * IIZZZZIZZIIIIZZYYIXI\n", - "+0.000 * IIIIIIIIIIIIIIIYYIXI\n", - "-0.038 * IIIIIIIIIIIIIIIXXIXI\n", - "-0.038 * IIIIIIIIIIIIIIIXYIYI\n", - "+0.001 * IIZZZZIZZIIIIZZIZIXI\n", - "-0.001 * IIIIIIIIIIIIIIIZIIXI\n", - "+0.001 * IIZZZZIZZIIIIZIZZIXI\n", - "-0.001 * IIIIIIIIIIIIIIZIIIXI\n", - "+0.019 * IIZZZZIZZIIIIXYZZIYI\n", - "+0.001 * IIZZZZIZZIIIIXXZZIXI\n", - "-0.018 * IIZZZZIZZIIIIYYZZIXI\n", - "-0.018 * IIIIIIIIIIIIIYYIIIXI\n", - "+0.001 * IIIIIIIIIIIIIXXIIIXI\n", - "+0.019 * IIIIIIIIIIIIIXYIIIYI\n", - "-0.001 * IIZZZZIZZIIIIIZZZIXI\n", - "+0.001 * IIIIIIIIIIIIIZIIIIXI\n", - "-0.008 * IIZZZZIZZIIIIZXIIIII\n", - "+0.008 * IIIIIIIIIIIIIIXZZIZI\n", - "-0.000 * IIZZZZIZZIIIIXIIIIII\n", - "+0.000 * IIIIIIIIIIIIIXZZZIZI\n", - "-0.001 * IIZZZZIZZIIIYIIIYXII\n", - "+0.000 * IIZZZZIZZIIIYIIIXYII\n", - "+0.001 * IIZZZZIZZIIIXIIIYYII\n", - "+0.001 * IIIIIIIIIIIIYZZZYXZI\n", - "-0.000 * IIIIIIIIIIIIXZZZXXZI\n", - "-0.001 * IIIIIIIIIIIIXZZZYYZI\n", - "-0.021 * IIZZZZIZZIIIYIIYZXII\n", - "+0.001 * IIZZZZIZZIIIYIIXZYII\n", - "+0.020 * IIZZZZIZZIIIXIIYZYII\n", - "+0.020 * IIIIIIIIIIIIYZZYIXZI\n", - "-0.001 * IIIIIIIIIIIIXZZXIXZI\n", - "-0.021 * IIIIIIIIIIIIXZZYIYZI\n", - "-0.015 * IIZZZZIZZIIYZIYZZXII\n", - "+0.001 * IIZZZZIZZIIYZIXZZYII\n", - "+0.014 * IIZZZZIZZIIXZIYZZYII\n", - "+0.014 * IIIIIIIIIIIYZZYIIXZI\n", - "-0.001 * IIIIIIIIIIIXZZXIIXZI\n", - "-0.015 * IIIIIIIIIIIXZZYIIYZI\n", - "-0.001 * IIZZZZIZZIIYZYZZZXII\n", - "+0.000 * IIZZZZIZZIIYZXZZZYII\n", - "+0.001 * IIZZZZIZZIIXZYZZZYII\n", - "+0.001 * IIIIIIIIIIIYZYIIIXZI\n", - "-0.000 * IIIIIIIIIIIXZXIIIXZI\n", - "-0.001 * IIIIIIIIIIIXZYIIIYZI\n", - "-0.013 * IIZZZZIZZIIIIZXIZZII\n", - "+0.013 * IIIIIIIIIIIIIIXZIZZI\n", - "+0.000 * IIZZZZIZZIIIIXIIZZII\n", - "-0.000 * IIIIIIIIIIIIIXZZIZZI\n", - "+0.001 * IIZZZZIZZIIIIZXYYZII\n", - "-0.001 * IIZZZZIZZIIIIZXXXZII\n", - "-0.002 * IIZZZZIZZIIIIZYYXZII\n", - "-0.002 * IIIIIIIIIIIIIIYYXZZI\n", - "-0.001 * IIIIIIIIIIIIIIXXXZZI\n", - "+0.001 * IIIIIIIIIIIIIIXYYZZI\n", - "-0.033 * IIZZZZIZZIIIIXIYYZII\n", - "-0.000 * IIZZZZIZZIIIIXIXXZII\n", - "+0.033 * IIZZZZIZZIIIIYIYXZII\n", - "+0.033 * IIIIIIIIIIIIIYZYXZZI\n", - "-0.000 * IIIIIIIIIIIIIXZXXZZI\n", - "-0.033 * IIIIIIIIIIIIIXZYYZZI\n", - "-0.000 * IIZZZZIZZIIYXZZZYZII\n", - "+0.001 * IIZZZZIZZIIYYZZZXZII\n", - "+0.001 * IIZZZZIZZIIXXZZZXZII\n", - "-0.001 * IIIIIIIIIIIYYIIIXZZI\n", - "-0.001 * IIIIIIIIIIIXXIIIXZZI\n", - "-0.000 * IIIIIIIIIIIXYIIIYZZI\n", - "+0.021 * IIZZZZIZZIIIIZXZIZII\n", - "-0.021 * IIIIIIIIIIIIIIXIZZZI\n", - "-0.000 * IIZZZZIZZIIIIXIZIZII\n", - "+0.000 * IIIIIIIIIIIIIXZIZZZI\n", - "-0.000 * IIZZZZIZZIIYXZZYIZII\n", - "+0.033 * IIZZZZIZZIIYYZZXIZII\n", - "+0.033 * IIZZZZIZZIIXXZZXIZII\n", - "-0.033 * IIIIIIIIIIIYYIIXZZZI\n", - "-0.033 * IIIIIIIIIIIXXIIXZZZI\n", - "-0.000 * IIIIIIIIIIIXYIIYZZZI\n", - "+0.000 * IIZZZZIZZIIIIXZIIZII\n", - "-0.000 * IIIIIIIIIIIIIXIZZZZI\n", - "+0.007 * IIZZZZIZZIIIIIXIIZII\n", - "-0.007 * IIIIIIIIIIIIIZXZZZZI\n", - "+0.000 * IIZZZZIZZIIIZZXIIZII\n", - "-0.000 * IIIIIIIIIIIIZIXZZZZI\n", - "+0.011 * IIZZZZIZZIIZIZXIIZII\n", - "-0.011 * IIIIIIIIIIIZIIXZZZZI\n", - "+0.000 * IIZZZZIZZIIIZXIIIZII\n", - "-0.000 * IIIIIIIIIIIIZXZZZZZI\n", - "+0.001 * IIZZZZIZZIIZIXIIIZII\n", - "-0.001 * IIIIIIIIIIIZIXZZZZZI\n", - "+0.123 * ZZIIIIZIIZZIIZZZZIZI\n", - "+0.001 * ZZIIIIZIIZZIIZXIIZII\n", - "-0.001 * ZZZZZZZZZZZIIIXZZZZI\n", - "+0.000 * ZZIIIIZIIZZIIXIIIZII\n", - "-0.000 * ZZZZZZZZZZZIIXZZZZZI\n", - "+0.002 * ZZIIIIZIIZXIIZZZXZII\n", - "-0.002 * IIZZZZIZZIXIIZZZXZII\n", - "-0.002 * ZZZZZZZZZZXIIIIIXZZI\n", - "+0.002 * IIIIIIIIIIXIIIIIXZZI\n", - "+0.047 * ZZIIIIZIIZXIIZZXIZII\n", - "-0.047 * IIZZZZIZZIXIIZZXIZII\n", - "-0.047 * ZZZZZZZZZZXIIIIXZZZI\n", - "+0.047 * IIIIIIIIIIXIIIIXZZZI\n", - "+0.008 * ZZIIIIZIIXIIIZZZZIZI\n", - "-0.008 * IIZZZZIZZXZIIZZZZIZI\n", - "+0.017 * ZZIIIIZIIXIIIZXIIZII\n", - "-0.017 * IIZZZZIZZXZIIZXIIZII\n", - "-0.017 * ZZZZZZZZZXIIIIXZZZZI\n", - "+0.017 * IIIIIIIIIXZIIIXZZZZI\n", - "+0.001 * ZZIIIIZIIXIIIXIIIZII\n", - "-0.001 * IIZZZZIZZXZIIXIIIZII\n", - "-0.001 * ZZZZZZZZZXIIIXZZZZZI\n", - "+0.001 * IIIIIIIIIXZIIXZZZZZI\n", - "-0.003 * ZZIIIIZIYIIIYIIIIZII\n", - "+0.003 * IIZZZZIZYZZIYIIIIZII\n", - "-0.003 * ZZZZZZZZXIIIXZZZZZZI\n", - "+0.003 * IIIIIIIIXZZIXZZZZZZI\n", - "-0.000 * ZZIIIIXZZIIIIZZZXZII\n", - "+0.000 * IIZZZZXIIZZIIZZZXZII\n", - "+0.000 * ZZZZZZXIIIIIIIIIXZZI\n", - "-0.000 * IIIIIIXZZZZIIIIIXZZI\n", - "-0.004 * ZZIIIIXZZIIIIZZXIZII\n", - "+0.004 * IIZZZZXIIZZIIZZXIZII\n", - "+0.004 * ZZZZZZXIIIIIIIIXZZZI\n", - "-0.004 * IIIIIIXZZZZIIIIXZZZI\n", - "+0.000 * ZZIIIYIZZIIIIZZZZYII\n", - "-0.000 * IIZZZYZIIZZIIZZZZYII\n", - "+0.000 * ZZZZZXIIIIIIIIIIIXZI\n", - "-0.000 * IIIIIXZZZZZIIIIIIXZI\n", - "-0.000 * ZZIIIYIZZIIYZIIIIZII\n", - "+0.000 * IIZZZYZIIZZYZIIIIZII\n", - "-0.000 * ZZZZZXIIIIIXZZZZZZZI\n", - "+0.000 * IIIIIXZZZZZXZZZZZZZI\n", - "+0.003 * ZZIIYZIZZIIIIZZZZYII\n", - "-0.003 * IIZZYIZIIZZIIZZZZYII\n", - "+0.003 * ZZZZXIIIIIIIIIIIIXZI\n", - "-0.003 * IIIIXZZZZZZIIIIIIXZI\n", - "-0.004 * ZZIIYZIZZIIYZIIIIZII\n", - "+0.004 * IIZZYIZIIZZYZIIIIZII\n", - "-0.004 * ZZZZXIIIIIIXZZZZZZZI\n", - "+0.004 * IIIIXZZZZZZXZZZZZZZI\n", - "-0.007 * ZZIYZZIZZIIIYIIIIZII\n", - "+0.007 * IIZYIIZIIZZIYIIIIZII\n", - "-0.007 * ZZZXIIIIIIIIXZZZZZZI\n", - "+0.007 * IIIXZZZZZZZIXZZZZZZI\n", - "-0.000 * ZZYZZZIZZIIIYIIIIZII\n", - "+0.000 * IIYIIIZIIZZIYIIIIZII\n", - "-0.000 * ZZXIIIIIIIIIXZZZZZZI\n", - "+0.000 * IIXZZZZZZZZIXZZZZZZI\n", - "-0.006 * ZXZZZZIZZIIIIZZZZIZI\n", - "+0.006 * IXIIIIZIIZZIIZZZZIZI\n", - "+0.014 * ZXZZZZIZZIIIIZXIIZII\n", - "-0.014 * IXIIIIZIIZZIIZXIIZII\n", - "-0.014 * ZXIIIIIIIIIIIIXZZZZI\n", - "+0.014 * IXZZZZZZZZZIIIXZZZZI\n", - "+0.001 * ZXZZZZIZZIIIIXIIIZII\n", - "-0.001 * IXIIIIZIIZZIIXIIIZII\n", - "-0.001 * ZXIIIIIIIIIIIXZZZZZI\n", - "+0.001 * IXZZZZZZZZZIIXZZZZZI\n", - "+0.000 * XIZZZZIZZIIIIZZZXZII\n", - "-0.000 * XZIIIIZIIZZIIZZZXZII\n", - "-0.000 * XIIIIIIIIIIIIIIIXZZI\n", - "+0.000 * XZZZZZZZZZZIIIIIXZZI\n", - "+0.014 * XIZZZZIZZIIIIZZXIZII\n", - "-0.014 * XZIIIIZIIZZIIZZXIZII\n", - "-0.014 * XIIIIIIIIIIIIIIXZZZI\n", - "+0.014 * XZZZZZZZZZZIIIIXZZZI\n", - "+0.123 * IIZZZZIZZIZIIZZZZIZI\n", - "-0.004 * IIZZZZIZZIZIIZXIIZII\n", - "+0.004 * IIIIIIIIIIZIIIXZZZZI\n", - "-0.000 * IIZZZZIZZIZIIXIIIZII\n", - "+0.000 * IIIIIIIIIIZIIXZZZZZI\n", - "+0.001 * IIZZZZIZZYYIIZZZXZII\n", - "+0.001 * IIZZZZIZZXXIIZZZXZII\n", - "-0.001 * IIIIIIIIIYYIIIIIXZZI\n", - "-0.001 * IIIIIIIIIXXIIIIIXZZI\n", - "+0.015 * IIZZZZIZZYYIIZZXIZII\n", - "+0.015 * IIZZZZIZZXXIIZZXIZII\n", - "-0.015 * IIIIIIIIIYYIIIIXZZZI\n", - "-0.015 * IIIIIIIIIXXIIIIXZZZI\n", - "+0.001 * IIZZZZIZXZYIIZZZZYII\n", - "-0.001 * IIZZZZIZYZXIIZZZZYII\n", - "-0.001 * IIIIIIIIYZYIIIIIIXZI\n", - "-0.001 * IIIIIIIIXZXIIIIIIXZI\n", - "-0.002 * IIZZZZIZXZYYZIIIIZII\n", - "+0.002 * IIZZZZIZYZXYZIIIIZII\n", - "+0.002 * IIIIIIIIYZYXZZZZZZZI\n", - "+0.002 * IIIIIIIIXZXXZZZZZZZI\n", - "-0.011 * IIZZZZYIIZYIIZZZZIZI\n", - "-0.011 * IIZZZZXIIZXIIZZZZIZI\n", - "-0.014 * IIZZZZYIIZYIIZXIIZII\n", - "-0.014 * IIZZZZXIIZXIIZXIIZII\n", - "+0.014 * IIIIIIYZZZYIIIXZZZZI\n", - "+0.014 * IIIIIIXZZZXIIIXZZZZI\n", - "-0.001 * IIZZZZYIIZYIIXIIIZII\n", - "-0.001 * IIZZZZXIIZXIIXIIIZII\n", - "+0.001 * IIIIIIYZZZYIIXZZZZZI\n", - "+0.001 * IIIIIIXZZZXIIXZZZZZI\n", - "+0.000 * IIZZZXZIIZYIYIIIIZII\n", - "-0.000 * IIZZZYZIIZXIYIIIIZII\n", - "-0.000 * IIIIIYZZZZYIXZZZZZZI\n", - "-0.000 * IIIIIXZZZZXIXZZZZZZI\n", - "+0.002 * IIZZXIZIIZYIYIIIIZII\n", - "-0.002 * IIZZYIZIIZXIYIIIIZII\n", - "-0.002 * IIIIYZZZZZYIXZZZZZZI\n", - "-0.002 * IIIIXZZZZZXIXZZZZZZI\n", - "-0.004 * IIZXIIZIIZYIIZZZZYII\n", - "+0.004 * IIZYIIZIIZXIIZZZZYII\n", - "+0.004 * IIIYZZZZZZYIIIIIIXZI\n", - "+0.004 * IIIXZZZZZZXIIIIIIXZI\n", - "+0.004 * IIZXIIZIIZYYZIIIIZII\n", - "-0.004 * IIZYIIZIIZXYZIIIIZII\n", - "-0.004 * IIIYZZZZZZYXZZZZZZZI\n", - "-0.004 * IIIXZZZZZZXXZZZZZZZI\n", - "-0.000 * IIXIIIZIIZYIIZZZZYII\n", - "+0.000 * IIYIIIZIIZXIIZZZZYII\n", - "+0.000 * IIYZZZZZZZYIIIIIIXZI\n", - "+0.000 * IIXZZZZZZZXIIIIIIXZI\n", - "+0.000 * IIXIIIZIIZYYZIIIIZII\n", - "-0.000 * IIYIIIZIIZXYZIIIIZII\n", - "-0.000 * IIYZZZZZZZYXZZZZZZZI\n", - "-0.000 * IIXZZZZZZZXXZZZZZZZI\n", - "+0.001 * IYIIIIZIIZYIIZZZXZII\n", - "+0.001 * IXIIIIZIIZXIIZZZXZII\n", - "-0.001 * IYZZZZZZZZYIIIIIXZZI\n", - "-0.001 * IXZZZZZZZZXIIIIIXZZI\n", - "+0.018 * IYIIIIZIIZYIIZZXIZII\n", - "+0.018 * IXIIIIZIIZXIIZZXIZII\n", - "-0.018 * IYZZZZZZZZYIIIIXZZZI\n", - "-0.018 * IXZZZZZZZZXIIIIXZZZI\n", - "-0.002 * YZIIIIZIIZYIIZZZZIZI\n", - "-0.002 * XZIIIIZIIZXIIZZZZIZI\n", - "+0.015 * YZIIIIZIIZYIIZXIIZII\n", - "+0.015 * XZIIIIZIIZXIIZXIIZII\n", - "-0.015 * YZZZZZZZZZYIIIXZZZZI\n", - "-0.015 * XZZZZZZZZZXIIIXZZZZI\n", - "+0.001 * YZIIIIZIIZYIIXIIIZII\n", - "+0.001 * XZIIIIZIIZXIIXIIIZII\n", - "-0.001 * YZZZZZZZZZYIIXZZZZZI\n", - "-0.001 * XZZZZZZZZZXIIXZZZZZI\n", - "+0.110 * IIZZZZIZZZIIIZZZZIZI\n", - "-0.009 * IIZZZZIZZZIIIZXIIZII\n", - "+0.009 * IIIIIIIIIZIIIIXZZZZI\n", - "-0.000 * IIZZZZIZZZIIIXIIIZII\n", - "+0.000 * IIIIIIIIIZIIIXZZZZZI\n", - "-0.004 * IIZZZZIZXYIIYIIIIZII\n", - "+0.004 * IIZZZZIZYXIIYIIIIZII\n", - "+0.004 * IIIIIIIIYYIIXZZZZZZI\n", - "+0.004 * IIIIIIIIXXIIXZZZZZZI\n", - "-0.002 * IIZZZZYIIYIIIZZZXZII\n", - "-0.002 * IIZZZZXIIXIIIZZZXZII\n", - "+0.002 * IIIIIIYZZYIIIIIIXZZI\n", - "+0.002 * IIIIIIXZZXIIIIIIXZZI\n", - "-0.048 * IIZZZZYIIYIIIZZXIZII\n", - "-0.048 * IIZZZZXIIXIIIZZXIZII\n", - "+0.048 * IIIIIIYZZYIIIIIXZZZI\n", - "+0.048 * IIIIIIXZZXIIIIIXZZZI\n", - "-0.000 * IIZZZXZIIYIIIZZZZYII\n", - "+0.000 * IIZZZYZIIXIIIZZZZYII\n", - "+0.000 * IIIIIYZZZYIIIIIIIXZI\n", - "+0.000 * IIIIIXZZZXIIIIIIIXZI\n", - "+0.000 * IIZZZXZIIYIYZIIIIZII\n", - "-0.000 * IIZZZYZIIXIYZIIIIZII\n", - "-0.000 * IIIIIYZZZYIXZZZZZZZI\n", - "-0.000 * IIIIIXZZZXIXZZZZZZZI\n", - "-0.006 * IIZZXIZIIYIIIZZZZYII\n", - "+0.006 * IIZZYIZIIXIIIZZZZYII\n", - "+0.006 * IIIIYZZZZYIIIIIIIXZI\n", - "+0.006 * IIIIXZZZZXIIIIIIIXZI\n", - "+0.002 * IIZZXIZIIYIYZIIIIZII\n", - "-0.002 * IIZZYIZIIXIYZIIIIZII\n", - "-0.002 * IIIIYZZZZYIXZZZZZZZI\n", - "-0.002 * IIIIXZZZZXIXZZZZZZZI\n", - "-0.005 * IIZXIIZIIYIIYIIIIZII\n", - "+0.005 * IIZYIIZIIXIIYIIIIZII\n", - "+0.005 * IIIYZZZZZYIIXZZZZZZI\n", - "+0.005 * IIIXZZZZZXIIXZZZZZZI\n", - "-0.000 * IIXIIIZIIYIIYIIIIZII\n", - "+0.000 * IIYIIIZIIXIIYIIIIZII\n", - "+0.000 * IIYZZZZZZYIIXZZZZZZI\n", - "+0.000 * IIXZZZZZZXIIXZZZZZZI\n", - "-0.006 * IYIIIIZIIYIIIZZZZIZI\n", - "-0.006 * IXIIIIZIIXIIIZZZZIZI\n", - "-0.016 * IYIIIIZIIYIIIZXIIZII\n", - "-0.016 * IXIIIIZIIXIIIZXIIZII\n", - "+0.016 * IYZZZZZZZYIIIIXZZZZI\n", - "+0.016 * IXZZZZZZZXIIIIXZZZZI\n", - "-0.001 * IYIIIIZIIYIIIXIIIZII\n", - "-0.001 * IXIIIIZIIXIIIXIIIZII\n", - "+0.001 * IYZZZZZZZYIIIXZZZZZI\n", - "+0.001 * IXZZZZZZZXIIIXZZZZZI\n", - "-0.000 * YZIIIIZIIYIIIZZZXZII\n", - "-0.000 * XZIIIIZIIXIIIZZZXZII\n", - "+0.000 * YZZZZZZZZYIIIIIIXZZI\n", - "+0.000 * XZZZZZZZZXIIIIIIXZZI\n", - "-0.004 * YZIIIIZIIYIIIZZXIZII\n", - "-0.004 * XZIIIIZIIXIIIZZXIZII\n", - "+0.004 * YZZZZZZZZYIIIIIXZZZI\n", - "+0.004 * XZZZZZZZZXIIIIIXZZZI\n", - "+0.122 * IIZZZZIZIIIIIZZZZIZI\n", - "+0.004 * IIZZZZIZIIIIIZXIIZII\n", - "-0.004 * IIIIIIIIZIIIIIXZZZZI\n", - "+0.000 * IIZZZZIZIIIIIXIIIZII\n", - "-0.000 * IIIIIIIIZIIIIXZZZZZI\n", - "+0.004 * IIZZZZIXXIIIIZZZZIXI\n", - "+0.004 * IIZZZZIYYIIIIZZZZIXI\n", - "+0.004 * IIIIIIIYYIIIIIIIIIXI\n", - "+0.004 * IIIIIIIXXIIIIIIIIIXI\n", - "-0.000 * IIZZZZIXXIIIIZXIIZII\n", - "-0.000 * IIZZZZIYYIIIIZXIIZII\n", - "-0.000 * IIIIIIIYYIIIIIXZZZZI\n", - "-0.000 * IIIIIIIXXIIIIIXZZZZI\n", - "+0.000 * IIZZZZIXXIIIIXIIIZII\n", - "+0.000 * IIZZZZIYYIIIIXIIIZII\n", - "+0.000 * IIIIIIIYYIIIIXZZZZZI\n", - "+0.000 * IIIIIIIXXIIIIXZZZZZI\n", - "-0.005 * IIZZZZYIXIIIIZZZZYII\n", - "+0.005 * IIZZZZXIYIIIIZZZZYII\n", - "+0.005 * IIIIIIYZYIIIIIIIIXZI\n", - "+0.005 * IIIIIIXZXIIIIIIIIXZI\n", - "+0.002 * IIZZZZYIXIIYZIIIIZII\n", - "-0.002 * IIZZZZXIYIIYZIIIIZII\n", - "-0.002 * IIIIIIYZYIIXZZZZZZZI\n", - "-0.002 * IIIIIIXZXIIXZZZZZZZI\n", - "+0.004 * IIZZZXZIXIIIIZZZXZII\n", - "+0.004 * IIZZZYZIYIIIIZZZXZII\n", - "+0.004 * IIIIIYZZYIIIIIIIXZZI\n", - "+0.004 * IIIIIXZZXIIIIIIIXZZI\n", - "+0.002 * IIZZZXZIXIIIIZZXIZII\n", - "+0.002 * IIZZZYZIYIIIIZZXIZII\n", - "+0.002 * IIIIIYZZYIIIIIIXZZZI\n", - "+0.002 * IIIIIXZZXIIIIIIXZZZI\n", - "+0.002 * IIZZXIZIXIIIIZZZXZII\n", - "+0.002 * IIZZYIZIYIIIIZZZXZII\n", - "+0.002 * IIIIYZZZYIIIIIIIXZZI\n", - "+0.002 * IIIIXZZZXIIIIIIIXZZI\n", - "+0.049 * IIZZXIZIXIIIIZZXIZII\n", - "+0.049 * IIZZYIZIYIIIIZZXIZII\n", - "+0.049 * IIIIYZZZYIIIIIIXZZZI\n", - "+0.049 * IIIIXZZZXIIIIIIXZZZI\n", - "+0.004 * IIZXIIZIXIIIIZZZZIZI\n", - "+0.004 * IIZYIIZIYIIIIZZZZIZI\n", - "-0.000 * IIZXIIZIXIIIIZZZZIXI\n", - "-0.000 * IIZYIIZIYIIIIZZZZIXI\n", - "-0.000 * IIIYZZZZYIIIIIIIIIXI\n", - "-0.000 * IIIXZZZZXIIIIIIIIIXI\n", - "+0.029 * IIZXIIZIXIIIIZXIIZII\n", - "+0.029 * IIZYIIZIYIIIIZXIIZII\n", - "+0.029 * IIIYZZZZYIIIIIXZZZZI\n", - "+0.029 * IIIXZZZZXIIIIIXZZZZI\n", - "+0.001 * IIZXIIZIXIIIIXIIIZII\n", - "+0.001 * IIZYIIZIYIIIIXIIIZII\n", - "+0.001 * IIIYZZZZYIIIIXZZZZZI\n", - "+0.001 * IIIXZZZZXIIIIXZZZZZI\n", - "+0.000 * IIXIIIZIXIIIIZZZZIZI\n", - "+0.000 * IIYIIIZIYIIIIZZZZIZI\n", - "+0.000 * IIXIIIZIXIIIIZZZZIXI\n", - "+0.000 * IIYIIIZIYIIIIZZZZIXI\n", - "+0.000 * IIYZZZZZYIIIIIIIIIXI\n", - "+0.000 * IIXZZZZZXIIIIIIIIIXI\n", - "+0.001 * IIXIIIZIXIIIIZXIIZII\n", - "+0.001 * IIYIIIZIYIIIIZXIIZII\n", - "+0.001 * IIYZZZZZYIIIIIXZZZZI\n", - "+0.001 * IIXZZZZZXIIIIIXZZZZI\n", - "+0.004 * IIXIIIZIXIIIIXIIIZII\n", - "+0.004 * IIYIIIZIYIIIIXIIIZII\n", - "+0.004 * IIYZZZZZYIIIIXZZZZZI\n", - "+0.004 * IIXZZZZZXIIIIXZZZZZI\n", - "-0.008 * IYIIIIZIXIIIYIIIIZII\n", - "+0.008 * IXIIIIZIYIIIYIIIIZII\n", - "+0.008 * IYZZZZZZYIIIXZZZZZZI\n", - "+0.008 * IXZZZZZZXIIIXZZZZZZI\n", - "+0.002 * YZIIIIZIXIIIIZZZZYII\n", - "-0.002 * XZIIIIZIYIIIIZZZZYII\n", - "-0.002 * YZZZZZZZYIIIIIIIIXZI\n", - "-0.002 * XZZZZZZZXIIIIIIIIXZI\n", - "-0.005 * YZIIIIZIXIIYZIIIIZII\n", - "+0.005 * XZIIIIZIYIIYZIIIIZII\n", - "+0.005 * YZZZZZZZYIIXZZZZZZZI\n", - "+0.005 * XZZZZZZZXIIXZZZZZZZI\n", - "+0.114 * IIZZZZIIZIIIIZZZZIZI\n", - "+0.004 * IIZZZZIIZIIIIZXIIZII\n", - "-0.004 * IIIIIIIZIIIIIIXZZZZI\n", - "+0.000 * IIZZZZIIZIIIIXIIIZII\n", - "-0.000 * IIIIIIIZIIIIIXZZZZZI\n", - "+0.002 * IIZZZXZXZIIIIZZZXZII\n", - "+0.002 * IIZZZYZYZIIIIZZZXZII\n", - "+0.002 * IIIIIYZYIIIIIIIIXZZI\n", - "+0.002 * IIIIIXZXIIIIIIIIXZZI\n", - "+0.042 * IIZZZXZXZIIIIZZXIZII\n", - "+0.042 * IIZZZYZYZIIIIZZXIZII\n", - "+0.042 * IIIIIYZYIIIIIIIXZZZI\n", - "+0.042 * IIIIIXZXIIIIIIIXZZZI\n", - "+0.003 * IIZZXIZXZIIIIZZZXZII\n", - "+0.003 * IIZZYIZYZIIIIZZZXZII\n", - "+0.003 * IIIIYZZYIIIIIIIIXZZI\n", - "+0.003 * IIIIXZZXIIIIIIIIXZZI\n", - "-0.002 * IIZZXIZXZIIIIZZXIZII\n", - "-0.002 * IIZZYIZYZIIIIZZXIZII\n", - "-0.002 * IIIIYZZYIIIIIIIXZZZI\n", - "-0.002 * IIIIXZZXIIIIIIIXZZZI\n", - "-0.000 * IIZXIIZXZIIIIZZZZIZI\n", - "-0.000 * IIZYIIZYZIIIIZZZZIZI\n", - "+0.000 * IIZXIIZXZIIIIZZZZIXI\n", - "+0.000 * IIZYIIZYZIIIIZZZZIXI\n", - "+0.000 * IIIYZZZYIIIIIIIIIIXI\n", - "+0.000 * IIIXZZZXIIIIIIIIIIXI\n", - "-0.001 * IIZXIIZXZIIIIZXIIZII\n", - "-0.001 * IIZYIIZYZIIIIZXIIZII\n", - "-0.001 * IIIYZZZYIIIIIIXZZZZI\n", - "-0.001 * IIIXZZZXIIIIIIXZZZZI\n", - "+0.003 * IIZXIIZXZIIIIXIIIZII\n", - "+0.003 * IIZYIIZYZIIIIXIIIZII\n", - "+0.003 * IIIYZZZYIIIIIXZZZZZI\n", - "+0.003 * IIIXZZZXIIIIIXZZZZZI\n", - "+0.004 * IIXIIIZXZIIIIZZZZIZI\n", - "+0.004 * IIYIIIZYZIIIIZZZZIZI\n", - "+0.000 * IIXIIIZXZIIIIZZZZIXI\n", - "+0.000 * IIYIIIZYZIIIIZZZZIXI\n", - "+0.000 * IIYZZZZYIIIIIIIIIIXI\n", - "+0.000 * IIXZZZZXIIIIIIIIIIXI\n", - "+0.023 * IIXIIIZXZIIIIZXIIZII\n", - "+0.023 * IIYIIIZYZIIIIZXIIZII\n", - "+0.023 * IIYZZZZYIIIIIIXZZZZI\n", - "+0.023 * IIXZZZZXIIIIIIXZZZZI\n", - "+0.001 * IIXIIIZXZIIIIXIIIZII\n", - "+0.001 * IIYIIIZYZIIIIXIIIZII\n", - "+0.001 * IIYZZZZYIIIIIXZZZZZI\n", - "+0.001 * IIXZZZZXIIIIIXZZZZZI\n", - "+0.111 * IIZZZZZZZIIIIZZZZIZI\n", - "-0.011 * IIZZZZZZZIIIIZXIIZII\n", - "+0.011 * IIIIIIZIIIIIIIXZZZZI\n", - "-0.001 * IIZZZZZZZIIIIXIIIZII\n", - "+0.001 * IIIIIIZIIIIIIXZZZZZI\n", - "+0.000 * IIZZZXYZZIIIYIIIIZII\n", - "-0.000 * IIZZZYXZZIIIYIIIIZII\n", - "-0.000 * IIIIIYYIIIIIXZZZZZZI\n", - "-0.000 * IIIIIXXIIIIIXZZZZZZI\n", - "+0.000 * IIZZXIYZZIIIYIIIIZII\n", - "-0.000 * IIZZYIXZZIIIYIIIIZII\n", - "-0.000 * IIIIYZYIIIIIXZZZZZZI\n", - "-0.000 * IIIIXZXIIIIIXZZZZZZI\n", - "+0.003 * IIZXIIYZZIIIIZZZZYII\n", - "-0.003 * IIZYIIXZZIIIIZZZZYII\n", - "-0.003 * IIIYZZYIIIIIIIIIIXZI\n", - "-0.003 * IIIXZZXIIIIIIIIIIXZI\n", - "+0.001 * IIZXIIYZZIIYZIIIIZII\n", - "-0.001 * IIZYIIXZZIIYZIIIIZII\n", - "-0.001 * IIIYZZYIIIIXZZZZZZZI\n", - "-0.001 * IIIXZZXIIIIXZZZZZZZI\n", - "+0.000 * IIXIIIYZZIIIIZZZZYII\n", - "-0.000 * IIYIIIXZZIIIIZZZZYII\n", - "-0.000 * IIYZZZYIIIIIIIIIIXZI\n", - "-0.000 * IIXZZZXIIIIIIIIIIXZI\n", - "+0.000 * IIXIIIYZZIIYZIIIIZII\n", - "-0.000 * IIYIIIXZZIIYZIIIIZII\n", - "-0.000 * IIYZZZYIIIIXZZZZZZZI\n", - "-0.000 * IIXZZZXIIIIXZZZZZZZI\n", - "+0.001 * IYIIIIYZZIIIIZZZXZII\n", - "+0.001 * IXIIIIXZZIIIIZZZXZII\n", - "-0.001 * IYZZZZYIIIIIIIIIXZZI\n", - "-0.001 * IXZZZZXIIIIIIIIIXZZI\n", - "+0.021 * IYIIIIYZZIIIIZZXIZII\n", - "+0.021 * IXIIIIXZZIIIIZZXIZII\n", - "-0.021 * IYZZZZYIIIIIIIIXZZZI\n", - "-0.021 * IXZZZZXIIIIIIIIXZZZI\n", - "+0.008 * YZIIIIYZZIIIIZZZZIZI\n", - "+0.008 * XZIIIIXZZIIIIZZZZIZI\n", - "+0.015 * YZIIIIYZZIIIIZXIIZII\n", - "+0.015 * XZIIIIXZZIIIIZXIIZII\n", - "-0.015 * YZZZZZYIIIIIIIXZZZZI\n", - "-0.015 * XZZZZZXIIIIIIIXZZZZI\n", - "+0.001 * YZIIIIYZZIIIIXIIIZII\n", - "+0.001 * XZIIIIXZZIIIIXIIIZII\n", - "-0.001 * YZZZZZYIIIIIIXZZZZZI\n", - "-0.001 * XZZZZZXIIIIIIXZZZZZI\n", - "+0.112 * IIZZZIIZZIIIIZZZZIZI\n", - "+0.000 * IIZZZIIZZIIIIZZZZIXI\n", - "-0.000 * IIIIIZIIIIIIIIIIIIXI\n", - "-0.016 * IIZZZIIZZIIIIZXIIZII\n", - "+0.016 * IIIIIZIIIIIIIIXZZZZI\n", - "-0.001 * IIZZZIIZZIIIIXIIIZII\n", - "+0.001 * IIIIIZIIIIIIIXZZZZZI\n", - "+0.000 * IIZZXXIZZIIIIZZZZIZI\n", - "+0.000 * IIZZYYIZZIIIIZZZZIZI\n", - "+0.004 * IIZZXXIZZIIIIZZZZIXI\n", - "+0.004 * IIZZYYIZZIIIIZZZZIXI\n", - "+0.004 * IIIIYYIIIIIIIIIIIIXI\n", - "+0.004 * IIIIXXIIIIIIIIIIIIXI\n", - "-0.000 * IIZZXXIZZIIIIZXIIZII\n", - "-0.000 * IIZZYYIZZIIIIZXIIZII\n", - "-0.000 * IIIIYYIIIIIIIIXZZZZI\n", - "-0.000 * IIIIXXIIIIIIIIXZZZZI\n", - "-0.003 * IIZZXXIZZIIIIXIIIZII\n", - "-0.003 * IIZZYYIZZIIIIXIIIZII\n", - "-0.003 * IIIIYYIIIIIIIXZZZZZI\n", - "-0.003 * IIIIXXIIIIIIIXZZZZZI\n", - "-0.003 * IIZXIXIZZIIIIZZZXZII\n", - "-0.003 * IIZYIYIZZIIIIZZZXZII\n", - "-0.003 * IIIYZYIIIIIIIIIIXZZI\n", - "-0.003 * IIIXZXIIIIIIIIIIXZZI\n", - "+0.001 * IIZXIXIZZIIIIZZXIZII\n", - "+0.001 * IIZYIYIZZIIIIZZXIZII\n", - "+0.001 * IIIYZYIIIIIIIIIXZZZI\n", - "+0.001 * IIIXZXIIIIIIIIIXZZZI\n", - "-0.001 * IIXIIXIZZIIIIZZZXZII\n", - "-0.001 * IIYIIYIZZIIIIZZZXZII\n", - "-0.001 * IIYZZYIIIIIIIIIIXZZI\n", - "-0.001 * IIXZZXIIIIIIIIIIXZZI\n", - "-0.035 * IIXIIXIZZIIIIZZXIZII\n", - "-0.035 * IIYIIYIZZIIIIZZXIZII\n", - "-0.035 * IIYZZYIIIIIIIIIXZZZI\n", - "-0.035 * IIXZZXIIIIIIIIIXZZZI\n", - "+0.000 * IYIIIXIZZIIIIZZZZYII\n", - "-0.000 * IXIIIYIZZIIIIZZZZYII\n", - "-0.000 * IYZZZYIIIIIIIIIIIXZI\n", - "-0.000 * IXZZZXIIIIIIIIIIIXZI\n", - "+0.000 * IYIIIXIZZIIYZIIIIZII\n", - "-0.000 * IXIIIYIZZIIYZIIIIZII\n", - "-0.000 * IYZZZYIIIIIXZZZZZZZI\n", - "-0.000 * IXZZZXIIIIIXZZZZZZZI\n", - "+0.000 * YZIIIXIZZIIIYIIIIZII\n", - "-0.000 * XZIIIYIZZIIIYIIIIZII\n", - "-0.000 * YZZZZYIIIIIIXZZZZZZI\n", - "-0.000 * XZZZZXIIIIIIXZZZZZZI\n", - "+0.119 * IIZZIZIZZIIIIZZZZIZI\n", - "-0.000 * IIZZIZIZZIIIIZZZZIXI\n", - "+0.000 * IIIIZIIIIIIIIIIIIIXI\n", - "-0.021 * IIZZIZIZZIIIIZXIIZII\n", - "+0.021 * IIIIZIIIIIIIIIXZZZZI\n", - "-0.001 * IIZZIZIZZIIIIXIIIZII\n", - "+0.001 * IIIIZIIIIIIIIXZZZZZI\n", - "-0.001 * IIZXXZIZZIIIIZZZXZII\n", - "-0.001 * IIZYYZIZZIIIIZZZXZII\n", - "-0.001 * IIIYYIIIIIIIIIIIXZZI\n", - "-0.001 * IIIXXIIIIIIIIIIIXZZI\n", - "-0.041 * IIZXXZIZZIIIIZZXIZII\n", - "-0.041 * IIZYYZIZZIIIIZZXIZII\n", - "-0.041 * IIIYYIIIIIIIIIIXZZZI\n", - "-0.041 * IIIXXIIIIIIIIIIXZZZI\n", - "-0.003 * IIXIXZIZZIIIIZZZXZII\n", - "-0.003 * IIYIYZIZZIIIIZZZXZII\n", - "-0.003 * IIYZYIIIIIIIIIIIXZZI\n", - "-0.003 * IIXZXIIIIIIIIIIIXZZI\n", - "-0.001 * IIXIXZIZZIIIIZZXIZII\n", - "-0.001 * IIYIYZIZZIIIIZZXIZII\n", - "-0.001 * IIYZYIIIIIIIIIIXZZZI\n", - "-0.001 * IIXZXIIIIIIIIIIXZZZI\n", - "+0.001 * IYIIXZIZZIIIIZZZZYII\n", - "-0.001 * IXIIYZIZZIIIIZZZZYII\n", - "-0.001 * IYZZYIIIIIIIIIIIIXZI\n", - "-0.001 * IXZZXIIIIIIIIIIIIXZI\n", - "+0.003 * IYIIXZIZZIIYZIIIIZII\n", - "-0.003 * IXIIYZIZZIIYZIIIIZII\n", - "-0.003 * IYZZYIIIIIIXZZZZZZZI\n", - "-0.003 * IXZZXIIIIIIXZZZZZZZI\n", - "+0.004 * YZIIXZIZZIIIYIIIIZII\n", - "-0.004 * XZIIYZIZZIIIYIIIIZII\n", - "-0.004 * YZZZYIIIIIIIXZZZZZZI\n", - "-0.004 * XZZZXIIIIIIIXZZZZZZI\n", - "+0.126 * IIZIZZIZZIIIIZZZZIZI\n", - "-0.000 * IIZIZZIZZIIIIZZZZIXI\n", - "+0.000 * IIIZIIIIIIIIIIIIIIXI\n", - "+0.011 * IIZIZZIZZIIIIZXIIZII\n", - "-0.011 * IIIZIIIIIIIIIIXZZZZI\n", - "+0.000 * IIZIZZIZZIIIIXIIIZII\n", - "-0.000 * IIIZIIIIIIIIIXZZZZZI\n", - "+0.000 * IIXXZZIZZIIIIZZZZIZI\n", - "+0.000 * IIYYZZIZZIIIIZZZZIZI\n", - "+0.004 * IIXXZZIZZIIIIZZZZIXI\n", - "+0.004 * IIYYZZIZZIIIIZZZZIXI\n", - "+0.004 * IIYYIIIIIIIIIIIIIIXI\n", - "+0.004 * IIXXIIIIIIIIIIIIIIXI\n", - "+0.000 * IIXXZZIZZIIIIZXIIZII\n", - "+0.000 * IIYYZZIZZIIIIZXIIZII\n", - "+0.000 * IIYYIIIIIIIIIIXZZZZI\n", - "+0.000 * IIXXIIIIIIIIIIXZZZZI\n", - "+0.001 * IIXXZZIZZIIIIXIIIZII\n", - "+0.001 * IIYYZZIZZIIIIXIIIZII\n", - "+0.001 * IIYYIIIIIIIIIXZZZZZI\n", - "+0.001 * IIXXIIIIIIIIIXZZZZZI\n", - "-0.006 * IYIXZZIZZIIIYIIIIZII\n", - "+0.006 * IXIYZZIZZIIIYIIIIZII\n", - "+0.006 * IYZYIIIIIIIIXZZZZZZI\n", - "+0.006 * IXZXIIIIIIIIXZZZZZZI\n", - "+0.002 * YZIXZZIZZIIIIZZZZYII\n", - "-0.002 * XZIYZZIZZIIIIZZZZYII\n", - "-0.002 * YZZYIIIIIIIIIIIIIXZI\n", - "-0.002 * XZZXIIIIIIIIIIIIIXZI\n", - "-0.000 * YZIXZZIZZIIYZIIIIZII\n", - "+0.000 * XZIYZZIZZIIYZIIIIZII\n", - "+0.000 * YZZYIIIIIIIXZZZZZZZI\n", - "+0.000 * XZZXIIIIIIIXZZZZZZZI\n", - "+0.118 * IIIZZZIZZIIIIZZZZIZI\n", - "+0.000 * IIIZZZIZZIIIIZZZZIXI\n", - "-0.000 * IIZIIIIIIIIIIIIIIIXI\n", - "+0.009 * IIIZZZIZZIIIIZXIIZII\n", - "-0.009 * IIZIIIIIIIIIIIXZZZZI\n", - "+0.001 * IIIZZZIZZIIIIXIIIZII\n", - "-0.001 * IIZIIIIIIIIIIXZZZZZI\n", - "-0.000 * IYXZZZIZZIIIYIIIIZII\n", - "+0.000 * IXYZZZIZZIIIYIIIIZII\n", - "+0.000 * IYYIIIIIIIIIXZZZZZZI\n", - "+0.000 * IXXIIIIIIIIIXZZZZZZI\n", - "+0.000 * YZXZZZIZZIIIIZZZZYII\n", - "-0.000 * XZYZZZIZZIIIIZZZZYII\n", - "-0.000 * YZYIIIIIIIIIIIIIIXZI\n", - "-0.000 * XZXIIIIIIIIIIIIIIXZI\n", - "-0.000 * YZXZZZIZZIIYZIIIIZII\n", - "+0.000 * XZYZZZIZZIIYZIIIIZII\n", - "+0.000 * YZYIIIIIIIIXZZZZZZZI\n", - "+0.000 * XZXIIIIIIIIXZZZZZZZI\n", - "+0.124 * IZZZZZIZZIIIIZZZZIZI\n", - "+0.006 * IZZZZZIZZIIIIZXIIZII\n", - "-0.006 * IZIIIIIIIIIIIIXZZZZI\n", - "+0.000 * IZZZZZIZZIIIIXIIIZII\n", - "-0.000 * IZIIIIIIIIIIIXZZZZZI\n", - "+0.001 * YYZZZZIZZIIIIZZZXZII\n", - "+0.001 * XXZZZZIZZIIIIZZZXZII\n", - "-0.001 * YYIIIIIIIIIIIIIIXZZI\n", - "-0.001 * XXIIIIIIIIIIIIIIXZZI\n", - "+0.037 * YYZZZZIZZIIIIZZXIZII\n", - "+0.037 * XXZZZZIZZIIIIZZXIZII\n", - "-0.037 * YYIIIIIIIIIIIIIXZZZI\n", - "-0.037 * XXIIIIIIIIIIIIIXZZZI\n", - "+0.132 * ZIZZZZIZZIIIIZZZZIZI\n", - "+0.011 * ZIZZZZIZZIIIIZXIIZII\n", - "-0.011 * ZIIIIIIIIIIIIIXZZZZI\n", - "+0.001 * ZIZZZZIZZIIIIXIIIZII\n", - "-0.001 * ZIIIIIIIIIIIIXZZZZZI\n", - "+0.106 * IIIIIIIIIIIIIIIIIZZI\n", - "+0.006 * IIIIIIIIIIIYZZZZZYZI\n", - "+0.006 * IIIIIIIIIIIXZZZZZXZI\n", - "+0.071 * IIIIIIIIIIIIIIIIZIZI\n", - "-0.001 * IIIIIIIIIIIIIIIYYIZI\n", - "-0.001 * IIIIIIIIIIIIIIIXXIZI\n", - "+0.108 * IIIIIIIIIIIIIIIZIIZI\n", - "+0.114 * IIIIIIIIIIIIIIZIIIZI\n", - "-0.001 * IIIIIIIIIIIIIYYIIIZI\n", - "-0.001 * IIIIIIIIIIIIIXXIIIZI\n", - "+0.097 * IIIIIIIIIIIIIZIIIIZI\n", - "+0.115 * IIIIIIIIIIIIZIIIIIZI\n", - "+0.127 * IIIIIIIIIIIZIIIIIIZI\n", - "-0.000 * IIIIIIIIIIIIIIYZZIYI\n", - "-0.000 * IIIIIIIIIIIIIIXZZIXI\n", - "+0.008 * IIIIIIIIIIIIIYZZZIYI\n", - "+0.008 * IIIIIIIIIIIIIXZZZIXI\n", - "-0.021 * IIIIIIIIIIIIYZZZXXYI\n", - "-0.001 * IIIIIIIIIIIIYZZZYYYI\n", - "+0.020 * IIIIIIIIIIIIXZZZXYYI\n", - "+0.020 * IIIIIIIIIIIIYZZZYXXI\n", - "-0.001 * IIIIIIIIIIIIXZZZXXXI\n", - "-0.021 * IIIIIIIIIIIIXZZZYYXI\n", - "+0.001 * IIIIIIIIIIIIYZZXIXYI\n", - "+0.000 * IIIIIIIIIIIIYZZYIYYI\n", - "-0.001 * IIIIIIIIIIIIXZZXIYYI\n", - "-0.001 * IIIIIIIIIIIIYZZYIXXI\n", - "+0.000 * IIIIIIIIIIIIXZZXIXXI\n", - "+0.001 * IIIIIIIIIIIIXZZYIYXI\n", - "+0.001 * IIIIIIIIIIIYZZXIIXYI\n", - "+0.000 * IIIIIIIIIIIYZZYIIYYI\n", - "-0.001 * IIIIIIIIIIIXZZXIIYYI\n", - "-0.001 * IIIIIIIIIIIYZZYIIXXI\n", - "+0.000 * IIIIIIIIIIIXZZXIIXXI\n", - "+0.001 * IIIIIIIIIIIXZZYIIYXI\n", - "-0.015 * IIIIIIIIIIIYZXIIIXYI\n", - "-0.001 * IIIIIIIIIIIYZYIIIYYI\n", - "+0.014 * IIIIIIIIIIIXZXIIIYYI\n", - "+0.014 * IIIIIIIIIIIYZYIIIXXI\n", - "-0.001 * IIIIIIIIIIIXZXIIIXXI\n", - "-0.015 * IIIIIIIIIIIXZYIIIYXI\n", - "-0.000 * IIIIIIIIIIIIIIYZIZYI\n", - "-0.000 * IIIIIIIIIIIIIIXZIZXI\n", - "-0.021 * IIIIIIIIIIIIIYZZIZYI\n", - "-0.021 * IIIIIIIIIIIIIXZZIZXI\n", - "-0.000 * IIIIIIIIIIIIIIYXXZYI\n", - "-0.033 * IIIIIIIIIIIIIIYYYZYI\n", - "-0.033 * IIIIIIIIIIIIIIXXYZYI\n", - "-0.033 * IIIIIIIIIIIIIIYYXZXI\n", - "-0.033 * IIIIIIIIIIIIIIXXXZXI\n", - "-0.000 * IIIIIIIIIIIIIIXYYZXI\n", - "+0.001 * IIIIIIIIIIIIIYZXXZYI\n", - "-0.001 * IIIIIIIIIIIIIYZYYZYI\n", - "-0.002 * IIIIIIIIIIIIIXZXYZYI\n", - "-0.002 * IIIIIIIIIIIIIYZYXZXI\n", - "-0.001 * IIIIIIIIIIIIIXZXXZXI\n", - "+0.001 * IIIIIIIIIIIIIXZYYZXI\n", - "-0.000 * IIIIIIIIIIIYXIIIXZYI\n", - "-0.033 * IIIIIIIIIIIYYIIIYZYI\n", - "-0.033 * IIIIIIIIIIIXXIIIYZYI\n", - "-0.033 * IIIIIIIIIIIYYIIIXZXI\n", - "-0.033 * IIIIIIIIIIIXXIIIXZXI\n", - "-0.000 * IIIIIIIIIIIXYIIIYZXI\n", - "+0.000 * IIIIIIIIIIIIIIYIZZYI\n", - "+0.000 * IIIIIIIIIIIIIIXIZZXI\n", - "+0.013 * IIIIIIIIIIIIIYZIZZYI\n", - "+0.013 * IIIIIIIIIIIIIXZIZZXI\n", - "+0.000 * IIIIIIIIIIIYXIIXZZYI\n", - "+0.001 * IIIIIIIIIIIYYIIYZZYI\n", - "+0.001 * IIIIIIIIIIIXXIIYZZYI\n", - "+0.001 * IIIIIIIIIIIYYIIXZZXI\n", - "+0.001 * IIIIIIIIIIIXXIIXZZXI\n", - "+0.000 * IIIIIIIIIIIXYIIYZZXI\n", - "-0.007 * IIIIIIIIIIIIIYIZZZYI\n", - "-0.007 * IIIIIIIIIIIIIXIZZZXI\n", - "+0.000 * IIIIIIIIIIIIIZYZZZYI\n", - "+0.000 * IIIIIIIIIIIIIZXZZZXI\n", - "+0.000 * IIIIIIIIIIIIZIYZZZYI\n", - "+0.000 * IIIIIIIIIIIIZIXZZZXI\n", - "+0.001 * IIIIIIIIIIIZIIYZZZYI\n", - "+0.001 * IIIIIIIIIIIZIIXZZZXI\n", - "-0.000 * IIIIIIIIIIIIZYZZZZYI\n", - "-0.000 * IIIIIIIIIIIIZXZZZZXI\n", - "-0.011 * IIIIIIIIIIIZIYZZZZYI\n", - "-0.011 * IIIIIIIIIIIZIXZZZZXI\n", - "+0.123 * ZZZZZZZZZZZIIIIIIIZI\n", - "+0.000 * ZZZZZZZZZZZIIIYZZZYI\n", - "+0.000 * ZZZZZZZZZZZIIIXZZZXI\n", - "-0.001 * ZZZZZZZZZZZIIYZZZZYI\n", - "-0.001 * ZZZZZZZZZZZIIXZZZZXI\n", - "-0.047 * ZZZZZZZZZZXIIIIIYZYI\n", - "+0.047 * IIIIIIIIIIXIIIIIYZYI\n", - "-0.047 * ZZZZZZZZZZXIIIIIXZXI\n", - "+0.047 * IIIIIIIIIIXIIIIIXZXI\n", - "+0.002 * ZZZZZZZZZZXIIIIYZZYI\n", - "-0.002 * IIIIIIIIIIXIIIIYZZYI\n", - "+0.002 * ZZZZZZZZZZXIIIIXZZXI\n", - "-0.002 * IIIIIIIIIIXIIIIXZZXI\n", - "+0.008 * ZZZZZZZZZXIIIIIIIIZI\n", - "-0.008 * IIIIIIIIIXZIIIIIIIZI\n", - "+0.001 * ZZZZZZZZZXIIIIYZZZYI\n", - "-0.001 * IIIIIIIIIXZIIIYZZZYI\n", - "+0.001 * ZZZZZZZZZXIIIIXZZZXI\n", - "-0.001 * IIIIIIIIIXZIIIXZZZXI\n", - "-0.017 * ZZZZZZZZZXIIIYZZZZYI\n", - "+0.017 * IIIIIIIIIXZIIYZZZZYI\n", - "-0.017 * ZZZZZZZZZXIIIXZZZZXI\n", - "+0.017 * IIIIIIIIIXZIIXZZZZXI\n", - "-0.003 * ZZZZZZZXIIIIYZZZZZYI\n", - "+0.003 * IIIIIIIXZZZIYZZZZZYI\n", - "-0.003 * ZZZZZZZXIIIIXZZZZZXI\n", - "+0.003 * IIIIIIIXZZZIXZZZZZXI\n", - "+0.004 * ZZZZZZXIIIIIIIIIYZYI\n", - "-0.004 * IIIIIIXZZZZIIIIIYZYI\n", - "+0.004 * ZZZZZZXIIIIIIIIIXZXI\n", - "-0.004 * IIIIIIXZZZZIIIIIXZXI\n", - "-0.000 * ZZZZZZXIIIIIIIIYZZYI\n", - "+0.000 * IIIIIIXZZZZIIIIYZZYI\n", - "-0.000 * ZZZZZZXIIIIIIIIXZZXI\n", - "+0.000 * IIIIIIXZZZZIIIIXZZXI\n", - "+0.003 * ZZZZZXIIIIIIIIIIIYYI\n", - "-0.003 * IIIIIXZZZZZIIIIIIYYI\n", - "+0.003 * ZZZZZXIIIIIIIIIIIXXI\n", - "-0.003 * IIIIIXZZZZZIIIIIIXXI\n", - "-0.004 * ZZZZZXIIIIIYZZZZZZYI\n", - "+0.004 * IIIIIXZZZZZYZZZZZZYI\n", - "-0.004 * ZZZZZXIIIIIXZZZZZZXI\n", - "+0.004 * IIIIIXZZZZZXZZZZZZXI\n", - "-0.000 * ZZZZXIIIIIIIIIIIIYYI\n", - "+0.000 * IIIIXZZZZZZIIIIIIYYI\n", - "-0.000 * ZZZZXIIIIIIIIIIIIXXI\n", - "+0.000 * IIIIXZZZZZZIIIIIIXXI\n", - "+0.000 * ZZZZXIIIIIIYZZZZZZYI\n", - "-0.000 * IIIIXZZZZZZYZZZZZZYI\n", - "+0.000 * ZZZZXIIIIIIXZZZZZZXI\n", - "-0.000 * IIIIXZZZZZZXZZZZZZXI\n", - "+0.000 * ZZZXIIIIIIIIYZZZZZYI\n", - "-0.000 * IIIXZZZZZZZIYZZZZZYI\n", - "+0.000 * ZZZXIIIIIIIIXZZZZZXI\n", - "-0.000 * IIIXZZZZZZZIXZZZZZXI\n", - "-0.007 * ZZXIIIIIIIIIYZZZZZYI\n", - "+0.007 * IIXZZZZZZZZIYZZZZZYI\n", - "-0.007 * ZZXIIIIIIIIIXZZZZZXI\n", - "+0.007 * IIXZZZZZZZZIXZZZZZXI\n", - "-0.006 * ZXIIIIIIIIIIIIIIIIZI\n", - "+0.006 * IXZZZZZZZZZIIIIIIIZI\n", - "+0.001 * ZXIIIIIIIIIIIIYZZZYI\n", - "-0.001 * IXZZZZZZZZZIIIYZZZYI\n", - "+0.001 * ZXIIIIIIIIIIIIXZZZXI\n", - "-0.001 * IXZZZZZZZZZIIIXZZZXI\n", - "-0.014 * ZXIIIIIIIIIIIYZZZZYI\n", - "+0.014 * IXZZZZZZZZZIIYZZZZYI\n", - "-0.014 * ZXIIIIIIIIIIIXZZZZXI\n", - "+0.014 * IXZZZZZZZZZIIXZZZZXI\n", - "-0.014 * XIIIIIIIIIIIIIIIYZYI\n", - "+0.014 * XZZZZZZZZZZIIIIIYZYI\n", - "-0.014 * XIIIIIIIIIIIIIIIXZXI\n", - "+0.014 * XZZZZZZZZZZIIIIIXZXI\n", - "+0.000 * XIIIIIIIIIIIIIIYZZYI\n", - "-0.000 * XZZZZZZZZZZIIIIYZZYI\n", - "+0.000 * XIIIIIIIIIIIIIIXZZXI\n", - "-0.000 * XZZZZZZZZZZIIIIXZZXI\n", - "+0.123 * IIIIIIIIIIZIIIIIIIZI\n", - "-0.000 * IIIIIIIIIIZIIIYZZZYI\n", - "-0.000 * IIIIIIIIIIZIIIXZZZXI\n", - "+0.004 * IIIIIIIIIIZIIYZZZZYI\n", - "+0.004 * IIIIIIIIIIZIIXZZZZXI\n", - "-0.015 * IIIIIIIIIYYIIIIIYZYI\n", - "-0.015 * IIIIIIIIIXXIIIIIYZYI\n", - "-0.015 * IIIIIIIIIYYIIIIIXZXI\n", - "-0.015 * IIIIIIIIIXXIIIIIXZXI\n", - "+0.001 * IIIIIIIIIYYIIIIYZZYI\n", - "+0.001 * IIIIIIIIIXXIIIIYZZYI\n", - "+0.001 * IIIIIIIIIYYIIIIXZZXI\n", - "+0.001 * IIIIIIIIIXXIIIIXZZXI\n", - "-0.001 * IIIIIIIYZZYIIIIIIYYI\n", - "-0.001 * IIIIIIIXZZXIIIIIIYYI\n", - "-0.001 * IIIIIIIYZZYIIIIIIXXI\n", - "-0.001 * IIIIIIIXZZXIIIIIIXXI\n", - "+0.002 * IIIIIIIYZZYYZZZZZZYI\n", - "+0.002 * IIIIIIIXZZXYZZZZZZYI\n", - "+0.002 * IIIIIIIYZZYXZZZZZZXI\n", - "+0.002 * IIIIIIIXZZXXZZZZZZXI\n", - "-0.011 * IIIIIIYZZZYIIIIIIIZI\n", - "-0.011 * IIIIIIXZZZXIIIIIIIZI\n", - "-0.001 * IIIIIIYZZZYIIIYZZZYI\n", - "-0.001 * IIIIIIXZZZXIIIYZZZYI\n", - "-0.001 * IIIIIIYZZZYIIIXZZZXI\n", - "-0.001 * IIIIIIXZZZXIIIXZZZXI\n", - "+0.014 * IIIIIIYZZZYIIYZZZZYI\n", - "+0.014 * IIIIIIXZZZXIIYZZZZYI\n", - "+0.014 * IIIIIIYZZZYIIXZZZZXI\n", - "+0.014 * IIIIIIXZZZXIIXZZZZXI\n", - "-0.002 * IIIIIYZZZZYIYZZZZZYI\n", - "-0.002 * IIIIIXZZZZXIYZZZZZYI\n", - "-0.002 * IIIIIYZZZZYIXZZZZZXI\n", - "-0.002 * IIIIIXZZZZXIXZZZZZXI\n", - "+0.000 * IIIIYZZZZZYIYZZZZZYI\n", - "+0.000 * IIIIXZZZZZXIYZZZZZYI\n", - "+0.000 * IIIIYZZZZZYIXZZZZZXI\n", - "+0.000 * IIIIXZZZZZXIXZZZZZXI\n", - "-0.000 * IIIYZZZZZZYIIIIIIYYI\n", - "-0.000 * IIIXZZZZZZXIIIIIIYYI\n", - "-0.000 * IIIYZZZZZZYIIIIIIXXI\n", - "-0.000 * IIIXZZZZZZXIIIIIIXXI\n", - "+0.000 * IIIYZZZZZZYYZZZZZZYI\n", - "+0.000 * IIIXZZZZZZXYZZZZZZYI\n", - "+0.000 * IIIYZZZZZZYXZZZZZZXI\n", - "+0.000 * IIIXZZZZZZXXZZZZZZXI\n", - "+0.004 * IIYZZZZZZZYIIIIIIYYI\n", - "+0.004 * IIXZZZZZZZXIIIIIIYYI\n", - "+0.004 * IIYZZZZZZZYIIIIIIXXI\n", - "+0.004 * IIXZZZZZZZXIIIIIIXXI\n", - "-0.004 * IIYZZZZZZZYYZZZZZZYI\n", - "-0.004 * IIXZZZZZZZXYZZZZZZYI\n", - "-0.004 * IIYZZZZZZZYXZZZZZZXI\n", - "-0.004 * IIXZZZZZZZXXZZZZZZXI\n", - "-0.018 * IYZZZZZZZZYIIIIIYZYI\n", - "-0.018 * IXZZZZZZZZXIIIIIYZYI\n", - "-0.018 * IYZZZZZZZZYIIIIIXZXI\n", - "-0.018 * IXZZZZZZZZXIIIIIXZXI\n", - "+0.001 * IYZZZZZZZZYIIIIYZZYI\n", - "+0.001 * IXZZZZZZZZXIIIIYZZYI\n", - "+0.001 * IYZZZZZZZZYIIIIXZZXI\n", - "+0.001 * IXZZZZZZZZXIIIIXZZXI\n", - "-0.002 * YZZZZZZZZZYIIIIIIIZI\n", - "-0.002 * XZZZZZZZZZXIIIIIIIZI\n", - "+0.001 * YZZZZZZZZZYIIIYZZZYI\n", - "+0.001 * XZZZZZZZZZXIIIYZZZYI\n", - "+0.001 * YZZZZZZZZZYIIIXZZZXI\n", - "+0.001 * XZZZZZZZZZXIIIXZZZXI\n", - "-0.015 * YZZZZZZZZZYIIYZZZZYI\n", - "-0.015 * XZZZZZZZZZXIIYZZZZYI\n", - "-0.015 * YZZZZZZZZZYIIXZZZZXI\n", - "-0.015 * XZZZZZZZZZXIIXZZZZXI\n", - "+0.110 * IIIIIIIIIZIIIIIIIIZI\n", - "-0.000 * IIIIIIIIIZIIIIYZZZYI\n", - "-0.000 * IIIIIIIIIZIIIIXZZZXI\n", - "+0.009 * IIIIIIIIIZIIIYZZZZYI\n", - "+0.009 * IIIIIIIIIZIIIXZZZZXI\n", - "+0.004 * IIIIIIIYZYIIYZZZZZYI\n", - "+0.004 * IIIIIIIXZXIIYZZZZZYI\n", - "+0.004 * IIIIIIIYZYIIXZZZZZXI\n", - "+0.004 * IIIIIIIXZXIIXZZZZZXI\n", - "+0.048 * IIIIIIYZZYIIIIIIYZYI\n", - "+0.048 * IIIIIIXZZXIIIIIIYZYI\n", - "+0.048 * IIIIIIYZZYIIIIIIXZXI\n", - "+0.048 * IIIIIIXZZXIIIIIIXZXI\n", - "-0.002 * IIIIIIYZZYIIIIIYZZYI\n", - "-0.002 * IIIIIIXZZXIIIIIYZZYI\n", - "-0.002 * IIIIIIYZZYIIIIIXZZXI\n", - "-0.002 * IIIIIIXZZXIIIIIXZZXI\n", - "+0.006 * IIIIIYZZZYIIIIIIIYYI\n", - "+0.006 * IIIIIXZZZXIIIIIIIYYI\n", - "+0.006 * IIIIIYZZZYIIIIIIIXXI\n", - "+0.006 * IIIIIXZZZXIIIIIIIXXI\n", - "-0.002 * IIIIIYZZZYIYZZZZZZYI\n", - "-0.002 * IIIIIXZZZXIYZZZZZZYI\n", - "-0.002 * IIIIIYZZZYIXZZZZZZXI\n", - "-0.002 * IIIIIXZZZXIXZZZZZZXI\n", - "-0.000 * IIIIYZZZZYIIIIIIIYYI\n", - "-0.000 * IIIIXZZZZXIIIIIIIYYI\n", - "-0.000 * IIIIYZZZZYIIIIIIIXXI\n", - "-0.000 * IIIIXZZZZXIIIIIIIXXI\n", - "+0.000 * IIIIYZZZZYIYZZZZZZYI\n", - "+0.000 * IIIIXZZZZXIYZZZZZZYI\n", - "+0.000 * IIIIYZZZZYIXZZZZZZXI\n", - "+0.000 * IIIIXZZZZXIXZZZZZZXI\n", - "-0.000 * IIIYZZZZZYIIYZZZZZYI\n", - "-0.000 * IIIXZZZZZXIIYZZZZZYI\n", - "-0.000 * IIIYZZZZZYIIXZZZZZXI\n", - "-0.000 * IIIXZZZZZXIIXZZZZZXI\n", - "+0.005 * IIYZZZZZZYIIYZZZZZYI\n", - "+0.005 * IIXZZZZZZXIIYZZZZZYI\n", - "+0.005 * IIYZZZZZZYIIXZZZZZXI\n", - "+0.005 * IIXZZZZZZXIIXZZZZZXI\n", - "-0.006 * IYZZZZZZZYIIIIIIIIZI\n", - "-0.006 * IXZZZZZZZXIIIIIIIIZI\n", - "-0.001 * IYZZZZZZZYIIIIYZZZYI\n", - "-0.001 * IXZZZZZZZXIIIIYZZZYI\n", - "-0.001 * IYZZZZZZZYIIIIXZZZXI\n", - "-0.001 * IXZZZZZZZXIIIIXZZZXI\n", - "+0.016 * IYZZZZZZZYIIIYZZZZYI\n", - "+0.016 * IXZZZZZZZXIIIYZZZZYI\n", - "+0.016 * IYZZZZZZZYIIIXZZZZXI\n", - "+0.016 * IXZZZZZZZXIIIXZZZZXI\n", - "+0.004 * YZZZZZZZZYIIIIIIYZYI\n", - "+0.004 * XZZZZZZZZXIIIIIIYZYI\n", - "+0.004 * YZZZZZZZZYIIIIIIXZXI\n", - "+0.004 * XZZZZZZZZXIIIIIIXZXI\n", - "-0.000 * YZZZZZZZZYIIIIIYZZYI\n", - "-0.000 * XZZZZZZZZXIIIIIYZZYI\n", - "-0.000 * YZZZZZZZZYIIIIIXZZXI\n", - "-0.000 * XZZZZZZZZXIIIIIXZZXI\n", - "+0.114 * IIIIIIIIZIIIIIIIIIZI\n", - "+0.000 * IIIIIIIIZIIIIIYZZZYI\n", - "+0.000 * IIIIIIIIZIIIIIXZZZXI\n", - "-0.004 * IIIIIIIIZIIIIYZZZZYI\n", - "-0.004 * IIIIIIIIZIIIIXZZZZXI\n", - "+0.000 * IIIIIIIYYIIIIIYZZZYI\n", - "+0.000 * IIIIIIIXXIIIIIYZZZYI\n", - "+0.000 * IIIIIIIYYIIIIIXZZZXI\n", - "+0.000 * IIIIIIIXXIIIIIXZZZXI\n", - "+0.000 * IIIIIIIYYIIIIYZZZZYI\n", - "+0.000 * IIIIIIIXXIIIIYZZZZYI\n", - "+0.000 * IIIIIIIYYIIIIXZZZZXI\n", - "+0.000 * IIIIIIIXXIIIIXZZZZXI\n", - "+0.002 * IIIIIYZZYIIIIIIIYZYI\n", - "+0.002 * IIIIIXZZXIIIIIIIYZYI\n", - "+0.002 * IIIIIYZZYIIIIIIIXZXI\n", - "+0.002 * IIIIIXZZXIIIIIIIXZXI\n", - "+0.003 * IIIIIYZZYIIIIIIYZZYI\n", - "+0.003 * IIIIIXZZXIIIIIIYZZYI\n", - "+0.003 * IIIIIYZZYIIIIIIXZZXI\n", - "+0.003 * IIIIIXZZXIIIIIIXZZXI\n", - "+0.042 * IIIIYZZZYIIIIIIIYZYI\n", - "+0.042 * IIIIXZZZXIIIIIIIYZYI\n", - "+0.042 * IIIIYZZZYIIIIIIIXZXI\n", - "+0.042 * IIIIXZZZXIIIIIIIXZXI\n", - "-0.002 * IIIIYZZZYIIIIIIYZZYI\n", - "-0.002 * IIIIXZZZXIIIIIIYZZYI\n", - "-0.002 * IIIIYZZZYIIIIIIXZZXI\n", - "-0.002 * IIIIXZZZXIIIIIIXZZXI\n", - "-0.004 * IIIYZZZZYIIIIIIIIIZI\n", - "-0.004 * IIIXZZZZXIIIIIIIIIZI\n", - "-0.001 * IIIYZZZZYIIIIIYZZZYI\n", - "-0.001 * IIIXZZZZXIIIIIYZZZYI\n", - "-0.001 * IIIYZZZZYIIIIIXZZZXI\n", - "-0.001 * IIIXZZZZXIIIIIXZZZXI\n", - "+0.023 * IIIYZZZZYIIIIYZZZZYI\n", - "+0.023 * IIIXZZZZXIIIIYZZZZYI\n", - "+0.023 * IIIYZZZZYIIIIXZZZZXI\n", - "+0.023 * IIIXZZZZXIIIIXZZZZXI\n", - "-0.000 * IIYZZZZZYIIIIIIIIIZI\n", - "-0.000 * IIXZZZZZXIIIIIIIIIZI\n", - "+0.003 * IIYZZZZZYIIIIIYZZZYI\n", - "+0.003 * IIXZZZZZXIIIIIYZZZYI\n", - "+0.003 * IIYZZZZZYIIIIIXZZZXI\n", - "+0.003 * IIXZZZZZXIIIIIXZZZXI\n", - "+0.001 * IIYZZZZZYIIIIYZZZZYI\n", - "+0.001 * IIXZZZZZXIIIIYZZZZYI\n", - "+0.001 * IIYZZZZZYIIIIXZZZZXI\n", - "+0.001 * IIXZZZZZXIIIIXZZZZXI\n", - "+0.122 * IIIIIIIZIIIIIIIIIIZI\n", - "+0.000 * IIIIIIIZIIIIIIYZZZYI\n", - "+0.000 * IIIIIIIZIIIIIIXZZZXI\n", - "-0.004 * IIIIIIIZIIIIIYZZZZYI\n", - "-0.004 * IIIIIIIZIIIIIXZZZZXI\n", - "+0.005 * IIIIIIYYIIIIIIIIIYYI\n", - "+0.005 * IIIIIIXXIIIIIIIIIYYI\n", - "+0.005 * IIIIIIYYIIIIIIIIIXXI\n", - "+0.005 * IIIIIIXXIIIIIIIIIXXI\n", - "-0.002 * IIIIIIYYIIIYZZZZZZYI\n", - "-0.002 * IIIIIIXXIIIYZZZZZZYI\n", - "-0.002 * IIIIIIYYIIIXZZZZZZXI\n", - "-0.002 * IIIIIIXXIIIXZZZZZZXI\n", - "+0.049 * IIIIIYZYIIIIIIIIYZYI\n", - "+0.049 * IIIIIXZXIIIIIIIIYZYI\n", - "+0.049 * IIIIIYZYIIIIIIIIXZXI\n", - "+0.049 * IIIIIXZXIIIIIIIIXZXI\n", - "-0.002 * IIIIIYZYIIIIIIIYZZYI\n", - "-0.002 * IIIIIXZXIIIIIIIYZZYI\n", - "-0.002 * IIIIIYZYIIIIIIIXZZXI\n", - "-0.002 * IIIIIXZXIIIIIIIXZZXI\n", - "-0.002 * IIIIYZZYIIIIIIIIYZYI\n", - "-0.002 * IIIIXZZXIIIIIIIIYZYI\n", - "-0.002 * IIIIYZZYIIIIIIIIXZXI\n", - "-0.002 * IIIIXZZXIIIIIIIIXZXI\n", - "+0.004 * IIIIYZZYIIIIIIIYZZYI\n", - "+0.004 * IIIIXZZXIIIIIIIYZZYI\n", - "+0.004 * IIIIYZZYIIIIIIIXZZXI\n", - "+0.004 * IIIIXZZXIIIIIIIXZZXI\n", - "+0.000 * IIIYZZZYIIIIIIIIIIZI\n", - "+0.000 * IIIXZZZXIIIIIIIIIIZI\n", - "+0.004 * IIIYZZZYIIIIIIYZZZYI\n", - "+0.004 * IIIXZZZXIIIIIIYZZZYI\n", - "+0.004 * IIIYZZZYIIIIIIXZZZXI\n", - "+0.004 * IIIXZZZXIIIIIIXZZZXI\n", - "-0.001 * IIIYZZZYIIIIIYZZZZYI\n", - "-0.001 * IIIXZZZXIIIIIYZZZZYI\n", - "-0.001 * IIIYZZZYIIIIIXZZZZXI\n", - "-0.001 * IIIXZZZXIIIIIXZZZZXI\n", - "-0.004 * IIYZZZZYIIIIIIIIIIZI\n", - "-0.004 * IIXZZZZXIIIIIIIIIIZI\n", - "-0.001 * IIYZZZZYIIIIIIYZZZYI\n", - "-0.001 * IIXZZZZXIIIIIIYZZZYI\n", - "-0.001 * IIYZZZZYIIIIIIXZZZXI\n", - "-0.001 * IIXZZZZXIIIIIIXZZZXI\n", - "+0.029 * IIYZZZZYIIIIIYZZZZYI\n", - "+0.029 * IIXZZZZXIIIIIYZZZZYI\n", - "+0.029 * IIYZZZZYIIIIIXZZZZXI\n", - "+0.029 * IIXZZZZXIIIIIXZZZZXI\n", - "+0.008 * IYZZZZZYIIIIYZZZZZYI\n", - "+0.008 * IXZZZZZXIIIIYZZZZZYI\n", - "+0.008 * IYZZZZZYIIIIXZZZZZXI\n", - "+0.008 * IXZZZZZXIIIIXZZZZZXI\n", - "-0.002 * YZZZZZZYIIIIIIIIIYYI\n", - "-0.002 * XZZZZZZXIIIIIIIIIYYI\n", - "-0.002 * YZZZZZZYIIIIIIIIIXXI\n", - "-0.002 * XZZZZZZXIIIIIIIIIXXI\n", - "+0.005 * YZZZZZZYIIIYZZZZZZYI\n", - "+0.005 * XZZZZZZXIIIYZZZZZZYI\n", - "+0.005 * YZZZZZZYIIIXZZZZZZXI\n", - "+0.005 * XZZZZZZXIIIXZZZZZZXI\n", - "+0.111 * IIIIIIZIIIIIIIIIIIZI\n", - "-0.001 * IIIIIIZIIIIIIIYZZZYI\n", - "-0.001 * IIIIIIZIIIIIIIXZZZXI\n", - "+0.011 * IIIIIIZIIIIIIYZZZZYI\n", - "+0.011 * IIIIIIZIIIIIIXZZZZXI\n", - "-0.000 * IIIIIYYIIIIIYZZZZZYI\n", - "-0.000 * IIIIIXXIIIIIYZZZZZYI\n", - "-0.000 * IIIIIYYIIIIIXZZZZZXI\n", - "-0.000 * IIIIIXXIIIIIXZZZZZXI\n", - "+0.000 * IIIIYZYIIIIIYZZZZZYI\n", - "+0.000 * IIIIXZXIIIIIYZZZZZYI\n", - "+0.000 * IIIIYZYIIIIIXZZZZZXI\n", - "+0.000 * IIIIXZXIIIIIXZZZZZXI\n", - "+0.000 * IIIYZZYIIIIIIIIIIYYI\n", - "+0.000 * IIIXZZXIIIIIIIIIIYYI\n", - "+0.000 * IIIYZZYIIIIIIIIIIXXI\n", - "+0.000 * IIIXZZXIIIIIIIIIIXXI\n", - "+0.000 * IIIYZZYIIIIYZZZZZZYI\n", - "+0.000 * IIIXZZXIIIIYZZZZZZYI\n", - "+0.000 * IIIYZZYIIIIXZZZZZZXI\n", - "+0.000 * IIIXZZXIIIIXZZZZZZXI\n", - "-0.003 * IIYZZZYIIIIIIIIIIYYI\n", - "-0.003 * IIXZZZXIIIIIIIIIIYYI\n", - "-0.003 * IIYZZZYIIIIIIIIIIXXI\n", - "-0.003 * IIXZZZXIIIIIIIIIIXXI\n", - "-0.001 * IIYZZZYIIIIYZZZZZZYI\n", - "-0.001 * IIXZZZXIIIIYZZZZZZYI\n", - "-0.001 * IIYZZZYIIIIXZZZZZZXI\n", - "-0.001 * IIXZZZXIIIIXZZZZZZXI\n", - "-0.021 * IYZZZZYIIIIIIIIIYZYI\n", - "-0.021 * IXZZZZXIIIIIIIIIYZYI\n", - "-0.021 * IYZZZZYIIIIIIIIIXZXI\n", - "-0.021 * IXZZZZXIIIIIIIIIXZXI\n", - "+0.001 * IYZZZZYIIIIIIIIYZZYI\n", - "+0.001 * IXZZZZXIIIIIIIIYZZYI\n", - "+0.001 * IYZZZZYIIIIIIIIXZZXI\n", - "+0.001 * IXZZZZXIIIIIIIIXZZXI\n", - "+0.008 * YZZZZZYIIIIIIIIIIIZI\n", - "+0.008 * XZZZZZXIIIIIIIIIIIZI\n", - "+0.001 * YZZZZZYIIIIIIIYZZZYI\n", - "+0.001 * XZZZZZXIIIIIIIYZZZYI\n", - "+0.001 * YZZZZZYIIIIIIIXZZZXI\n", - "+0.001 * XZZZZZXIIIIIIIXZZZXI\n", - "-0.015 * YZZZZZYIIIIIIYZZZZYI\n", - "-0.015 * XZZZZZXIIIIIIYZZZZYI\n", - "-0.015 * YZZZZZYIIIIIIXZZZZXI\n", - "-0.015 * XZZZZZXIIIIIIXZZZZXI\n", - "+0.119 * IIIIIZIIIIIIIIIIIIZI\n", - "-0.001 * IIIIIZIIIIIIIIYZZZYI\n", - "-0.001 * IIIIIZIIIIIIIIXZZZXI\n", - "+0.021 * IIIIIZIIIIIIIYZZZZYI\n", - "+0.021 * IIIIIZIIIIIIIXZZZZXI\n", - "+0.000 * IIIIYYIIIIIIIIIIIIZI\n", - "+0.000 * IIIIXXIIIIIIIIIIIIZI\n", - "-0.003 * IIIIYYIIIIIIIIYZZZYI\n", - "-0.003 * IIIIXXIIIIIIIIYZZZYI\n", - "-0.003 * IIIIYYIIIIIIIIXZZZXI\n", - "-0.003 * IIIIXXIIIIIIIIXZZZXI\n", - "+0.000 * IIIIYYIIIIIIIYZZZZYI\n", - "+0.000 * IIIIXXIIIIIIIYZZZZYI\n", - "+0.000 * IIIIYYIIIIIIIXZZZZXI\n", - "+0.000 * IIIIXXIIIIIIIXZZZZXI\n", - "+0.001 * IIIYZYIIIIIIIIIIYZYI\n", - "+0.001 * IIIXZXIIIIIIIIIIYZYI\n", - "+0.001 * IIIYZYIIIIIIIIIIXZXI\n", - "+0.001 * IIIXZXIIIIIIIIIIXZXI\n", - "-0.003 * IIIYZYIIIIIIIIIYZZYI\n", - "-0.003 * IIIXZXIIIIIIIIIYZZYI\n", - "-0.003 * IIIYZYIIIIIIIIIXZZXI\n", - "-0.003 * IIIXZXIIIIIIIIIXZZXI\n", - "-0.041 * IIYZZYIIIIIIIIIIYZYI\n", - "-0.041 * IIXZZXIIIIIIIIIIYZYI\n", - "-0.041 * IIYZZYIIIIIIIIIIXZXI\n", - "-0.041 * IIXZZXIIIIIIIIIIXZXI\n", - "+0.001 * IIYZZYIIIIIIIIIYZZYI\n", - "+0.001 * IIXZZXIIIIIIIIIYZZYI\n", - "+0.001 * IIYZZYIIIIIIIIIXZZXI\n", - "+0.001 * IIXZZXIIIIIIIIIXZZXI\n", - "-0.001 * IYZZZYIIIIIIIIIIIYYI\n", - "-0.001 * IXZZZXIIIIIIIIIIIYYI\n", - "-0.001 * IYZZZYIIIIIIIIIIIXXI\n", - "-0.001 * IXZZZXIIIIIIIIIIIXXI\n", - "-0.003 * IYZZZYIIIIIYZZZZZZYI\n", - "-0.003 * IXZZZXIIIIIYZZZZZZYI\n", - "-0.003 * IYZZZYIIIIIXZZZZZZXI\n", - "-0.003 * IXZZZXIIIIIXZZZZZZXI\n", - "-0.004 * YZZZZYIIIIIIYZZZZZYI\n", - "-0.004 * XZZZZXIIIIIIYZZZZZYI\n", - "-0.004 * YZZZZYIIIIIIXZZZZZXI\n", - "-0.004 * XZZZZXIIIIIIXZZZZZXI\n", - "+0.112 * IIIIZIIIIIIIIIIIIIZI\n", - "-0.001 * IIIIZIIIIIIIIIYZZZYI\n", - "-0.001 * IIIIZIIIIIIIIIXZZZXI\n", - "+0.016 * IIIIZIIIIIIIIYZZZZYI\n", - "+0.016 * IIIIZIIIIIIIIXZZZZXI\n", - "-0.035 * IIIYYIIIIIIIIIIIYZYI\n", - "-0.035 * IIIXXIIIIIIIIIIIYZYI\n", - "-0.035 * IIIYYIIIIIIIIIIIXZXI\n", - "-0.035 * IIIXXIIIIIIIIIIIXZXI\n", - "+0.001 * IIIYYIIIIIIIIIIYZZYI\n", - "+0.001 * IIIXXIIIIIIIIIIYZZYI\n", - "+0.001 * IIIYYIIIIIIIIIIXZZXI\n", - "+0.001 * IIIXXIIIIIIIIIIXZZXI\n", - "-0.001 * IIYZYIIIIIIIIIIIYZYI\n", - "-0.001 * IIXZXIIIIIIIIIIIYZYI\n", - "-0.001 * IIYZYIIIIIIIIIIIXZXI\n", - "-0.001 * IIXZXIIIIIIIIIIIXZXI\n", - "-0.003 * IIYZYIIIIIIIIIIYZZYI\n", - "-0.003 * IIXZXIIIIIIIIIIYZZYI\n", - "-0.003 * IIYZYIIIIIIIIIIXZZXI\n", - "-0.003 * IIXZXIIIIIIIIIIXZZXI\n", - "+0.000 * IYZZYIIIIIIIIIIIIYYI\n", - "+0.000 * IXZZXIIIIIIIIIIIIYYI\n", - "+0.000 * IYZZYIIIIIIIIIIIIXXI\n", - "+0.000 * IXZZXIIIIIIIIIIIIXXI\n", - "+0.000 * IYZZYIIIIIIYZZZZZZYI\n", - "+0.000 * IXZZXIIIIIIYZZZZZZYI\n", - "+0.000 * IYZZYIIIIIIXZZZZZZXI\n", - "+0.000 * IXZZXIIIIIIXZZZZZZXI\n", - "+0.000 * YZZZYIIIIIIIYZZZZZYI\n", - "+0.000 * XZZZXIIIIIIIYZZZZZYI\n", - "+0.000 * YZZZYIIIIIIIXZZZZZXI\n", - "+0.000 * XZZZXIIIIIIIXZZZZZXI\n", - "+0.118 * IIIZIIIIIIIIIIIIIIZI\n", - "+0.001 * IIIZIIIIIIIIIIYZZZYI\n", - "+0.001 * IIIZIIIIIIIIIIXZZZXI\n", - "-0.009 * IIIZIIIIIIIIIYZZZZYI\n", - "-0.009 * IIIZIIIIIIIIIXZZZZXI\n", - "+0.000 * IIYYIIIIIIIIIIIIIIZI\n", - "+0.000 * IIXXIIIIIIIIIIIIIIZI\n", - "+0.001 * IIYYIIIIIIIIIIYZZZYI\n", - "+0.001 * IIXXIIIIIIIIIIYZZZYI\n", - "+0.001 * IIYYIIIIIIIIIIXZZZXI\n", - "+0.001 * IIXXIIIIIIIIIIXZZZXI\n", - "-0.000 * IIYYIIIIIIIIIYZZZZYI\n", - "-0.000 * IIXXIIIIIIIIIYZZZZYI\n", - "-0.000 * IIYYIIIIIIIIIXZZZZXI\n", - "-0.000 * IIXXIIIIIIIIIXZZZZXI\n", - "-0.000 * IYZYIIIIIIIIYZZZZZYI\n", - "-0.000 * IXZXIIIIIIIIYZZZZZYI\n", - "-0.000 * IYZYIIIIIIIIXZZZZZXI\n", - "-0.000 * IXZXIIIIIIIIXZZZZZXI\n", - "+0.000 * YZZYIIIIIIIIIIIIIYYI\n", - "+0.000 * XZZXIIIIIIIIIIIIIYYI\n", - "+0.000 * YZZYIIIIIIIIIIIIIXXI\n", - "+0.000 * XZZXIIIIIIIIIIIIIXXI\n", - "-0.000 * YZZYIIIIIIIYZZZZZZYI\n", - "-0.000 * XZZXIIIIIIIYZZZZZZYI\n", - "-0.000 * YZZYIIIIIIIXZZZZZZXI\n", - "-0.000 * XZZXIIIIIIIXZZZZZZXI\n", - "+0.126 * IIZIIIIIIIIIIIIIIIZI\n", - "+0.000 * IIZIIIIIIIIIIIYZZZYI\n", - "+0.000 * IIZIIIIIIIIIIIXZZZXI\n", - "-0.011 * IIZIIIIIIIIIIYZZZZYI\n", - "-0.011 * IIZIIIIIIIIIIXZZZZXI\n", - "+0.006 * IYYIIIIIIIIIYZZZZZYI\n", - "+0.006 * IXXIIIIIIIIIYZZZZZYI\n", - "+0.006 * IYYIIIIIIIIIXZZZZZXI\n", - "+0.006 * IXXIIIIIIIIIXZZZZZXI\n", - "-0.002 * YZYIIIIIIIIIIIIIIYYI\n", - "-0.002 * XZXIIIIIIIIIIIIIIYYI\n", - "-0.002 * YZYIIIIIIIIIIIIIIXXI\n", - "-0.002 * XZXIIIIIIIIIIIIIIXXI\n", - "+0.000 * YZYIIIIIIIIYZZZZZZYI\n", - "+0.000 * XZXIIIIIIIIYZZZZZZYI\n", - "+0.000 * YZYIIIIIIIIXZZZZZZXI\n", - "+0.000 * XZXIIIIIIIIXZZZZZZXI\n", - "+0.124 * IZIIIIIIIIIIIIIIIIZI\n", - "+0.000 * IZIIIIIIIIIIIIYZZZYI\n", - "+0.000 * IZIIIIIIIIIIIIXZZZXI\n", - "-0.006 * IZIIIIIIIIIIIYZZZZYI\n", - "-0.006 * IZIIIIIIIIIIIXZZZZXI\n", - "-0.037 * YYIIIIIIIIIIIIIIYZYI\n", - "-0.037 * XXIIIIIIIIIIIIIIYZYI\n", - "-0.037 * YYIIIIIIIIIIIIIIXZXI\n", - "-0.037 * XXIIIIIIIIIIIIIIXZXI\n", - "+0.001 * YYIIIIIIIIIIIIIYZZYI\n", - "+0.001 * XXIIIIIIIIIIIIIYZZYI\n", - "+0.001 * YYIIIIIIIIIIIIIXZZXI\n", - "+0.001 * XXIIIIIIIIIIIIIXZZXI\n", - "+0.132 * ZIIIIIIIIIIIIIIIIIZI\n", - "+0.001 * ZIIIIIIIIIIIIIYZZZYI\n", - "+0.001 * ZIIIIIIIIIIIIIXZZZXI\n", - "-0.011 * ZIIIIIIIIIIIIYZZZZYI\n", - "-0.011 * ZIIIIIIIIIIIIXZZZZXI\n", - "+0.114 * IIIIIIIIIIIIIIIIZZII\n", - "+0.114 * IIIIIIIIIIIIIIIZIZII\n", - "+0.108 * IIIIIIIIIIIIIIZIIZII\n", - "+0.108 * IIIIIIIIIIIIIZIIIZII\n", - "+0.102 * IIIIIIIIIIIIZIIIIZII\n", - "+0.110 * IIIIIIIIIIIZIIIIIZII\n", - "-0.006 * IIIIIIIIIIIYZZZZIYII\n", - "-0.006 * IIIIIIIIIIIXZZZZIXII\n", - "+0.000 * IIIIIIIIIIIIYZXIXYII\n", - "+0.000 * IIIIIIIIIIIIYZYIYYII\n", - "-0.000 * IIIIIIIIIIIIXZXIYYII\n", - "-0.000 * IIIIIIIIIIIIYZYIXXII\n", - "+0.000 * IIIIIIIIIIIIXZXIXXII\n", - "+0.000 * IIIIIIIIIIIIXZYIYXII\n", - "-0.020 * IIIIIIIIIIIIYXIIXYII\n", - "-0.018 * IIIIIIIIIIIIYYIIYYII\n", - "+0.001 * IIIIIIIIIIIIXXIIYYII\n", - "+0.001 * IIIIIIIIIIIIYYIIXXII\n", - "-0.018 * IIIIIIIIIIIIXXIIXXII\n", - "-0.020 * IIIIIIIIIIIIXYIIYXII\n", - "-0.006 * IIIIIIIIIIIYZZZIZYII\n", - "-0.006 * IIIIIIIIIIIXZZZIZXII\n", - "-0.020 * IIIIIIIIIIIIYZXXZYII\n", - "-0.018 * IIIIIIIIIIIIYZYYZYII\n", - "+0.001 * IIIIIIIIIIIIXZXYZYII\n", - "+0.001 * IIIIIIIIIIIIYZYXZXII\n", - "-0.018 * IIIIIIIIIIIIXZXXZXII\n", - "-0.020 * IIIIIIIIIIIIXZYYZXII\n", - "-0.000 * IIIIIIIIIIIIYXIXZYII\n", - "-0.000 * IIIIIIIIIIIIYYIYZYII\n", - "+0.000 * IIIIIIIIIIIIXXIYZYII\n", - "+0.000 * IIIIIIIIIIIIYYIXZXII\n", - "-0.000 * IIIIIIIIIIIIXXIXZXII\n", - "-0.000 * IIIIIIIIIIIIXYIYZXII\n", - "+0.008 * IIIIIIIIIIIYZZIZZYII\n", - "+0.008 * IIIIIIIIIIIXZZIZZXII\n", - "+0.008 * IIIIIIIIIIIYZIZZZYII\n", - "+0.008 * IIIIIIIIIIIXZIZZZXII\n", - "+0.025 * IIIIIIIIIIIYIZZZZYII\n", - "+0.025 * IIIIIIIIIIIXIZZZZXII\n", - "+0.117 * ZZZZZZZZZZZIIIIIIZII\n", - "+0.007 * ZZZZZZZZZZZYZZZZZYII\n", - "+0.007 * ZZZZZZZZZZZXZZZZZXII\n", - "+0.022 * ZZZZZZZZZZXIYZZZZYII\n", - "-0.022 * IIIIIIIIIIXIYZZZZYII\n", - "+0.022 * ZZZZZZZZZZXIXZZZZXII\n", - "-0.022 * IIIIIIIIIIXIXZZZZXII\n", - "-0.006 * ZZZZZZZZZXIIIIIIIZII\n", - "+0.006 * IIIIIIIIIXZIIIIIIZII\n", - "+0.012 * ZZZZZZZZZXIYZZZZZYII\n", - "-0.012 * IIIIIIIIIXZYZZZZZYII\n", - "+0.012 * ZZZZZZZZZXIXZZZZZXII\n", - "-0.012 * IIIIIIIIIXZXZZZZZXII\n", - "+0.000 * ZZZZZZZZXIIIIIIIYYII\n", - "-0.000 * IIIIIIIIXZZIIIIIYYII\n", - "+0.000 * ZZZZZZZZXIIIIIIIXXII\n", - "-0.000 * IIIIIIIIXZZIIIIIXXII\n", - "+0.004 * ZZZZZZZZXIIIIIIYZYII\n", - "-0.004 * IIIIIIIIXZZIIIIYZYII\n", - "+0.004 * ZZZZZZZZXIIIIIIXZXII\n", - "-0.004 * IIIIIIIIXZZIIIIXZXII\n", - "+0.004 * ZZZZZZZXIIIIIIIIYYII\n", - "-0.004 * IIIIIIIXZZZIIIIIYYII\n", - "+0.004 * ZZZZZZZXIIIIIIIIXXII\n", - "-0.004 * IIIIIIIXZZZIIIIIXXII\n", - "-0.000 * ZZZZZZZXIIIIIIIYZYII\n", - "+0.000 * IIIIIIIXZZZIIIIYZYII\n", - "-0.000 * ZZZZZZZXIIIIIIIXZXII\n", - "+0.000 * IIIIIIIXZZZIIIIXZXII\n", - "-0.005 * ZZZZZZXIIIIIYZZZZYII\n", - "+0.005 * IIIIIIXZZZZIYZZZZYII\n", - "-0.005 * ZZZZZZXIIIIIXZZZZXII\n", - "+0.005 * IIIIIIXZZZZIXZZZZXII\n", - "+0.000 * ZZZZZXIIIIIIIIYZZYII\n", - "-0.000 * IIIIIXZZZZZIIIYZZYII\n", - "+0.000 * ZZZZZXIIIIIIIIXZZXII\n", - "-0.000 * IIIIIXZZZZZIIIXZZXII\n", - "-0.006 * ZZZZZXIIIIIIIYZZZYII\n", - "+0.006 * IIIIIXZZZZZIIYZZZYII\n", - "-0.006 * ZZZZZXIIIIIIIXZZZXII\n", - "+0.006 * IIIIIXZZZZZIIXZZZXII\n", - "-0.006 * ZZZZXIIIIIIIIIYZZYII\n", - "+0.006 * IIIIXZZZZZZIIIYZZYII\n", - "-0.006 * ZZZZXIIIIIIIIIXZZXII\n", - "+0.006 * IIIIXZZZZZZIIIXZZXII\n", - "-0.000 * ZZZZXIIIIIIIIYZZZYII\n", - "+0.000 * IIIIXZZZZZZIIYZZZYII\n", - "-0.000 * ZZZZXIIIIIIIIXZZZXII\n", - "+0.000 * IIIIXZZZZZZIIXZZZXII\n", - "+0.000 * ZZZXIIIIIIIIIIIIYYII\n", - "-0.000 * IIIXZZZZZZZIIIIIYYII\n", - "+0.000 * ZZZXIIIIIIIIIIIIXXII\n", - "-0.000 * IIIXZZZZZZZIIIIIXXII\n", - "-0.005 * ZZZXIIIIIIIIIIIYZYII\n", - "+0.005 * IIIXZZZZZZZIIIIYZYII\n", - "-0.005 * ZZZXIIIIIIIIIIIXZXII\n", - "+0.005 * IIIXZZZZZZZIIIIXZXII\n", - "-0.005 * ZZXIIIIIIIIIIIIIYYII\n", - "+0.005 * IIXZZZZZZZZIIIIIYYII\n", - "-0.005 * ZZXIIIIIIIIIIIIIXXII\n", - "+0.005 * IIXZZZZZZZZIIIIIXXII\n", - "-0.000 * ZZXIIIIIIIIIIIIYZYII\n", - "+0.000 * IIXZZZZZZZZIIIIYZYII\n", - "-0.000 * ZZXIIIIIIIIIIIIXZXII\n", - "+0.000 * IIXZZZZZZZZIIIIXZXII\n", - "-0.008 * ZXIIIIIIIIIIIIIIIZII\n", - "+0.008 * IXZZZZZZZZZIIIIIIZII\n", - "+0.007 * ZXIIIIIIIIIYZZZZZYII\n", - "-0.007 * IXZZZZZZZZZYZZZZZYII\n", - "+0.007 * ZXIIIIIIIIIXZZZZZXII\n", - "-0.007 * IXZZZZZZZZZXZZZZZXII\n", - "+0.008 * XIIIIIIIIIIIYZZZZYII\n", - "-0.008 * XZZZZZZZZZZIYZZZZYII\n", - "+0.008 * XIIIIIIIIIIIXZZZZXII\n", - "-0.008 * XZZZZZZZZZZIXZZZZXII\n", - "+0.121 * IIIIIIIIIIZIIIIIIZII\n", - "+0.004 * IIIIIIIIIIZYZZZZZYII\n", - "+0.004 * IIIIIIIIIIZXZZZZZXII\n", - "+0.010 * IIIIIIIIIYYIYZZZZYII\n", - "+0.010 * IIIIIIIIIXXIYZZZZYII\n", - "+0.010 * IIIIIIIIIYYIXZZZZXII\n", - "+0.010 * IIIIIIIIIXXIXZZZZXII\n", - "+0.006 * IIIIIIIIYZYIIIYZZYII\n", - "+0.006 * IIIIIIIIXZXIIIYZZYII\n", - "+0.006 * IIIIIIIIYZYIIIXZZXII\n", - "+0.006 * IIIIIIIIXZXIIIXZZXII\n", - "+0.000 * IIIIIIIIYZYIIYZZZYII\n", - "+0.000 * IIIIIIIIXZXIIYZZZYII\n", - "+0.000 * IIIIIIIIYZYIIXZZZXII\n", - "+0.000 * IIIIIIIIXZXIIXZZZXII\n", - "-0.000 * IIIIIIIYZZYIIIYZZYII\n", - "-0.000 * IIIIIIIXZZXIIIYZZYII\n", - "-0.000 * IIIIIIIYZZYIIIXZZXII\n", - "-0.000 * IIIIIIIXZZXIIIXZZXII\n", - "+0.006 * IIIIIIIYZZYIIYZZZYII\n", - "+0.006 * IIIIIIIXZZXIIYZZZYII\n", - "+0.006 * IIIIIIIYZZYIIXZZZXII\n", - "+0.006 * IIIIIIIXZZXIIXZZZXII\n", - "+0.004 * IIIIIIYZZZYIIIIIIZII\n", - "+0.004 * IIIIIIXZZZXIIIIIIZII\n", - "-0.012 * IIIIIIYZZZYYZZZZZYII\n", - "-0.012 * IIIIIIXZZZXYZZZZZYII\n", - "-0.012 * IIIIIIYZZZYXZZZZZXII\n", - "-0.012 * IIIIIIXZZZXXZZZZZXII\n", - "-0.006 * IIIIIYZZZZYIIIIIYYII\n", - "-0.006 * IIIIIXZZZZXIIIIIYYII\n", - "-0.006 * IIIIIYZZZZYIIIIIXXII\n", - "-0.006 * IIIIIXZZZZXIIIIIXXII\n", - "-0.006 * IIIIYZZZZZYIIIIYZYII\n", - "-0.006 * IIIIXZZZZZXIIIIYZYII\n", - "-0.006 * IIIIYZZZZZYIIIIXZXII\n", - "-0.006 * IIIIXZZZZZXIIIIXZXII\n", - "-0.003 * IIIYZZZZZZYIIIYZZYII\n", - "-0.003 * IIIXZZZZZZXIIIYZZYII\n", - "-0.003 * IIIYZZZZZZYIIIXZZXII\n", - "-0.003 * IIIXZZZZZZXIIIXZZXII\n", - "-0.003 * IIYZZZZZZZYIIYZZZYII\n", - "-0.003 * IIXZZZZZZZXIIYZZZYII\n", - "-0.003 * IIYZZZZZZZYIIXZZZXII\n", - "-0.003 * IIXZZZZZZZXIIXZZZXII\n", - "+0.009 * IYZZZZZZZZYIYZZZZYII\n", - "+0.009 * IXZZZZZZZZXIYZZZZYII\n", - "+0.009 * IYZZZZZZZZYIXZZZZXII\n", - "+0.009 * IXZZZZZZZZXIXZZZZXII\n", - "-0.004 * YZZZZZZZZZYIIIIIIZII\n", - "-0.004 * XZZZZZZZZZXIIIIIIZII\n", - "+0.011 * YZZZZZZZZZYYZZZZZYII\n", - "+0.011 * XZZZZZZZZZXYZZZZZYII\n", - "+0.011 * YZZZZZZZZZYXZZZZZXII\n", - "+0.011 * XZZZZZZZZZXXZZZZZXII\n", - "+0.128 * IIIIIIIIIZIIIIIIIZII\n", - "-0.006 * IIIIIIIIIZIYZZZZZYII\n", - "-0.006 * IIIIIIIIIZIXZZZZZXII\n", - "+0.000 * IIIIIIIIYYIIIIIIYYII\n", - "+0.000 * IIIIIIIIXXIIIIIIYYII\n", - "+0.000 * IIIIIIIIYYIIIIIIXXII\n", - "+0.000 * IIIIIIIIXXIIIIIIXXII\n", - "+0.006 * IIIIIIIIYYIIIIIYZYII\n", - "+0.006 * IIIIIIIIXXIIIIIYZYII\n", - "+0.006 * IIIIIIIIYYIIIIIXZXII\n", - "+0.006 * IIIIIIIIXXIIIIIXZXII\n", - "+0.006 * IIIIIIIYZYIIIIIIYYII\n", - "+0.006 * IIIIIIIXZXIIIIIIYYII\n", - "+0.006 * IIIIIIIYZYIIIIIIXXII\n", - "+0.006 * IIIIIIIXZXIIIIIIXXII\n", - "-0.000 * IIIIIIIYZYIIIIIYZYII\n", - "-0.000 * IIIIIIIXZXIIIIIYZYII\n", - "-0.000 * IIIIIIIYZYIIIIIXZXII\n", - "-0.000 * IIIIIIIXZXIIIIIXZXII\n", - "-0.031 * IIIIIIYZZYIIYZZZZYII\n", - "-0.031 * IIIIIIXZZXIIYZZZZYII\n", - "-0.031 * IIIIIIYZZYIIXZZZZXII\n", - "-0.031 * IIIIIIXZZXIIXZZZZXII\n", - "+0.000 * IIIIIYZZZYIIIIYZZYII\n", - "+0.000 * IIIIIXZZZXIIIIYZZYII\n", - "+0.000 * IIIIIYZZZYIIIIXZZXII\n", - "+0.000 * IIIIIXZZZXIIIIXZZXII\n", - "-0.006 * IIIIIYZZZYIIIYZZZYII\n", - "-0.006 * IIIIIXZZZXIIIYZZZYII\n", - "-0.006 * IIIIIYZZZYIIIXZZZXII\n", - "-0.006 * IIIIIXZZZXIIIXZZZXII\n", - "-0.006 * IIIIYZZZZYIIIIYZZYII\n", - "-0.006 * IIIIXZZZZXIIIIYZZYII\n", - "-0.006 * IIIIYZZZZYIIIIXZZXII\n", - "-0.006 * IIIIXZZZZXIIIIXZZXII\n", - "-0.000 * IIIIYZZZZYIIIYZZZYII\n", - "-0.000 * IIIIXZZZZXIIIYZZZYII\n", - "-0.000 * IIIIYZZZZYIIIXZZZXII\n", - "-0.000 * IIIIXZZZZXIIIXZZZXII\n", - "+0.000 * IIIYZZZZZYIIIIIIYYII\n", - "+0.000 * IIIXZZZZZXIIIIIIYYII\n", - "+0.000 * IIIYZZZZZYIIIIIIXXII\n", - "+0.000 * IIIXZZZZZXIIIIIIXXII\n", - "-0.006 * IIIYZZZZZYIIIIIYZYII\n", - "-0.006 * IIIXZZZZZXIIIIIYZYII\n", - "-0.006 * IIIYZZZZZYIIIIIXZXII\n", - "-0.006 * IIIXZZZZZXIIIIIXZXII\n", - "-0.006 * IIYZZZZZZYIIIIIIYYII\n", - "-0.006 * IIXZZZZZZXIIIIIIYYII\n", - "-0.006 * IIYZZZZZZYIIIIIIXXII\n", - "-0.006 * IIXZZZZZZXIIIIIIXXII\n", - "-0.000 * IIYZZZZZZYIIIIIYZYII\n", - "-0.000 * IIXZZZZZZXIIIIIYZYII\n", - "-0.000 * IIYZZZZZZYIIIIIXZXII\n", - "-0.000 * IIXZZZZZZXIIIIIXZXII\n", - "+0.013 * IYZZZZZZZYIIIIIIIZII\n", - "+0.013 * IXZZZZZZZXIIIIIIIZII\n", - "-0.014 * IYZZZZZZZYIYZZZZZYII\n", - "-0.014 * IXZZZZZZZXIYZZZZZYII\n", - "-0.014 * IYZZZZZZZYIXZZZZZXII\n", - "-0.014 * IXZZZZZZZXIXZZZZZXII\n", - "-0.008 * YZZZZZZZZYIIYZZZZYII\n", - "-0.008 * XZZZZZZZZXIIYZZZZYII\n", - "-0.008 * YZZZZZZZZYIIXZZZZXII\n", - "-0.008 * XZZZZZZZZXIIXZZZZXII\n", - "+0.111 * IIIIIIIIZIIIIIIIIZII\n", - "+0.008 * IIIIIIIIZIIYZZZZZYII\n", - "+0.008 * IIIIIIIIZIIXZZZZZXII\n", - "-0.003 * IIIIIIYZYIIIIIYZZYII\n", - "-0.003 * IIIIIIXZXIIIIIYZZYII\n", - "-0.003 * IIIIIIYZYIIIIIXZZXII\n", - "-0.003 * IIIIIIXZXIIIIIXZZXII\n", - "-0.000 * IIIIIIYZYIIIIYZZZYII\n", - "-0.000 * IIIIIIXZXIIIIYZZZYII\n", - "-0.000 * IIIIIIYZYIIIIXZZZXII\n", - "-0.000 * IIIIIIXZXIIIIXZZZXII\n", - "-0.001 * IIIIIYZZYIIIYZZZZYII\n", - "-0.001 * IIIIIXZZXIIIYZZZZYII\n", - "-0.001 * IIIIIYZZYIIIXZZZZXII\n", - "-0.001 * IIIIIXZZXIIIXZZZZXII\n", - "-0.021 * IIIIYZZZYIIIYZZZZYII\n", - "-0.021 * IIIIXZZZXIIIYZZZZYII\n", - "-0.021 * IIIIYZZZYIIIXZZZZXII\n", - "-0.021 * IIIIXZZZXIIIXZZZZXII\n", - "+0.011 * IIIYZZZZYIIIIIIIIZII\n", - "+0.011 * IIIXZZZZXIIIIIIIIZII\n", - "-0.015 * IIIYZZZZYIIYZZZZZYII\n", - "-0.015 * IIIXZZZZXIIYZZZZZYII\n", - "-0.015 * IIIYZZZZYIIXZZZZZXII\n", - "-0.015 * IIIXZZZZXIIXZZZZZXII\n", - "+0.001 * IIYZZZZZYIIIIIIIIZII\n", - "+0.001 * IIXZZZZZXIIIIIIIIZII\n", - "-0.001 * IIYZZZZZYIIYZZZZZYII\n", - "-0.001 * IIXZZZZZXIIYZZZZZYII\n", - "-0.001 * IIYZZZZZYIIXZZZZZXII\n", - "-0.001 * IIXZZZZZXIIXZZZZZXII\n", - "-0.000 * IYZZZZZZYIIIIIIIYYII\n", - "-0.000 * IXZZZZZZXIIIIIIIYYII\n", - "-0.000 * IYZZZZZZYIIIIIIIXXII\n", - "-0.000 * IXZZZZZZXIIIIIIIXXII\n", - "-0.000 * IYZZZZZZYIIIIIIYZYII\n", - "-0.000 * IXZZZZZZXIIIIIIYZYII\n", - "-0.000 * IYZZZZZZYIIIIIIXZXII\n", - "-0.000 * IXZZZZZZXIIIIIIXZXII\n", - "-0.001 * YZZZZZZZYIIIIIYZZYII\n", - "-0.001 * XZZZZZZZXIIIIIYZZYII\n", - "-0.001 * YZZZZZZZYIIIIIXZZXII\n", - "-0.001 * XZZZZZZZXIIIIIXZZXII\n", - "-0.000 * YZZZZZZZYIIIIYZZZYII\n", - "-0.000 * XZZZZZZZXIIIIYZZZYII\n", - "-0.000 * YZZZZZZZYIIIIXZZZXII\n", - "-0.000 * XZZZZZZZXIIIIXZZZXII\n", - "+0.111 * IIIIIIIZIIIIIIIIIZII\n", - "+0.008 * IIIIIIIZIIIYZZZZZYII\n", - "+0.008 * IIIIIIIZIIIXZZZZZXII\n", - "+0.000 * IIIIIIYYIIIIIIYZZYII\n", - "+0.000 * IIIIIIXXIIIIIIYZZYII\n", - "+0.000 * IIIIIIYYIIIIIIXZZXII\n", - "+0.000 * IIIIIIXXIIIIIIXZZXII\n", - "-0.003 * IIIIIIYYIIIIIYZZZYII\n", - "-0.003 * IIIIIIXXIIIIIYZZZYII\n", - "-0.003 * IIIIIIYYIIIIIXZZZXII\n", - "-0.003 * IIIIIIXXIIIIIXZZZXII\n", - "-0.021 * IIIIIYZYIIIIYZZZZYII\n", - "-0.021 * IIIIIXZXIIIIYZZZZYII\n", - "-0.021 * IIIIIYZYIIIIXZZZZXII\n", - "-0.021 * IIIIIXZXIIIIXZZZZXII\n", - "+0.001 * IIIIYZZYIIIIYZZZZYII\n", - "+0.001 * IIIIXZZXIIIIYZZZZYII\n", - "+0.001 * IIIIYZZYIIIIXZZZZXII\n", - "+0.001 * IIIIXZZXIIIIXZZZZXII\n", - "-0.001 * IIIYZZZYIIIIIIIIIZII\n", - "-0.001 * IIIXZZZXIIIIIIIIIZII\n", - "+0.001 * IIIYZZZYIIIYZZZZZYII\n", - "+0.001 * IIIXZZZXIIIYZZZZZYII\n", - "+0.001 * IIIYZZZYIIIXZZZZZXII\n", - "+0.001 * IIIXZZZXIIIXZZZZZXII\n", - "+0.011 * IIYZZZZYIIIIIIIIIZII\n", - "+0.011 * IIXZZZZXIIIIIIIIIZII\n", - "-0.015 * IIYZZZZYIIIYZZZZZYII\n", - "-0.015 * IIXZZZZXIIIYZZZZZYII\n", - "-0.015 * IIYZZZZYIIIXZZZZZXII\n", - "-0.015 * IIXZZZZXIIIXZZZZZXII\n", - "-0.000 * IYZZZZZYIIIIIIIIYYII\n", - "-0.000 * IXZZZZZXIIIIIIIIYYII\n", - "-0.000 * IYZZZZZYIIIIIIIIXXII\n", - "-0.000 * IXZZZZZXIIIIIIIIXXII\n", - "+0.000 * IYZZZZZYIIIIIIIYZYII\n", - "+0.000 * IXZZZZZXIIIIIIIYZYII\n", - "+0.000 * IYZZZZZYIIIIIIIXZXII\n", - "+0.000 * IXZZZZZXIIIIIIIXZXII\n", - "+0.000 * YZZZZZZYIIIIIIYZZYII\n", - "+0.000 * XZZZZZZXIIIIIIYZZYII\n", - "+0.000 * YZZZZZZYIIIIIIXZZXII\n", - "+0.000 * XZZZZZZXIIIIIIXZZXII\n", - "-0.001 * YZZZZZZYIIIIIYZZZYII\n", - "-0.001 * XZZZZZZXIIIIIYZZZYII\n", - "-0.001 * YZZZZZZYIIIIIXZZZXII\n", - "-0.001 * XZZZZZZXIIIIIXZZZXII\n", - "+0.133 * IIIIIIZIIIIIIIIIIZII\n", - "-0.007 * IIIIIIZIIIIYZZZZZYII\n", - "-0.007 * IIIIIIZIIIIXZZZZZXII\n", - "+0.008 * IIIIIYYIIIIIIIIIYYII\n", - "+0.008 * IIIIIXXIIIIIIIIIYYII\n", - "+0.008 * IIIIIYYIIIIIIIIIXXII\n", - "+0.008 * IIIIIXXIIIIIIIIIXXII\n", - "+0.008 * IIIIYZYIIIIIIIIYZYII\n", - "+0.008 * IIIIXZXIIIIIIIIYZYII\n", - "+0.008 * IIIIYZYIIIIIIIIXZXII\n", - "+0.008 * IIIIXZXIIIIIIIIXZXII\n", - "+0.006 * IIIYZZYIIIIIIIYZZYII\n", - "+0.006 * IIIXZZXIIIIIIIYZZYII\n", - "+0.006 * IIIYZZYIIIIIIIXZZXII\n", - "+0.006 * IIIXZZXIIIIIIIXZZXII\n", - "+0.006 * IIYZZZYIIIIIIYZZZYII\n", - "+0.006 * IIXZZZXIIIIIIYZZZYII\n", - "+0.006 * IIYZZZYIIIIIIXZZZXII\n", - "+0.006 * IIXZZZXIIIIIIXZZZXII\n", - "+0.017 * IYZZZZYIIIIIYZZZZYII\n", - "+0.017 * IXZZZZXIIIIIYZZZZYII\n", - "+0.017 * IYZZZZYIIIIIXZZZZXII\n", - "+0.017 * IXZZZZXIIIIIXZZZZXII\n", - "-0.007 * YZZZZZYIIIIIIIIIIZII\n", - "-0.007 * XZZZZZXIIIIIIIIIIZII\n", - "+0.016 * YZZZZZYIIIIYZZZZZYII\n", - "+0.016 * XZZZZZXIIIIYZZZZZYII\n", - "+0.016 * YZZZZZYIIIIXZZZZZXII\n", - "+0.016 * XZZZZZXIIIIXZZZZZXII\n", - "+0.122 * IIIIIZIIIIIIIIIIIZII\n", - "-0.006 * IIIIIZIIIIIYZZZZZYII\n", - "-0.006 * IIIIIZIIIIIXZZZZZXII\n", - "-0.000 * IIIYZYIIIIIIYZZZZYII\n", - "-0.000 * IIIXZXIIIIIIYZZZZYII\n", - "-0.000 * IIIYZYIIIIIIXZZZZXII\n", - "-0.000 * IIIXZXIIIIIIXZZZZXII\n", - "+0.019 * IIYZZYIIIIIIYZZZZYII\n", - "+0.019 * IIXZZXIIIIIIYZZZZYII\n", - "+0.019 * IIYZZYIIIIIIXZZZZXII\n", - "+0.019 * IIXZZXIIIIIIXZZZZXII\n", - "+0.000 * IYZZZYIIIIIIIIYZZYII\n", - "+0.000 * IXZZZXIIIIIIIIYZZYII\n", - "+0.000 * IYZZZYIIIIIIIIXZZXII\n", - "+0.000 * IXZZZXIIIIIIIIXZZXII\n", - "-0.000 * IYZZZYIIIIIIIYZZZYII\n", - "-0.000 * IXZZZXIIIIIIIYZZZYII\n", - "-0.000 * IYZZZYIIIIIIIXZZZXII\n", - "-0.000 * IXZZZXIIIIIIIXZZZXII\n", - "-0.001 * YZZZZYIIIIIIIIIIYYII\n", - "-0.001 * XZZZZXIIIIIIIIIIYYII\n", - "-0.001 * YZZZZYIIIIIIIIIIXXII\n", - "-0.001 * XZZZZXIIIIIIIIIIXXII\n", - "+0.122 * IIIIZIIIIIIIIIIIIZII\n", - "-0.006 * IIIIZIIIIIIYZZZZZYII\n", - "-0.006 * IIIIZIIIIIIXZZZZZXII\n", - "+0.019 * IIIYYIIIIIIIYZZZZYII\n", - "+0.019 * IIIXXIIIIIIIYZZZZYII\n", - "+0.019 * IIIYYIIIIIIIXZZZZXII\n", - "+0.019 * IIIXXIIIIIIIXZZZZXII\n", - "+0.000 * IIYZYIIIIIIIYZZZZYII\n", - "+0.000 * IIXZXIIIIIIIYZZZZYII\n", - "+0.000 * IIYZYIIIIIIIXZZZZXII\n", - "+0.000 * IIXZXIIIIIIIXZZZZXII\n", - "-0.000 * IYZZYIIIIIIIIIYZZYII\n", - "-0.000 * IXZZXIIIIIIIIIYZZYII\n", - "-0.000 * IYZZYIIIIIIIIIXZZXII\n", - "-0.000 * IXZZXIIIIIIIIIXZZXII\n", - "-0.000 * IYZZYIIIIIIIIYZZZYII\n", - "-0.000 * IXZZXIIIIIIIIYZZZYII\n", - "-0.000 * IYZZYIIIIIIIIXZZZXII\n", - "-0.000 * IXZZXIIIIIIIIXZZZXII\n", - "-0.001 * YZZZYIIIIIIIIIIYZYII\n", - "-0.001 * XZZZXIIIIIIIIIIYZYII\n", - "-0.001 * YZZZYIIIIIIIIIIXZXII\n", - "-0.001 * XZZZXIIIIIIIIIIXZXII\n", - "+0.113 * IIIZIIIIIIIIIIIIIZII\n", - "+0.011 * IIIZIIIIIIIYZZZZZYII\n", - "+0.011 * IIIZIIIIIIIXZZZZZXII\n", - "-0.000 * IYZYIIIIIIIIIIIIYYII\n", - "-0.000 * IXZXIIIIIIIIIIIIYYII\n", - "-0.000 * IYZYIIIIIIIIIIIIXXII\n", - "-0.000 * IXZXIIIIIIIIIIIIXXII\n", - "+0.001 * IYZYIIIIIIIIIIIYZYII\n", - "+0.001 * IXZXIIIIIIIIIIIYZYII\n", - "+0.001 * IYZYIIIIIIIIIIIXZXII\n", - "+0.001 * IXZXIIIIIIIIIIIXZXII\n", - "-0.003 * YZZYIIIIIIIIIIYZZYII\n", - "-0.003 * XZZXIIIIIIIIIIYZZYII\n", - "-0.003 * YZZYIIIIIIIIIIXZZXII\n", - "-0.003 * XZZXIIIIIIIIIIXZZXII\n", - "+0.113 * IIZIIIIIIIIIIIIIIZII\n", - "+0.011 * IIZIIIIIIIIYZZZZZYII\n", - "+0.011 * IIZIIIIIIIIXZZZZZXII\n", - "+0.001 * IYYIIIIIIIIIIIIIYYII\n", - "+0.001 * IXXIIIIIIIIIIIIIYYII\n", - "+0.001 * IYYIIIIIIIIIIIIIXXII\n", - "+0.001 * IXXIIIIIIIIIIIIIXXII\n", - "+0.000 * IYYIIIIIIIIIIIIYZYII\n", - "+0.000 * IXXIIIIIIIIIIIIYZYII\n", - "+0.000 * IYYIIIIIIIIIIIIXZXII\n", - "+0.000 * IXXIIIIIIIIIIIIXZXII\n", - "-0.003 * YZYIIIIIIIIIIYZZZYII\n", - "-0.003 * XZXIIIIIIIIIIYZZZYII\n", - "-0.003 * YZYIIIIIIIIIIXZZZXII\n", - "-0.003 * XZXIIIIIIIIIIXZZZXII\n", - "+0.118 * IZIIIIIIIIIIIIIIIZII\n", - "+0.006 * IZIIIIIIIIIYZZZZZYII\n", - "+0.006 * IZIIIIIIIIIXZZZZZXII\n", - "+0.019 * YYIIIIIIIIIIYZZZZYII\n", - "+0.019 * XXIIIIIIIIIIYZZZZYII\n", - "+0.019 * YYIIIIIIIIIIXZZZZXII\n", - "+0.019 * XXIIIIIIIIIIXZZZZXII\n", - "+0.126 * ZIIIIIIIIIIIIIIIIZII\n", - "+0.016 * ZIIIIIIIIIIYZZZZZYII\n", - "+0.016 * ZIIIIIIIIIIXZZZZZXII\n", - "+0.120 * IIIIIIIIIIIIIIIZZIII\n", - "+0.109 * IIIIIIIIIIIIIIZIZIII\n", - "-0.000 * IIIIIIIIIIIIIYYIZIII\n", - "-0.000 * IIIIIIIIIIIIIXXIZIII\n", - "+0.081 * IIIIIIIIIIIIIZIIZIII\n", - "+0.115 * IIIIIIIIIIIIZIIIZIII\n", - "+0.119 * IIIIIIIIIIIZIIIIZIII\n", - "-0.000 * IIIIIIIIIIIIIIZYYIII\n", - "-0.000 * IIIIIIIIIIIIIIZXXIII\n", - "-0.029 * IIIIIIIIIIIIIYXXYIII\n", - "-0.028 * IIIIIIIIIIIIIYYYYIII\n", - "+0.001 * IIIIIIIIIIIIIXXYYIII\n", - "+0.001 * IIIIIIIIIIIIIYYXXIII\n", - "-0.028 * IIIIIIIIIIIIIXXXXIII\n", - "-0.029 * IIIIIIIIIIIIIXYYXIII\n", - "+0.000 * IIIIIIIIIIIIIZIYYIII\n", - "+0.000 * IIIIIIIIIIIIIZIXXIII\n", - "-0.000 * IIIIIIIIIIIYXIXZYIII\n", - "-0.000 * IIIIIIIIIIIYYIYZYIII\n", - "-0.000 * IIIIIIIIIIIXXIYZYIII\n", - "-0.000 * IIIIIIIIIIIYYIXZXIII\n", - "-0.000 * IIIIIIIIIIIXXIXZXIII\n", - "-0.000 * IIIIIIIIIIIXYIYZXIII\n", - "+0.000 * IIIIIIIIIIIYXXZZYIII\n", - "+0.026 * IIIIIIIIIIIYYYZZYIII\n", - "+0.026 * IIIIIIIIIIIXXYZZYIII\n", - "+0.026 * IIIIIIIIIIIYYXZZXIII\n", - "+0.026 * IIIIIIIIIIIXXXZZXIII\n", - "+0.000 * IIIIIIIIIIIXYYZZXIII\n", - "+0.122 * ZZZZZZZZZZZIIIIIZIII\n", - "-0.001 * ZZZZZZZZZZXIIIYZYIII\n", - "+0.001 * IIIIIIIIIIXIIIYZYIII\n", - "-0.001 * ZZZZZZZZZZXIIIXZXIII\n", - "+0.001 * IIIIIIIIIIXIIIXZXIII\n", - "+0.038 * ZZZZZZZZZZXIIYZZYIII\n", - "-0.038 * IIIIIIIIIIXIIYZZYIII\n", - "+0.038 * ZZZZZZZZZZXIIXZZXIII\n", - "-0.038 * IIIIIIIIIIXIIXZZXIII\n", - "-0.007 * ZZZZZZZZZXIIIIIIZIII\n", - "+0.007 * IIIIIIIIIXZIIIIIZIII\n", - "-0.000 * ZZZZZZZZXIIYZZZZYIII\n", - "+0.000 * IIIIIIIIXZZYZZZZYIII\n", - "-0.000 * ZZZZZZZZXIIXZZZZXIII\n", - "+0.000 * IIIIIIIIXZZXZZZZXIII\n", - "-0.005 * ZZZZZZZXIIIYZZZZYIII\n", - "+0.005 * IIIIIIIXZZZYZZZZYIII\n", - "-0.005 * ZZZZZZZXIIIXZZZZXIII\n", - "+0.005 * IIIIIIIXZZZXZZZZXIII\n", - "+0.000 * ZZZZZZXIIIIIIIYZYIII\n", - "-0.000 * IIIIIIXZZZZIIIYZYIII\n", - "+0.000 * ZZZZZZXIIIIIIIXZXIII\n", - "-0.000 * IIIIIIXZZZZIIIXZXIII\n", - "-0.007 * ZZZZZZXIIIIIIYZZYIII\n", - "+0.007 * IIIIIIXZZZZIIYZZYIII\n", - "-0.007 * ZZZZZZXIIIIIIXZZXIII\n", - "+0.007 * IIIIIIXZZZZIIXZZXIII\n", - "+0.006 * ZZZZZXIIIIIIYZZZYIII\n", - "-0.006 * IIIIIXZZZZZIYZZZYIII\n", - "+0.006 * ZZZZZXIIIIIIXZZZXIII\n", - "-0.006 * IIIIIXZZZZZIXZZZXIII\n", - "-0.000 * ZZZXIIIIIIIYZZZZYIII\n", - "+0.000 * IIIXZZZZZZZYZZZZYIII\n", - "-0.000 * ZZZXIIIIIIIXZZZZXIII\n", - "+0.000 * IIIXZZZZZZZXZZZZXIII\n", - "+0.004 * ZZXIIIIIIIIYZZZZYIII\n", - "-0.004 * IIXZZZZZZZZYZZZZYIII\n", - "+0.004 * ZZXIIIIIIIIXZZZZXIII\n", - "-0.004 * IIXZZZZZZZZXZZZZXIII\n", - "-0.017 * ZXIIIIIIIIIIIIIIZIII\n", - "+0.017 * IXZZZZZZZZZIIIIIZIII\n", - "-0.000 * XIIIIIIIIIIIIIYZYIII\n", - "+0.000 * XZZZZZZZZZZIIIYZYIII\n", - "-0.000 * XIIIIIIIIIIIIIXZXIII\n", - "+0.000 * XZZZZZZZZZZIIIXZXIII\n", - "+0.013 * XIIIIIIIIIIIIYZZYIII\n", - "-0.013 * XZZZZZZZZZZIIYZZYIII\n", - "+0.013 * XIIIIIIIIIIIIXZZXIII\n", - "-0.013 * XZZZZZZZZZZIIXZZXIII\n", - "+0.126 * IIIIIIIIIIZIIIIIZIII\n", - "-0.000 * IIIIIIIIIYYIIIYZYIII\n", - "-0.000 * IIIIIIIIIXXIIIYZYIII\n", - "-0.000 * IIIIIIIIIYYIIIXZXIII\n", - "-0.000 * IIIIIIIIIXXIIIXZXIII\n", - "+0.016 * IIIIIIIIIYYIIYZZYIII\n", - "+0.016 * IIIIIIIIIXXIIYZZYIII\n", - "+0.016 * IIIIIIIIIYYIIXZZXIII\n", - "+0.016 * IIIIIIIIIXXIIXZZXIII\n", - "-0.000 * IIIIIIIIYZYIYZZZYIII\n", - "-0.000 * IIIIIIIIXZXIYZZZYIII\n", - "-0.000 * IIIIIIIIYZYIXZZZXIII\n", - "-0.000 * IIIIIIIIXZXIXZZZXIII\n", - "-0.005 * IIIIIIIYZZYIYZZZYIII\n", - "-0.005 * IIIIIIIXZZXIYZZZYIII\n", - "-0.005 * IIIIIIIYZZYIXZZZXIII\n", - "-0.005 * IIIIIIIXZZXIXZZZXIII\n", - "+0.001 * IIIIIIYZZZYIIIIIZIII\n", - "+0.001 * IIIIIIXZZZXIIIIIZIII\n", - "+0.007 * IIIIIYZZZZYYZZZZYIII\n", - "+0.007 * IIIIIXZZZZXYZZZZYIII\n", - "+0.007 * IIIIIYZZZZYXZZZZXIII\n", - "+0.007 * IIIIIXZZZZXXZZZZXIII\n", - "-0.000 * IIIYZZZZZZYIYZZZYIII\n", - "-0.000 * IIIXZZZZZZXIYZZZYIII\n", - "-0.000 * IIIYZZZZZZYIXZZZXIII\n", - "-0.000 * IIIXZZZZZZXIXZZZXIII\n", - "+0.003 * IIYZZZZZZZYIYZZZYIII\n", - "+0.003 * IIXZZZZZZZXIYZZZYIII\n", - "+0.003 * IIYZZZZZZZYIXZZZXIII\n", - "+0.003 * IIXZZZZZZZXIXZZZXIII\n", - "-0.000 * IYZZZZZZZZYIIIYZYIII\n", - "-0.000 * IXZZZZZZZZXIIIYZYIII\n", - "-0.000 * IYZZZZZZZZYIIIXZXIII\n", - "-0.000 * IXZZZZZZZZXIIIXZXIII\n", - "+0.015 * IYZZZZZZZZYIIYZZYIII\n", - "+0.015 * IXZZZZZZZZXIIYZZYIII\n", - "+0.015 * IYZZZZZZZZYIIXZZXIII\n", - "+0.015 * IXZZZZZZZZXIIXZZXIII\n", - "-0.015 * YZZZZZZZZZYIIIIIZIII\n", - "-0.015 * XZZZZZZZZZXIIIIIZIII\n", - "+0.118 * IIIIIIIIIZIIIIIIZIII\n", - "-0.000 * IIIIIIIIYYIYZZZZYIII\n", - "-0.000 * IIIIIIIIXXIYZZZZYIII\n", - "-0.000 * IIIIIIIIYYIXZZZZXIII\n", - "-0.000 * IIIIIIIIXXIXZZZZXIII\n", - "-0.001 * IIIIIIIYZYIYZZZZYIII\n", - "-0.001 * IIIIIIIXZXIYZZZZYIII\n", - "-0.001 * IIIIIIIYZYIXZZZZXIII\n", - "-0.001 * IIIIIIIXZXIXZZZZXIII\n", - "+0.001 * IIIIIIYZZYIIIIYZYIII\n", - "+0.001 * IIIIIIXZZXIIIIYZYIII\n", - "+0.001 * IIIIIIYZZYIIIIXZXIII\n", - "+0.001 * IIIIIIXZZXIIIIXZXIII\n", - "-0.042 * IIIIIIYZZYIIIYZZYIII\n", - "-0.042 * IIIIIIXZZXIIIYZZYIII\n", - "-0.042 * IIIIIIYZZYIIIXZZXIII\n", - "-0.042 * IIIIIIXZZXIIIXZZXIII\n", - "+0.001 * IIIIIYZZZYIIYZZZYIII\n", - "+0.001 * IIIIIXZZZXIIYZZZYIII\n", - "+0.001 * IIIIIYZZZYIIXZZZXIII\n", - "+0.001 * IIIIIXZZZXIIXZZZXIII\n", - "-0.000 * IIIYZZZZZYIYZZZZYIII\n", - "-0.000 * IIIXZZZZZXIYZZZZYIII\n", - "-0.000 * IIIYZZZZZYIXZZZZXIII\n", - "-0.000 * IIIXZZZZZXIXZZZZXIII\n", - "+0.002 * IIYZZZZZZYIYZZZZYIII\n", - "+0.002 * IIXZZZZZZXIYZZZZYIII\n", - "+0.002 * IIYZZZZZZYIXZZZZXIII\n", - "+0.002 * IIXZZZZZZXIXZZZZXIII\n", - "+0.008 * IYZZZZZZZYIIIIIIZIII\n", - "+0.008 * IXZZZZZZZXIIIIIIZIII\n", - "+0.000 * YZZZZZZZZYIIIIYZYIII\n", - "+0.000 * XZZZZZZZZXIIIIYZYIII\n", - "+0.000 * YZZZZZZZZYIIIIXZXIII\n", - "+0.000 * XZZZZZZZZXIIIIXZXIII\n", - "-0.006 * YZZZZZZZZYIIIYZZYIII\n", - "-0.006 * XZZZZZZZZXIIIYZZYIII\n", - "-0.006 * YZZZZZZZZYIIIXZZXIII\n", - "-0.006 * XZZZZZZZZXIIIXZZXIII\n", - "+0.112 * IIIIIIIIZIIIIIIIZIII\n", - "-0.000 * IIIIIIIIZIIIIIIYYIII\n", - "-0.000 * IIIIIIIIZIIIIIIXXIII\n", - "-0.000 * IIIIIIIYYIIIIIIIZIII\n", - "-0.000 * IIIIIIIXXIIIIIIIZIII\n", - "+0.004 * IIIIIIIYYIIIIIIYYIII\n", - "+0.004 * IIIIIIIXXIIIIIIYYIII\n", - "+0.004 * IIIIIIIYYIIIIIIXXIII\n", - "+0.004 * IIIIIIIXXIIIIIIXXIII\n", - "-0.000 * IIIIIIYZYIIIYZZZYIII\n", - "-0.000 * IIIIIIXZXIIIYZZZYIII\n", - "-0.000 * IIIIIIYZYIIIXZZZXIII\n", - "-0.000 * IIIIIIXZXIIIXZZZXIII\n", - "-0.003 * IIIIIYZZYIIIIIYZYIII\n", - "-0.003 * IIIIIXZZXIIIIIYZYIII\n", - "-0.003 * IIIIIYZZYIIIIIXZXIII\n", - "-0.003 * IIIIIXZZXIIIIIXZXIII\n", - "-0.001 * IIIIIYZZYIIIIYZZYIII\n", - "-0.001 * IIIIIXZZXIIIIYZZYIII\n", - "-0.001 * IIIIIYZZYIIIIXZZXIII\n", - "-0.001 * IIIIIXZZXIIIIXZZXIII\n", - "+0.001 * IIIIYZZZYIIIIIYZYIII\n", - "+0.001 * IIIIXZZZXIIIIIYZYIII\n", - "+0.001 * IIIIYZZZYIIIIIXZXIII\n", - "+0.001 * IIIIXZZZXIIIIIXZXIII\n", - "-0.035 * IIIIYZZZYIIIIYZZYIII\n", - "-0.035 * IIIIXZZZXIIIIYZZYIII\n", - "-0.035 * IIIIYZZZYIIIIXZZXIII\n", - "-0.035 * IIIIXZZZXIIIIXZZXIII\n", - "+0.016 * IIIYZZZZYIIIIIIIZIII\n", - "+0.016 * IIIXZZZZXIIIIIIIZIII\n", - "-0.000 * IIIYZZZZYIIIIIIYYIII\n", - "-0.000 * IIIXZZZZXIIIIIIYYIII\n", - "-0.000 * IIIYZZZZYIIIIIIXXIII\n", - "-0.000 * IIIXZZZZXIIIIIIXXIII\n", - "+0.001 * IIYZZZZZYIIIIIIIZIII\n", - "+0.001 * IIXZZZZZXIIIIIIIZIII\n", - "-0.003 * IIYZZZZZYIIIIIIYYIII\n", - "-0.003 * IIXZZZZZXIIIIIIYYIII\n", - "-0.003 * IIYZZZZZYIIIIIIXXIII\n", - "-0.003 * IIXZZZZZXIIIIIIXXIII\n", - "-0.000 * IYZZZZZZYIIYZZZZYIII\n", - "-0.000 * IXZZZZZZXIIYZZZZYIII\n", - "-0.000 * IYZZZZZZYIIXZZZZXIII\n", - "-0.000 * IXZZZZZZXIIXZZZZXIII\n", - "-0.000 * YZZZZZZZYIIIYZZZYIII\n", - "-0.000 * XZZZZZZZXIIIYZZZYIII\n", - "-0.000 * YZZZZZZZYIIIXZZZXIII\n", - "-0.000 * XZZZZZZZXIIIXZZZXIII\n", - "+0.119 * IIIIIIIZIIIIIIIIZIII\n", - "+0.000 * IIIIIIIZIIIIIIIYYIII\n", - "+0.000 * IIIIIIIZIIIIIIIXXIII\n", - "-0.001 * IIIIIIYYIIIIYZZZYIII\n", - "-0.001 * IIIIIIXXIIIIYZZZYIII\n", - "-0.001 * IIIIIIYYIIIIXZZZXIII\n", - "-0.001 * IIIIIIXXIIIIXZZZXIII\n", - "+0.001 * IIIIIYZYIIIIIIYZYIII\n", - "+0.001 * IIIIIXZXIIIIIIYZYIII\n", - "+0.001 * IIIIIYZYIIIIIIXZXIII\n", - "+0.001 * IIIIIXZXIIIIIIXZXIII\n", - "-0.041 * IIIIIYZYIIIIIYZZYIII\n", - "-0.041 * IIIIIXZXIIIIIYZZYIII\n", - "-0.041 * IIIIIYZYIIIIIXZZXIII\n", - "-0.041 * IIIIIXZXIIIIIXZZXIII\n", - "-0.003 * IIIIYZZYIIIIIIYZYIII\n", - "-0.003 * IIIIXZZXIIIIIIYZYIII\n", - "-0.003 * IIIIYZZYIIIIIIXZXIII\n", - "-0.003 * IIIIXZZXIIIIIIXZXIII\n", - "+0.001 * IIIIYZZYIIIIIYZZYIII\n", - "+0.001 * IIIIXZZXIIIIIYZZYIII\n", - "+0.001 * IIIIYZZYIIIIIXZZXIII\n", - "+0.001 * IIIIXZZXIIIIIXZZXIII\n", - "-0.001 * IIIYZZZYIIIIIIIIZIII\n", - "-0.001 * IIIXZZZXIIIIIIIIZIII\n", - "-0.003 * IIIYZZZYIIIIIIIYYIII\n", - "-0.003 * IIIXZZZXIIIIIIIYYIII\n", - "-0.003 * IIIYZZZYIIIIIIIXXIII\n", - "-0.003 * IIIXZZZXIIIIIIIXXIII\n", - "+0.021 * IIYZZZZYIIIIIIIIZIII\n", - "+0.021 * IIXZZZZXIIIIIIIIZIII\n", - "+0.000 * IIYZZZZYIIIIIIIYYIII\n", - "+0.000 * IIXZZZZXIIIIIIIYYIII\n", - "+0.000 * IIYZZZZYIIIIIIIXXIII\n", - "+0.000 * IIXZZZZXIIIIIIIXXIII\n", - "-0.004 * IYZZZZZYIIIYZZZZYIII\n", - "-0.004 * IXZZZZZXIIIYZZZZYIII\n", - "-0.004 * IYZZZZZYIIIXZZZZXIII\n", - "-0.004 * IXZZZZZXIIIXZZZZXIII\n", - "-0.003 * YZZZZZZYIIIIYZZZYIII\n", - "-0.003 * XZZZZZZXIIIIYZZZYIII\n", - "-0.003 * YZZZZZZYIIIIXZZZXIII\n", - "-0.003 * XZZZZZZXIIIIXZZZXIII\n", - "+0.122 * IIIIIIZIIIIIIIIIZIII\n", - "-0.001 * IIIIIYYIIIIYZZZZYIII\n", - "-0.001 * IIIIIXXIIIIYZZZZYIII\n", - "-0.001 * IIIIIYYIIIIXZZZZXIII\n", - "-0.001 * IIIIIXXIIIIXZZZZXIII\n", - "+0.000 * IIIYZZYIIIIIYZZZYIII\n", - "+0.000 * IIIXZZXIIIIIYZZZYIII\n", - "+0.000 * IIIYZZYIIIIIXZZZXIII\n", - "+0.000 * IIIXZZXIIIIIXZZZXIII\n", - "-0.000 * IIYZZZYIIIIIYZZZYIII\n", - "-0.000 * IIXZZZXIIIIIYZZZYIII\n", - "-0.000 * IIYZZZYIIIIIXZZZXIII\n", - "-0.000 * IIXZZZXIIIIIXZZZXIII\n", - "-0.000 * IYZZZZYIIIIIIIYZYIII\n", - "-0.000 * IXZZZZXIIIIIIIYZYIII\n", - "-0.000 * IYZZZZYIIIIIIIXZXIII\n", - "-0.000 * IXZZZZXIIIIIIIXZXIII\n", - "+0.019 * IYZZZZYIIIIIIYZZYIII\n", - "+0.019 * IXZZZZXIIIIIIYZZYIII\n", - "+0.019 * IYZZZZYIIIIIIXZZXIII\n", - "+0.019 * IXZZZZXIIIIIIXZZXIII\n", - "-0.006 * YZZZZZYIIIIIIIIIZIII\n", - "-0.006 * XZZZZZXIIIIIIIIIZIII\n", - "+0.138 * IIIIIZIIIIIIIIIIZIII\n", - "+0.006 * IIIIYYIIIIIIIIIYYIII\n", - "+0.006 * IIIIXXIIIIIIIIIYYIII\n", - "+0.006 * IIIIYYIIIIIIIIIXXIII\n", - "+0.006 * IIIIXXIIIIIIIIIXXIII\n", - "+0.003 * IIIYZYIIIIIIIIYZYIII\n", - "+0.003 * IIIXZXIIIIIIIIYZYIII\n", - "+0.003 * IIIYZYIIIIIIIIXZXIII\n", - "+0.003 * IIIXZXIIIIIIIIXZXIII\n", - "-0.001 * IIIYZYIIIIIIIYZZYIII\n", - "-0.001 * IIIXZXIIIIIIIYZZYIII\n", - "-0.001 * IIIYZYIIIIIIIXZZXIII\n", - "-0.001 * IIIXZXIIIIIIIXZZXIII\n", - "-0.001 * IIYZZYIIIIIIIIYZYIII\n", - "-0.001 * IIXZZXIIIIIIIIYZYIII\n", - "-0.001 * IIYZZYIIIIIIIIXZXIII\n", - "-0.001 * IIXZZXIIIIIIIIXZXIII\n", - "+0.037 * IIYZZYIIIIIIIYZZYIII\n", - "+0.037 * IIXZZXIIIIIIIYZZYIII\n", - "+0.037 * IIYZZYIIIIIIIXZZXIII\n", - "+0.037 * IIXZZXIIIIIIIXZZXIII\n", - "+0.005 * IYZZZYIIIIIIYZZZYIII\n", - "+0.005 * IXZZZXIIIIIIYZZZYIII\n", - "+0.005 * IYZZZYIIIIIIXZZZXIII\n", - "+0.005 * IXZZZXIIIIIIXZZZXIII\n", - "+0.005 * YZZZZYIIIIIYZZZZYIII\n", - "+0.005 * XZZZZXIIIIIYZZZZYIII\n", - "+0.005 * YZZZZYIIIIIXZZZZXIII\n", - "+0.005 * XZZZZXIIIIIXZZZZXIII\n", - "+0.126 * IIIIZIIIIIIIIIIIZIII\n", - "-0.001 * IIIYYIIIIIIIIIYZYIII\n", - "-0.001 * IIIXXIIIIIIIIIYZYIII\n", - "-0.001 * IIIYYIIIIIIIIIXZXIII\n", - "-0.001 * IIIXXIIIIIIIIIXZXIII\n", - "+0.031 * IIIYYIIIIIIIIYZZYIII\n", - "+0.031 * IIIXXIIIIIIIIYZZYIII\n", - "+0.031 * IIIYYIIIIIIIIXZZXIII\n", - "+0.031 * IIIXXIIIIIIIIXZZXIII\n", - "+0.003 * IIYZYIIIIIIIIIYZYIII\n", - "+0.003 * IIXZXIIIIIIIIIYZYIII\n", - "+0.003 * IIYZYIIIIIIIIIXZXIII\n", - "+0.003 * IIXZXIIIIIIIIIXZXIII\n", - "+0.001 * IIYZYIIIIIIIIYZZYIII\n", - "+0.001 * IIXZXIIIIIIIIYZZYIII\n", - "+0.001 * IIYZYIIIIIIIIXZZXIII\n", - "+0.001 * IIXZXIIIIIIIIXZZXIII\n", - "+0.112 * IIIZIIIIIIIIIIIIZIII\n", - "+0.000 * IIIZIIIIIIIIIIIYYIII\n", - "+0.000 * IIIZIIIIIIIIIIIXXIII\n", - "+0.000 * IIYYIIIIIIIIIIIIZIII\n", - "+0.000 * IIXXIIIIIIIIIIIIZIII\n", - "+0.003 * IIYYIIIIIIIIIIIYYIII\n", - "+0.003 * IIXXIIIIIIIIIIIYYIII\n", - "+0.003 * IIYYIIIIIIIIIIIXXIII\n", - "+0.003 * IIXXIIIIIIIIIIIXXIII\n", - "-0.000 * IYZYIIIIIIIYZZZZYIII\n", - "-0.000 * IXZXIIIIIIIYZZZZYIII\n", - "-0.000 * IYZYIIIIIIIXZZZZXIII\n", - "-0.000 * IXZXIIIIIIIXZZZZXIII\n", - "-0.000 * YZZYIIIIIIIIYZZZYIII\n", - "-0.000 * XZZXIIIIIIIIYZZZYIII\n", - "-0.000 * YZZYIIIIIIIIXZZZXIII\n", - "-0.000 * XZZXIIIIIIIIXZZZXIII\n", - "+0.118 * IIZIIIIIIIIIIIIIZIII\n", - "-0.000 * IIZIIIIIIIIIIIIYYIII\n", - "-0.000 * IIZIIIIIIIIIIIIXXIII\n", - "+0.003 * IYYIIIIIIIIYZZZZYIII\n", - "+0.003 * IXXIIIIIIIIYZZZZYIII\n", - "+0.003 * IYYIIIIIIIIXZZZZXIII\n", - "+0.003 * IXXIIIIIIIIXZZZZXIII\n", - "+0.004 * YZYIIIIIIIIIYZZZYIII\n", - "+0.004 * XZXIIIIIIIIIYZZZYIII\n", - "+0.004 * YZYIIIIIIIIIXZZZXIII\n", - "+0.004 * XZXIIIIIIIIIXZZZXIII\n", - "+0.119 * IZIIIIIIIIIIIIIIZIII\n", - "-0.001 * YYIIIIIIIIIIIIYZYIII\n", - "-0.001 * XXIIIIIIIIIIIIYZYIII\n", - "-0.001 * YYIIIIIIIIIIIIXZXIII\n", - "-0.001 * XXIIIIIIIIIIIIXZXIII\n", - "+0.030 * YYIIIIIIIIIIIYZZYIII\n", - "+0.030 * XXIIIIIIIIIIIYZZYIII\n", - "+0.030 * YYIIIIIIIIIIIXZZXIII\n", - "+0.030 * XXIIIIIIIIIIIXZZXIII\n", - "+0.124 * ZIIIIIIIIIIIIIIIZIII\n", - "+0.081 * IIIIIIIIIIIIIIZZIIII\n", - "+0.000 * IIIIIIIIIIIIIYYZIIII\n", - "+0.000 * IIIIIIIIIIIIIXXZIIII\n", - "+0.109 * IIIIIIIIIIIIIZIZIIII\n", - "+0.115 * IIIIIIIIIIIIZIIZIIII\n", - "+0.119 * IIIIIIIIIIIZIIIZIIII\n", - "+0.000 * IIIIIIIIIIIYXIXYIIII\n", - "+0.026 * IIIIIIIIIIIYYIYYIIII\n", - "+0.026 * IIIIIIIIIIIXXIYYIIII\n", - "+0.026 * IIIIIIIIIIIYYIXXIIII\n", - "+0.026 * IIIIIIIIIIIXXIXXIIII\n", - "+0.000 * IIIIIIIIIIIXYIYXIIII\n", - "+0.000 * IIIIIIIIIIIYXXZYIIII\n", - "+0.000 * IIIIIIIIIIIYYYZYIIII\n", - "+0.000 * IIIIIIIIIIIXXYZYIIII\n", - "+0.000 * IIIIIIIIIIIYYXZXIIII\n", - "+0.000 * IIIIIIIIIIIXXXZXIIII\n", - "+0.000 * IIIIIIIIIIIXYYZXIIII\n", - "+0.122 * ZZZZZZZZZZZIIIIZIIII\n", - "+0.038 * ZZZZZZZZZZXIIIYYIIII\n", - "-0.038 * IIIIIIIIIIXIIIYYIIII\n", - "+0.038 * ZZZZZZZZZZXIIIXXIIII\n", - "-0.038 * IIIIIIIIIIXIIIXXIIII\n", - "+0.001 * ZZZZZZZZZZXIIYZYIIII\n", - "-0.001 * IIIIIIIIIIXIIYZYIIII\n", - "+0.001 * ZZZZZZZZZZXIIXZXIIII\n", - "-0.001 * IIIIIIIIIIXIIXZXIIII\n", - "-0.007 * ZZZZZZZZZXIIIIIZIIII\n", - "+0.007 * IIIIIIIIIXZIIIIZIIII\n", - "-0.005 * ZZZZZZZZXIIYZZZYIIII\n", - "+0.005 * IIIIIIIIXZZYZZZYIIII\n", - "-0.005 * ZZZZZZZZXIIXZZZXIIII\n", - "+0.005 * IIIIIIIIXZZXZZZXIIII\n", - "+0.000 * ZZZZZZZXIIIYZZZYIIII\n", - "-0.000 * IIIIIIIXZZZYZZZYIIII\n", - "+0.000 * ZZZZZZZXIIIXZZZXIIII\n", - "-0.000 * IIIIIIIXZZZXZZZXIIII\n", - "-0.007 * ZZZZZZXIIIIIIIYYIIII\n", - "+0.007 * IIIIIIXZZZZIIIYYIIII\n", - "-0.007 * ZZZZZZXIIIIIIIXXIIII\n", - "+0.007 * IIIIIIXZZZZIIIXXIIII\n", - "-0.000 * ZZZZZZXIIIIIIYZYIIII\n", - "+0.000 * IIIIIIXZZZZIIYZYIIII\n", - "-0.000 * ZZZZZZXIIIIIIXZXIIII\n", - "+0.000 * IIIIIIXZZZZIIXZXIIII\n", - "+0.006 * ZZZZXIIIIIIIYZZYIIII\n", - "-0.006 * IIIIXZZZZZZIYZZYIIII\n", - "+0.006 * ZZZZXIIIIIIIXZZXIIII\n", - "-0.006 * IIIIXZZZZZZIXZZXIIII\n", - "+0.004 * ZZZXIIIIIIIYZZZYIIII\n", - "-0.004 * IIIXZZZZZZZYZZZYIIII\n", - "+0.004 * ZZZXIIIIIIIXZZZXIIII\n", - "-0.004 * IIIXZZZZZZZXZZZXIIII\n", - "+0.000 * ZZXIIIIIIIIYZZZYIIII\n", - "-0.000 * IIXZZZZZZZZYZZZYIIII\n", - "+0.000 * ZZXIIIIIIIIXZZZXIIII\n", - "-0.000 * IIXZZZZZZZZXZZZXIIII\n", - "-0.017 * ZXIIIIIIIIIIIIIZIIII\n", - "+0.017 * IXZZZZZZZZZIIIIZIIII\n", - "+0.013 * XIIIIIIIIIIIIIYYIIII\n", - "-0.013 * XZZZZZZZZZZIIIYYIIII\n", - "+0.013 * XIIIIIIIIIIIIIXXIIII\n", - "-0.013 * XZZZZZZZZZZIIIXXIIII\n", - "+0.000 * XIIIIIIIIIIIIYZYIIII\n", - "-0.000 * XZZZZZZZZZZIIYZYIIII\n", - "+0.000 * XIIIIIIIIIIIIXZXIIII\n", - "-0.000 * XZZZZZZZZZZIIXZXIIII\n", - "+0.126 * IIIIIIIIIIZIIIIZIIII\n", - "+0.016 * IIIIIIIIIYYIIIYYIIII\n", - "+0.016 * IIIIIIIIIXXIIIYYIIII\n", - "+0.016 * IIIIIIIIIYYIIIXXIIII\n", - "+0.016 * IIIIIIIIIXXIIIXXIIII\n", - "+0.000 * IIIIIIIIIYYIIYZYIIII\n", - "+0.000 * IIIIIIIIIXXIIYZYIIII\n", - "+0.000 * IIIIIIIIIYYIIXZXIIII\n", - "+0.000 * IIIIIIIIIXXIIXZXIIII\n", - "-0.005 * IIIIIIIIYZYIYZZYIIII\n", - "-0.005 * IIIIIIIIXZXIYZZYIIII\n", - "-0.005 * IIIIIIIIYZYIXZZXIIII\n", - "-0.005 * IIIIIIIIXZXIXZZXIIII\n", - "+0.000 * IIIIIIIYZZYIYZZYIIII\n", - "+0.000 * IIIIIIIXZZXIYZZYIIII\n", - "+0.000 * IIIIIIIYZZYIXZZXIIII\n", - "+0.000 * IIIIIIIXZZXIXZZXIIII\n", - "+0.001 * IIIIIIYZZZYIIIIZIIII\n", - "+0.001 * IIIIIIXZZZXIIIIZIIII\n", - "+0.007 * IIIIYZZZZZYYZZZYIIII\n", - "+0.007 * IIIIXZZZZZXYZZZYIIII\n", - "+0.007 * IIIIYZZZZZYXZZZXIIII\n", - "+0.007 * IIIIXZZZZZXXZZZXIIII\n", - "+0.003 * IIIYZZZZZZYIYZZYIIII\n", - "+0.003 * IIIXZZZZZZXIYZZYIIII\n", - "+0.003 * IIIYZZZZZZYIXZZXIIII\n", - "+0.003 * IIIXZZZZZZXIXZZXIIII\n", - "+0.000 * IIYZZZZZZZYIYZZYIIII\n", - "+0.000 * IIXZZZZZZZXIYZZYIIII\n", - "+0.000 * IIYZZZZZZZYIXZZXIIII\n", - "+0.000 * IIXZZZZZZZXIXZZXIIII\n", - "+0.015 * IYZZZZZZZZYIIIYYIIII\n", - "+0.015 * IXZZZZZZZZXIIIYYIIII\n", - "+0.015 * IYZZZZZZZZYIIIXXIIII\n", - "+0.015 * IXZZZZZZZZXIIIXXIIII\n", - "+0.000 * IYZZZZZZZZYIIYZYIIII\n", - "+0.000 * IXZZZZZZZZXIIYZYIIII\n", - "+0.000 * IYZZZZZZZZYIIXZXIIII\n", - "+0.000 * IXZZZZZZZZXIIXZXIIII\n", - "-0.015 * YZZZZZZZZZYIIIIZIIII\n", - "-0.015 * XZZZZZZZZZXIIIIZIIII\n", - "+0.118 * IIIIIIIIIZIIIIIZIIII\n", - "-0.001 * IIIIIIIIYYIYZZZYIIII\n", - "-0.001 * IIIIIIIIXXIYZZZYIIII\n", - "-0.001 * IIIIIIIIYYIXZZZXIIII\n", - "-0.001 * IIIIIIIIXXIXZZZXIIII\n", - "+0.000 * IIIIIIIYZYIYZZZYIIII\n", - "+0.000 * IIIIIIIXZXIYZZZYIIII\n", - "+0.000 * IIIIIIIYZYIXZZZXIIII\n", - "+0.000 * IIIIIIIXZXIXZZZXIIII\n", - "-0.042 * IIIIIIYZZYIIIIYYIIII\n", - "-0.042 * IIIIIIXZZXIIIIYYIIII\n", - "-0.042 * IIIIIIYZZYIIIIXXIIII\n", - "-0.042 * IIIIIIXZZXIIIIXXIIII\n", - "-0.001 * IIIIIIYZZYIIIYZYIIII\n", - "-0.001 * IIIIIIXZZXIIIYZYIIII\n", - "-0.001 * IIIIIIYZZYIIIXZXIIII\n", - "-0.001 * IIIIIIXZZXIIIXZXIIII\n", - "+0.001 * IIIIYZZZZYIIYZZYIIII\n", - "+0.001 * IIIIXZZZZXIIYZZYIIII\n", - "+0.001 * IIIIYZZZZYIIXZZXIIII\n", - "+0.001 * IIIIXZZZZXIIXZZXIIII\n", - "+0.002 * IIIYZZZZZYIYZZZYIIII\n", - "+0.002 * IIIXZZZZZXIYZZZYIIII\n", - "+0.002 * IIIYZZZZZYIXZZZXIIII\n", - "+0.002 * IIIXZZZZZXIXZZZXIIII\n", - "+0.000 * IIYZZZZZZYIYZZZYIIII\n", - "+0.000 * IIXZZZZZZXIYZZZYIIII\n", - "+0.000 * IIYZZZZZZYIXZZZXIIII\n", - "+0.000 * IIXZZZZZZXIXZZZXIIII\n", - "+0.008 * IYZZZZZZZYIIIIIZIIII\n", - "+0.008 * IXZZZZZZZXIIIIIZIIII\n", - "-0.006 * YZZZZZZZZYIIIIYYIIII\n", - "-0.006 * XZZZZZZZZXIIIIYYIIII\n", - "-0.006 * YZZZZZZZZYIIIIXXIIII\n", - "-0.006 * XZZZZZZZZXIIIIXXIIII\n", - "-0.000 * YZZZZZZZZYIIIYZYIIII\n", - "-0.000 * XZZZZZZZZXIIIYZYIIII\n", - "-0.000 * YZZZZZZZZYIIIXZXIIII\n", - "-0.000 * XZZZZZZZZXIIIXZXIIII\n", - "+0.119 * IIIIIIIIZIIIIIIZIIII\n", - "+0.000 * IIIIIIIYYIIIIIIZIIII\n", - "+0.000 * IIIIIIIXXIIIIIIZIIII\n", - "-0.001 * IIIIIIYZYIIIYZZYIIII\n", - "-0.001 * IIIIIIXZXIIIYZZYIIII\n", - "-0.001 * IIIIIIYZYIIIXZZXIIII\n", - "-0.001 * IIIIIIXZXIIIXZZXIIII\n", - "-0.001 * IIIIIYZZYIIIIIYYIIII\n", - "-0.001 * IIIIIXZZXIIIIIYYIIII\n", - "-0.001 * IIIIIYZZYIIIIIXXIIII\n", - "-0.001 * IIIIIXZZXIIIIIXXIIII\n", - "-0.003 * IIIIIYZZYIIIIYZYIIII\n", - "-0.003 * IIIIIXZZXIIIIYZYIIII\n", - "-0.003 * IIIIIYZZYIIIIXZXIIII\n", - "-0.003 * IIIIIXZZXIIIIXZXIIII\n", - "-0.041 * IIIIYZZZYIIIIIYYIIII\n", - "-0.041 * IIIIXZZZXIIIIIYYIIII\n", - "-0.041 * IIIIYZZZYIIIIIXXIIII\n", - "-0.041 * IIIIXZZZXIIIIIXXIIII\n", - "-0.001 * IIIIYZZZYIIIIYZYIIII\n", - "-0.001 * IIIIXZZZXIIIIYZYIIII\n", - "-0.001 * IIIIYZZZYIIIIXZXIIII\n", - "-0.001 * IIIIXZZZXIIIIXZXIIII\n", - "+0.021 * IIIYZZZZYIIIIIIZIIII\n", - "+0.021 * IIIXZZZZXIIIIIIZIIII\n", - "+0.001 * IIYZZZZZYIIIIIIZIIII\n", - "+0.001 * IIXZZZZZXIIIIIIZIIII\n", - "-0.004 * IYZZZZZZYIIYZZZYIIII\n", - "-0.004 * IXZZZZZZXIIYZZZYIIII\n", - "-0.004 * IYZZZZZZYIIXZZZXIIII\n", - "-0.004 * IXZZZZZZXIIXZZZXIIII\n", - "-0.003 * YZZZZZZZYIIIYZZYIIII\n", - "-0.003 * XZZZZZZZXIIIYZZYIIII\n", - "-0.003 * YZZZZZZZYIIIXZZXIIII\n", - "-0.003 * XZZZZZZZXIIIXZZXIIII\n", - "+0.112 * IIIIIIIZIIIIIIIZIIII\n", - "+0.000 * IIIIIIYYIIIIYZZYIIII\n", - "+0.000 * IIIIIIXXIIIIYZZYIIII\n", - "+0.000 * IIIIIIYYIIIIXZZXIIII\n", - "+0.000 * IIIIIIXXIIIIXZZXIIII\n", - "-0.035 * IIIIIYZYIIIIIIYYIIII\n", - "-0.035 * IIIIIXZXIIIIIIYYIIII\n", - "-0.035 * IIIIIYZYIIIIIIXXIIII\n", - "-0.035 * IIIIIXZXIIIIIIXXIIII\n", - "-0.001 * IIIIIYZYIIIIIYZYIIII\n", - "-0.001 * IIIIIXZXIIIIIYZYIIII\n", - "-0.001 * IIIIIYZYIIIIIXZXIIII\n", - "-0.001 * IIIIIXZXIIIIIXZXIIII\n", - "+0.001 * IIIIYZZYIIIIIIYYIIII\n", - "+0.001 * IIIIXZZXIIIIIIYYIIII\n", - "+0.001 * IIIIYZZYIIIIIIXXIIII\n", - "+0.001 * IIIIXZZXIIIIIIXXIIII\n", - "-0.003 * IIIIYZZYIIIIIYZYIIII\n", - "-0.003 * IIIIXZZXIIIIIYZYIIII\n", - "-0.003 * IIIIYZZYIIIIIXZXIIII\n", - "-0.003 * IIIIXZZXIIIIIXZXIIII\n", - "-0.001 * IIIYZZZYIIIIIIIZIIII\n", - "-0.001 * IIIXZZZXIIIIIIIZIIII\n", - "+0.016 * IIYZZZZYIIIIIIIZIIII\n", - "+0.016 * IIXZZZZXIIIIIIIZIIII\n", - "+0.000 * IYZZZZZYIIIYZZZYIIII\n", - "+0.000 * IXZZZZZXIIIYZZZYIIII\n", - "+0.000 * IYZZZZZYIIIXZZZXIIII\n", - "+0.000 * IXZZZZZXIIIXZZZXIIII\n", - "+0.000 * YZZZZZZYIIIIYZZYIIII\n", - "+0.000 * XZZZZZZXIIIIYZZYIIII\n", - "+0.000 * YZZZZZZYIIIIXZZXIIII\n", - "+0.000 * XZZZZZZXIIIIXZZXIIII\n", - "+0.122 * IIIIIIZIIIIIIIIZIIII\n", - "-0.001 * IIIIYZYIIIIYZZZYIIII\n", - "-0.001 * IIIIXZXIIIIYZZZYIIII\n", - "-0.001 * IIIIYZYIIIIXZZZXIIII\n", - "-0.001 * IIIIXZXIIIIXZZZXIIII\n", - "-0.000 * IIIYZZYIIIIIYZZYIIII\n", - "-0.000 * IIIXZZXIIIIIYZZYIIII\n", - "-0.000 * IIIYZZYIIIIIXZZXIIII\n", - "-0.000 * IIIXZZXIIIIIXZZXIIII\n", - "-0.000 * IIYZZZYIIIIIYZZYIIII\n", - "-0.000 * IIXZZZXIIIIIYZZYIIII\n", - "-0.000 * IIYZZZYIIIIIXZZXIIII\n", - "-0.000 * IIXZZZXIIIIIXZZXIIII\n", - "+0.019 * IYZZZZYIIIIIIIYYIIII\n", - "+0.019 * IXZZZZXIIIIIIIYYIIII\n", - "+0.019 * IYZZZZYIIIIIIIXXIIII\n", - "+0.019 * IXZZZZXIIIIIIIXXIIII\n", - "+0.000 * IYZZZZYIIIIIIYZYIIII\n", - "+0.000 * IXZZZZXIIIIIIYZYIIII\n", - "+0.000 * IYZZZZYIIIIIIXZXIIII\n", - "+0.000 * IXZZZZXIIIIIIXZXIIII\n", - "-0.006 * YZZZZZYIIIIIIIIZIIII\n", - "-0.006 * XZZZZZXIIIIIIIIZIIII\n", - "+0.126 * IIIIIZIIIIIIIIIZIIII\n", - "-0.001 * IIIYZYIIIIIIIIYYIIII\n", - "-0.001 * IIIXZXIIIIIIIIYYIIII\n", - "-0.001 * IIIYZYIIIIIIIIXXIIII\n", - "-0.001 * IIIXZXIIIIIIIIXXIIII\n", - "+0.003 * IIIYZYIIIIIIIYZYIIII\n", - "+0.003 * IIIXZXIIIIIIIYZYIIII\n", - "+0.003 * IIIYZYIIIIIIIXZXIIII\n", - "+0.003 * IIIXZXIIIIIIIXZXIIII\n", - "+0.031 * IIYZZYIIIIIIIIYYIIII\n", - "+0.031 * IIXZZXIIIIIIIIYYIIII\n", - "+0.031 * IIYZZYIIIIIIIIXXIIII\n", - "+0.031 * IIXZZXIIIIIIIIXXIIII\n", - "+0.001 * IIYZZYIIIIIIIYZYIIII\n", - "+0.001 * IIXZZXIIIIIIIYZYIIII\n", - "+0.001 * IIYZZYIIIIIIIXZXIIII\n", - "+0.001 * IIXZZXIIIIIIIXZXIIII\n", - "+0.138 * IIIIZIIIIIIIIIIZIIII\n", - "+0.037 * IIIYYIIIIIIIIIYYIIII\n", - "+0.037 * IIIXXIIIIIIIIIYYIIII\n", - "+0.037 * IIIYYIIIIIIIIIXXIIII\n", - "+0.037 * IIIXXIIIIIIIIIXXIIII\n", - "+0.001 * IIIYYIIIIIIIIYZYIIII\n", - "+0.001 * IIIXXIIIIIIIIYZYIIII\n", - "+0.001 * IIIYYIIIIIIIIXZXIIII\n", - "+0.001 * IIIXXIIIIIIIIXZXIIII\n", - "+0.001 * IIYZYIIIIIIIIIYYIIII\n", - "+0.001 * IIXZXIIIIIIIIIYYIIII\n", - "+0.001 * IIYZYIIIIIIIIIXXIIII\n", - "+0.001 * IIXZXIIIIIIIIIXXIIII\n", - "+0.003 * IIYZYIIIIIIIIYZYIIII\n", - "+0.003 * IIXZXIIIIIIIIYZYIIII\n", - "+0.003 * IIYZYIIIIIIIIXZXIIII\n", - "+0.003 * IIXZXIIIIIIIIXZXIIII\n", - "+0.005 * IYZZYIIIIIIIYZZYIIII\n", - "+0.005 * IXZZXIIIIIIIYZZYIIII\n", - "+0.005 * IYZZYIIIIIIIXZZXIIII\n", - "+0.005 * IXZZXIIIIIIIXZZXIIII\n", - "+0.005 * YZZZYIIIIIIYZZZYIIII\n", - "+0.005 * XZZZXIIIIIIYZZZYIIII\n", - "+0.005 * YZZZYIIIIIIXZZZXIIII\n", - "+0.005 * XZZZXIIIIIIXZZZXIIII\n", - "+0.118 * IIIZIIIIIIIIIIIZIIII\n", - "-0.000 * IIYYIIIIIIIIIIIZIIII\n", - "-0.000 * IIXXIIIIIIIIIIIZIIII\n", - "+0.003 * IYZYIIIIIIIYZZZYIIII\n", - "+0.003 * IXZXIIIIIIIYZZZYIIII\n", - "+0.003 * IYZYIIIIIIIXZZZXIIII\n", - "+0.003 * IXZXIIIIIIIXZZZXIIII\n", - "+0.004 * YZZYIIIIIIIIYZZYIIII\n", - "+0.004 * XZZXIIIIIIIIYZZYIIII\n", - "+0.004 * YZZYIIIIIIIIXZZXIIII\n", - "+0.004 * XZZXIIIIIIIIXZZXIIII\n", - "+0.112 * IIZIIIIIIIIIIIIZIIII\n", - "+0.000 * IYYIIIIIIIIYZZZYIIII\n", - "+0.000 * IXXIIIIIIIIYZZZYIIII\n", - "+0.000 * IYYIIIIIIIIXZZZXIIII\n", - "+0.000 * IXXIIIIIIIIXZZZXIIII\n", - "+0.000 * YZYIIIIIIIIIYZZYIIII\n", - "+0.000 * XZXIIIIIIIIIYZZYIIII\n", - "+0.000 * YZYIIIIIIIIIXZZXIIII\n", - "+0.000 * XZXIIIIIIIIIXZZXIIII\n", - "+0.119 * IZIIIIIIIIIIIIIZIIII\n", - "+0.030 * YYIIIIIIIIIIIIYYIIII\n", - "+0.030 * XXIIIIIIIIIIIIYYIIII\n", - "+0.030 * YYIIIIIIIIIIIIXXIIII\n", - "+0.030 * XXIIIIIIIIIIIIXXIIII\n", - "+0.001 * YYIIIIIIIIIIIYZYIIII\n", - "+0.001 * XXIIIIIIIIIIIYZYIIII\n", - "+0.001 * YYIIIIIIIIIIIXZXIIII\n", - "+0.001 * XXIIIIIIIIIIIXZXIIII\n", - "+0.124 * ZIIIIIIIIIIIIIIZIIII\n", - "+0.119 * IIIIIIIIIIIIIZZIIIII\n", - "+0.114 * IIIIIIIIIIIIZIZIIIII\n", - "+0.132 * IIIIIIIIIIIZIIZIIIII\n", - "+0.125 * ZZZZZZZZZZZIIIZIIIII\n", - "+0.011 * ZZZZZZZZZXIIIIZIIIII\n", - "-0.011 * IIIIIIIIIXZIIIZIIIII\n", - "-0.013 * ZZZZZZZZXIIIYZYIIIII\n", - "+0.013 * IIIIIIIIXZZIYZYIIIII\n", - "-0.013 * ZZZZZZZZXIIIXZXIIIII\n", - "+0.013 * IIIIIIIIXZZIXZXIIIII\n", - "+0.001 * ZZZZZZZXIIIIYZYIIIII\n", - "-0.001 * IIIIIIIXZZZIYZYIIIII\n", - "+0.001 * ZZZZZZZXIIIIXZXIIIII\n", - "-0.001 * IIIIIIIXZZZIXZXIIIII\n", - "-0.000 * ZZZZZXIIIIIYZZYIIIII\n", - "+0.000 * IIIIIXZZZZZYZZYIIIII\n", - "-0.000 * ZZZZZXIIIIIXZZXIIIII\n", - "+0.000 * IIIIIXZZZZZXZZXIIIII\n", - "+0.007 * ZZZZXIIIIIIYZZYIIIII\n", - "-0.007 * IIIIXZZZZZZYZZYIIIII\n", - "+0.007 * ZZZZXIIIIIIXZZXIIIII\n", - "-0.007 * IIIIXZZZZZZXZZXIIIII\n", - "-0.004 * ZZZXIIIIIIIIYZYIIIII\n", - "+0.004 * IIIXZZZZZZZIYZYIIIII\n", - "-0.004 * ZZZXIIIIIIIIXZXIIIII\n", - "+0.004 * IIIXZZZZZZZIXZXIIIII\n", - "-0.001 * ZXIIIIIIIIIIIIZIIIII\n", - "+0.001 * IXZZZZZZZZZIIIZIIIII\n", - "+0.123 * IIIIIIIIIIZIIIZIIIII\n", - "-0.007 * IIIIIIIIYZYYZZYIIIII\n", - "-0.007 * IIIIIIIIXZXYZZYIIIII\n", - "-0.007 * IIIIIIIIYZYXZZXIIIII\n", - "-0.007 * IIIIIIIIXZXXZZXIIIII\n", - "+0.000 * IIIIIIIYZZYYZZYIIIII\n", - "+0.000 * IIIIIIIXZZXYZZYIIIII\n", - "+0.000 * IIIIIIIYZZYXZZXIIIII\n", - "+0.000 * IIIIIIIXZZXXZZXIIIII\n", - "-0.012 * IIIIIIYZZZYIIIZIIIII\n", - "-0.012 * IIIIIIXZZZXIIIZIIIII\n", - "-0.000 * IIIIIYZZZZYIYZYIIIII\n", - "-0.000 * IIIIIXZZZZXIYZYIIIII\n", - "-0.000 * IIIIIYZZZZYIXZXIIIII\n", - "-0.000 * IIIIIXZZZZXIXZXIIIII\n", - "+0.009 * IIIIYZZZZZYIYZYIIIII\n", - "+0.009 * IIIIXZZZZZXIYZYIIIII\n", - "+0.009 * IIIIYZZZZZYIXZXIIIII\n", - "+0.009 * IIIIXZZZZZXIXZXIIIII\n", - "+0.002 * IIIYZZZZZZYYZZYIIIII\n", - "+0.002 * IIIXZZZZZZXYZZYIIIII\n", - "+0.002 * IIIYZZZZZZYXZZXIIIII\n", - "+0.002 * IIIXZZZZZZXXZZXIIIII\n", - "+0.002 * YZZZZZZZZZYIIIZIIIII\n", - "+0.002 * XZZZZZZZZZXIIIZIIIII\n", - "+0.113 * IIIIIIIIIZIIIIZIIIII\n", - "+0.006 * IIIIIIIIYYIIYZYIIIII\n", - "+0.006 * IIIIIIIIXXIIYZYIIIII\n", - "+0.006 * IIIIIIIIYYIIXZXIIIII\n", - "+0.006 * IIIIIIIIXXIIXZXIIIII\n", - "-0.000 * IIIIIIIYZYIIYZYIIIII\n", - "-0.000 * IIIIIIIXZXIIYZYIIIII\n", - "-0.000 * IIIIIIIYZYIIXZXIIIII\n", - "-0.000 * IIIIIIIXZXIIXZXIIIII\n", - "-0.000 * IIIIIYZZZYIYZZYIIIII\n", - "-0.000 * IIIIIXZZZXIYZZYIIIII\n", - "-0.000 * IIIIIYZZZYIXZZXIIIII\n", - "-0.000 * IIIIIXZZZXIXZZXIIIII\n", - "+0.001 * IIIIYZZZZYIYZZYIIIII\n", - "+0.001 * IIIIXZZZZXIYZZYIIIII\n", - "+0.001 * IIIIYZZZZYIXZZXIIIII\n", - "+0.001 * IIIIXZZZZXIXZZXIIIII\n", - "+0.009 * IIIYZZZZZYIIYZYIIIII\n", - "+0.009 * IIIXZZZZZXIIYZYIIIII\n", - "+0.009 * IIIYZZZZZYIIXZXIIIII\n", - "+0.009 * IIIXZZZZZXIIXZXIIIII\n", - "-0.009 * IYZZZZZZZYIIIIZIIIII\n", - "-0.009 * IXZZZZZZZXIIIIZIIIII\n", - "+0.126 * IIIIIIIIZIIIIIZIIIII\n", - "-0.000 * IIIIIIIIZIIIIYYIIIII\n", - "-0.000 * IIIIIIIIZIIIIXXIIIII\n", - "+0.000 * IIIIIIIYYIIIIIZIIIII\n", - "+0.000 * IIIIIIIXXIIIIIZIIIII\n", - "+0.004 * IIIIIIIYYIIIIYYIIIII\n", - "+0.004 * IIIIIIIXXIIIIYYIIIII\n", - "+0.004 * IIIIIIIYYIIIIXXIIIII\n", - "+0.004 * IIIIIIIXXIIIIXXIIIII\n", - "-0.002 * IIIIIIYZYIIYZZYIIIII\n", - "-0.002 * IIIIIIXZXIIYZZYIIIII\n", - "-0.002 * IIIIIIYZYIIXZZXIIIII\n", - "-0.002 * IIIIIIXZXIIXZZXIIIII\n", - "-0.011 * IIIYZZZZYIIIIIZIIIII\n", - "-0.011 * IIIXZZZZXIIIIIZIIIII\n", - "+0.000 * IIIYZZZZYIIIIYYIIIII\n", - "+0.000 * IIIXZZZZXIIIIYYIIIII\n", - "+0.000 * IIIYZZZZYIIIIXXIIIII\n", - "+0.000 * IIIXZZZZXIIIIXXIIIII\n", - "-0.000 * IIYZZZZZYIIIIIZIIIII\n", - "-0.000 * IIXZZZZZXIIIIIZIIIII\n", - "+0.001 * IIYZZZZZYIIIIYYIIIII\n", - "+0.001 * IIXZZZZZXIIIIYYIIIII\n", - "+0.001 * IIYZZZZZYIIIIXXIIIII\n", - "+0.001 * IIXZZZZZXIIIIXXIIIII\n", - "+0.006 * IYZZZZZZYIIIYZYIIIII\n", - "+0.006 * IXZZZZZZXIIIYZYIIIII\n", - "+0.006 * IYZZZZZZYIIIXZXIIIII\n", - "+0.006 * IXZZZZZZXIIIXZXIIIII\n", - "+0.000 * YZZZZZZZYIIYZZYIIIII\n", - "+0.000 * XZZZZZZZXIIYZZYIIIII\n", - "+0.000 * YZZZZZZZYIIXZZXIIIII\n", - "+0.000 * XZZZZZZZXIIXZZXIIIII\n", - "+0.118 * IIIIIIIZIIIIIIZIIIII\n", - "+0.000 * IIIIIIIZIIIIIYYIIIII\n", - "+0.000 * IIIIIIIZIIIIIXXIIIII\n", - "+0.000 * IIIIIIYYIIIYZZYIIIII\n", - "+0.000 * IIIIIIXXIIIYZZYIIIII\n", - "+0.000 * IIIIIIYYIIIXZZXIIIII\n", - "+0.000 * IIIIIIXXIIIXZZXIIIII\n", - "+0.001 * IIIYZZZYIIIIIIZIIIII\n", - "+0.001 * IIIXZZZXIIIIIIZIIIII\n", - "+0.001 * IIIYZZZYIIIIIYYIIIII\n", - "+0.001 * IIIXZZZXIIIIIYYIIIII\n", - "+0.001 * IIIYZZZYIIIIIXXIIIII\n", - "+0.001 * IIIXZZZXIIIIIXXIIIII\n", - "-0.009 * IIYZZZZYIIIIIIZIIIII\n", - "-0.009 * IIXZZZZXIIIIIIZIIIII\n", - "-0.000 * IIYZZZZYIIIIIYYIIIII\n", - "-0.000 * IIXZZZZXIIIIIYYIIIII\n", - "-0.000 * IIYZZZZYIIIIIXXIIIII\n", - "-0.000 * IIXZZZZXIIIIIXXIIIII\n", - "-0.000 * IYZZZZZYIIIIYZYIIIII\n", - "-0.000 * IXZZZZZXIIIIYZYIIIII\n", - "-0.000 * IYZZZZZYIIIIXZXIIIII\n", - "-0.000 * IXZZZZZXIIIIXZXIIIII\n", - "-0.000 * YZZZZZZYIIIYZZYIIIII\n", - "-0.000 * XZZZZZZXIIIYZZYIIIII\n", - "-0.000 * YZZZZZZYIIIXZZXIIIII\n", - "-0.000 * XZZZZZZXIIIXZZXIIIII\n", - "+0.113 * IIIIIIZIIIIIIIZIIIII\n", - "-0.000 * IIIIIYYIIIIIYZYIIIII\n", - "-0.000 * IIIIIXXIIIIIYZYIIIII\n", - "-0.000 * IIIIIYYIIIIIXZXIIIII\n", - "-0.000 * IIIIIXXIIIIIXZXIIIII\n", - "+0.001 * IIIIYZYIIIIIYZYIIIII\n", - "+0.001 * IIIIXZXIIIIIYZYIIIII\n", - "+0.001 * IIIIYZYIIIIIXZXIIIII\n", - "+0.001 * IIIIXZXIIIIIXZXIIIII\n", - "-0.003 * IIIYZZYIIIIYZZYIIIII\n", - "-0.003 * IIIXZZXIIIIYZZYIIIII\n", - "-0.003 * IIIYZZYIIIIXZZXIIIII\n", - "-0.003 * IIIXZZXIIIIXZZXIIIII\n", - "+0.011 * YZZZZZYIIIIIIIZIIIII\n", - "+0.011 * XZZZZZXIIIIIIIZIIIII\n", - "+0.112 * IIIIIZIIIIIIIIZIIIII\n", - "+0.000 * IIIIIZIIIIIIIYYIIIII\n", - "+0.000 * IIIIIZIIIIIIIXXIIIII\n", - "+0.000 * IIIIYYIIIIIIIIZIIIII\n", - "+0.000 * IIIIXXIIIIIIIIZIIIII\n", - "+0.003 * IIIIYYIIIIIIIYYIIIII\n", - "+0.003 * IIIIXXIIIIIIIYYIIIII\n", - "+0.003 * IIIIYYIIIIIIIXXIIIII\n", - "+0.003 * IIIIXXIIIIIIIXXIIIII\n", - "-0.000 * IYZZZYIIIIIYZZYIIIII\n", - "-0.000 * IXZZZXIIIIIYZZYIIIII\n", - "-0.000 * IYZZZYIIIIIXZZXIIIII\n", - "-0.000 * IXZZZXIIIIIXZZXIIIII\n", - "-0.000 * YZZZZYIIIIIIYZYIIIII\n", - "-0.000 * XZZZZXIIIIIIYZYIIIII\n", - "-0.000 * YZZZZYIIIIIIXZXIIIII\n", - "-0.000 * XZZZZXIIIIIIXZXIIIII\n", - "+0.118 * IIIIZIIIIIIIIIZIIIII\n", - "-0.000 * IIIIZIIIIIIIIYYIIIII\n", - "-0.000 * IIIIZIIIIIIIIXXIIIII\n", - "+0.004 * IYZZYIIIIIIYZZYIIIII\n", - "+0.004 * IXZZXIIIIIIYZZYIIIII\n", - "+0.004 * IYZZYIIIIIIXZZXIIIII\n", - "+0.004 * IXZZXIIIIIIXZZXIIIII\n", - "+0.003 * YZZZYIIIIIIIYZYIIIII\n", - "+0.003 * XZZZXIIIIIIIYZYIIIII\n", - "+0.003 * YZZZYIIIIIIIXZXIIIII\n", - "+0.003 * XZZZXIIIIIIIXZXIIIII\n", - "+0.134 * IIIZIIIIIIIIIIZIIIII\n", - "+0.005 * IIYYIIIIIIIIIYYIIIII\n", - "+0.005 * IIXXIIIIIIIIIYYIIIII\n", - "+0.005 * IIYYIIIIIIIIIXXIIIII\n", - "+0.005 * IIXXIIIIIIIIIXXIIIII\n", - "+0.015 * IYZYIIIIIIIIYZYIIIII\n", - "+0.015 * IXZXIIIIIIIIYZYIIIII\n", - "+0.015 * IYZYIIIIIIIIXZXIIIII\n", - "+0.015 * IXZXIIIIIIIIXZXIIIII\n", - "+0.007 * YZZYIIIIIIIYZZYIIIII\n", - "+0.007 * XZZXIIIIIIIYZZYIIIII\n", - "+0.007 * YZZYIIIIIIIXZZXIIIII\n", - "+0.007 * XZZXIIIIIIIXZZXIIIII\n", - "+0.124 * IIZIIIIIIIIIIIZIIIII\n", - "+0.129 * IZIIIIIIIIIIIIZIIIII\n", - "+0.139 * ZIIIIIIIIIIIIIZIIIII\n", - "+0.114 * IIIIIIIIIIIIZZIIIIII\n", - "+0.132 * IIIIIIIIIIIZIZIIIIII\n", - "+0.125 * ZZZZZZZZZZZIIZIIIIII\n", - "+0.011 * ZZZZZZZZZXIIIZIIIIII\n", - "-0.011 * IIIIIIIIIXZIIZIIIIII\n", - "-0.001 * ZZZZZZZZXIIIYYIIIIII\n", - "+0.001 * IIIIIIIIXZZIYYIIIIII\n", - "-0.001 * ZZZZZZZZXIIIXXIIIIII\n", - "+0.001 * IIIIIIIIXZZIXXIIIIII\n", - "-0.013 * ZZZZZZZXIIIIYYIIIIII\n", - "+0.013 * IIIIIIIXZZZIYYIIIIII\n", - "-0.013 * ZZZZZZZXIIIIXXIIIIII\n", - "+0.013 * IIIIIIIXZZZIXXIIIIII\n", - "+0.007 * ZZZZZXIIIIIYZYIIIIII\n", - "-0.007 * IIIIIXZZZZZYZYIIIIII\n", - "+0.007 * ZZZZZXIIIIIXZXIIIIII\n", - "-0.007 * IIIIIXZZZZZXZXIIIIII\n", - "+0.000 * ZZZZXIIIIIIYZYIIIIII\n", - "-0.000 * IIIIXZZZZZZYZYIIIIII\n", - "+0.000 * ZZZZXIIIIIIXZXIIIIII\n", - "-0.000 * IIIIXZZZZZZXZXIIIIII\n", - "-0.004 * ZZXIIIIIIIIIYYIIIIII\n", - "+0.004 * IIXZZZZZZZZIYYIIIIII\n", - "-0.004 * ZZXIIIIIIIIIXXIIIIII\n", - "+0.004 * IIXZZZZZZZZIXXIIIIII\n", - "-0.001 * ZXIIIIIIIIIIIZIIIIII\n", - "+0.001 * IXZZZZZZZZZIIZIIIIII\n", - "+0.123 * IIIIIIIIIIZIIZIIIIII\n", - "-0.000 * IIIIIIIIYZYYZYIIIIII\n", - "-0.000 * IIIIIIIIXZXYZYIIIIII\n", - "-0.000 * IIIIIIIIYZYXZXIIIIII\n", - "-0.000 * IIIIIIIIXZXXZXIIIIII\n", - "-0.007 * IIIIIIIYZZYYZYIIIIII\n", - "-0.007 * IIIIIIIXZZXYZYIIIIII\n", - "-0.007 * IIIIIIIYZZYXZXIIIIII\n", - "-0.007 * IIIIIIIXZZXXZXIIIIII\n", - "-0.012 * IIIIIIYZZZYIIZIIIIII\n", - "-0.012 * IIIIIIXZZZXIIZIIIIII\n", - "+0.009 * IIIIIYZZZZYIYYIIIIII\n", - "+0.009 * IIIIIXZZZZXIYYIIIIII\n", - "+0.009 * IIIIIYZZZZYIXXIIIIII\n", - "+0.009 * IIIIIXZZZZXIXXIIIIII\n", - "+0.000 * IIIIYZZZZZYIYYIIIIII\n", - "+0.000 * IIIIXZZZZZXIYYIIIIII\n", - "+0.000 * IIIIYZZZZZYIXXIIIIII\n", - "+0.000 * IIIIXZZZZZXIXXIIIIII\n", - "+0.002 * IIYZZZZZZZYYZYIIIIII\n", - "+0.002 * IIXZZZZZZZXYZYIIIIII\n", - "+0.002 * IIYZZZZZZZYXZXIIIIII\n", - "+0.002 * IIXZZZZZZZXXZXIIIIII\n", - "+0.002 * YZZZZZZZZZYIIZIIIIII\n", - "+0.002 * XZZZZZZZZZXIIZIIIIII\n", - "+0.113 * IIIIIIIIIZIIIZIIIIII\n", - "+0.000 * IIIIIIIIYYIIYYIIIIII\n", - "+0.000 * IIIIIIIIXXIIYYIIIIII\n", - "+0.000 * IIIIIIIIYYIIXXIIIIII\n", - "+0.000 * IIIIIIIIXXIIXXIIIIII\n", - "+0.006 * IIIIIIIYZYIIYYIIIIII\n", - "+0.006 * IIIIIIIXZXIIYYIIIIII\n", - "+0.006 * IIIIIIIYZYIIXXIIIIII\n", - "+0.006 * IIIIIIIXZXIIXXIIIIII\n", - "+0.001 * IIIIIYZZZYIYZYIIIIII\n", - "+0.001 * IIIIIXZZZXIYZYIIIIII\n", - "+0.001 * IIIIIYZZZYIXZXIIIIII\n", - "+0.001 * IIIIIXZZZXIXZXIIIIII\n", - "+0.000 * IIIIYZZZZYIYZYIIIIII\n", - "+0.000 * IIIIXZZZZXIYZYIIIIII\n", - "+0.000 * IIIIYZZZZYIXZXIIIIII\n", - "+0.000 * IIIIXZZZZXIXZXIIIIII\n", - "+0.009 * IIYZZZZZZYIIYYIIIIII\n", - "+0.009 * IIXZZZZZZXIIYYIIIIII\n", - "+0.009 * IIYZZZZZZYIIXXIIIIII\n", - "+0.009 * IIXZZZZZZXIIXXIIIIII\n", - "-0.009 * IYZZZZZZZYIIIZIIIIII\n", - "-0.009 * IXZZZZZZZXIIIZIIIIII\n", - "+0.118 * IIIIIIIIZIIIIZIIIIII\n", - "-0.000 * IIIIIIIYYIIIIZIIIIII\n", - "-0.000 * IIIIIIIXXIIIIZIIIIII\n", - "-0.000 * IIIIIIYZYIIYZYIIIIII\n", - "-0.000 * IIIIIIXZXIIYZYIIIIII\n", - "-0.000 * IIIIIIYZYIIXZXIIIIII\n", - "-0.000 * IIIIIIXZXIIXZXIIIIII\n", - "-0.009 * IIIYZZZZYIIIIZIIIIII\n", - "-0.009 * IIIXZZZZXIIIIZIIIIII\n", - "-0.001 * IIYZZZZZYIIIIZIIIIII\n", - "-0.001 * IIXZZZZZXIIIIZIIIIII\n", - "+0.000 * IYZZZZZZYIIIYYIIIIII\n", - "+0.000 * IXZZZZZZXIIIYYIIIIII\n", - "+0.000 * IYZZZZZZYIIIXXIIIIII\n", - "+0.000 * IXZZZZZZXIIIXXIIIIII\n", - "+0.000 * YZZZZZZZYIIYZYIIIIII\n", - "+0.000 * XZZZZZZZXIIYZYIIIIII\n", - "+0.000 * YZZZZZZZYIIXZXIIIIII\n", - "+0.000 * XZZZZZZZXIIXZXIIIIII\n", - "+0.126 * IIIIIIIZIIIIIZIIIIII\n", - "-0.002 * IIIIIIYYIIIYZYIIIIII\n", - "-0.002 * IIIIIIXXIIIYZYIIIIII\n", - "-0.002 * IIIIIIYYIIIXZXIIIIII\n", - "-0.002 * IIIIIIXXIIIXZXIIIIII\n", - "+0.000 * IIIYZZZYIIIIIZIIIIII\n", - "+0.000 * IIIXZZZXIIIIIZIIIIII\n", - "-0.011 * IIYZZZZYIIIIIZIIIIII\n", - "-0.011 * IIXZZZZXIIIIIZIIIIII\n", - "+0.006 * IYZZZZZYIIIIYYIIIIII\n", - "+0.006 * IXZZZZZXIIIIYYIIIIII\n", - "+0.006 * IYZZZZZYIIIIXXIIIIII\n", - "+0.006 * IXZZZZZXIIIIXXIIIIII\n", - "+0.000 * YZZZZZZYIIIYZYIIIIII\n", - "+0.000 * XZZZZZZXIIIYZYIIIIII\n", - "+0.000 * YZZZZZZYIIIXZXIIIIII\n", - "+0.000 * XZZZZZZXIIIXZXIIIIII\n", - "+0.113 * IIIIIIZIIIIIIZIIIIII\n", - "+0.001 * IIIIIYYIIIIIYYIIIIII\n", - "+0.001 * IIIIIXXIIIIIYYIIIIII\n", - "+0.001 * IIIIIYYIIIIIXXIIIIII\n", - "+0.001 * IIIIIXXIIIIIXXIIIIII\n", - "+0.000 * IIIIYZYIIIIIYYIIIIII\n", - "+0.000 * IIIIXZXIIIIIYYIIIIII\n", - "+0.000 * IIIIYZYIIIIIXXIIIIII\n", - "+0.000 * IIIIXZXIIIIIXXIIIIII\n", - "-0.003 * IIYZZZYIIIIYZYIIIIII\n", - "-0.003 * IIXZZZXIIIIYZYIIIIII\n", - "-0.003 * IIYZZZYIIIIXZXIIIIII\n", - "-0.003 * IIXZZZXIIIIXZXIIIIII\n", - "+0.011 * YZZZZZYIIIIIIZIIIIII\n", - "+0.011 * XZZZZZXIIIIIIZIIIIII\n", - "+0.118 * IIIIIZIIIIIIIZIIIIII\n", - "-0.000 * IIIIYYIIIIIIIZIIIIII\n", - "-0.000 * IIIIXXIIIIIIIZIIIIII\n", - "+0.004 * IYZZZYIIIIIYZYIIIIII\n", - "+0.004 * IXZZZXIIIIIYZYIIIIII\n", - "+0.004 * IYZZZYIIIIIXZXIIIIII\n", - "+0.004 * IXZZZXIIIIIXZXIIIIII\n", - "+0.003 * YZZZZYIIIIIIYYIIIIII\n", - "+0.003 * XZZZZXIIIIIIYYIIIIII\n", - "+0.003 * YZZZZYIIIIIIXXIIIIII\n", - "+0.003 * XZZZZXIIIIIIXXIIIIII\n", - "+0.112 * IIIIZIIIIIIIIZIIIIII\n", - "+0.000 * IYZZYIIIIIIYZYIIIIII\n", - "+0.000 * IXZZXIIIIIIYZYIIIIII\n", - "+0.000 * IYZZYIIIIIIXZXIIIIII\n", - "+0.000 * IXZZXIIIIIIXZXIIIIII\n", - "+0.000 * YZZZYIIIIIIIYYIIIIII\n", - "+0.000 * XZZZXIIIIIIIYYIIIIII\n", - "+0.000 * YZZZYIIIIIIIXXIIIIII\n", - "+0.000 * XZZZXIIIIIIIXXIIIIII\n", - "+0.124 * IIIZIIIIIIIIIZIIIIII\n", - "+0.134 * IIZIIIIIIIIIIZIIIIII\n", - "+0.015 * IYYIIIIIIIIIYYIIIIII\n", - "+0.015 * IXXIIIIIIIIIYYIIIIII\n", - "+0.015 * IYYIIIIIIIIIXXIIIIII\n", - "+0.015 * IXXIIIIIIIIIXXIIIIII\n", - "+0.007 * YZYIIIIIIIIYZYIIIIII\n", - "+0.007 * XZXIIIIIIIIYZYIIIIII\n", - "+0.007 * YZYIIIIIIIIXZXIIIIII\n", - "+0.007 * XZXIIIIIIIIXZXIIIIII\n", - "+0.129 * IZIIIIIIIIIIIZIIIIII\n", - "+0.139 * ZIIIIIIIIIIIIZIIIIII\n", - "+0.108 * IIIIIIIIIIIZZIIIIIII\n", - "+0.133 * ZZZZZZZZZZZIZIIIIIII\n", - "+0.045 * ZZZZZZZZZZXYYIIIIIII\n", - "-0.045 * IIIIIIIIIIXYYIIIIIII\n", - "+0.045 * ZZZZZZZZZZXXXIIIIIII\n", - "-0.045 * IIIIIIIIIIXXXIIIIIII\n", - "+0.012 * ZZZZZZZZZXIIZIIIIIII\n", - "-0.012 * IIIIIIIIIXZIZIIIIIII\n", - "+0.004 * ZZZZZZXIIIIYYIIIIIII\n", - "-0.004 * IIIIIIXZZZZYYIIIIIII\n", - "+0.004 * ZZZZZZXIIIIXXIIIIIII\n", - "-0.004 * IIIIIIXZZZZXXIIIIIII\n", - "-0.010 * ZXIIIIIIIIIIZIIIIIII\n", - "+0.010 * IXZZZZZZZZZIZIIIIIII\n", - "+0.012 * XIIIIIIIIIIYYIIIIIII\n", - "-0.012 * XZZZZZZZZZZYYIIIIIII\n", - "+0.012 * XIIIIIIIIIIXXIIIIIII\n", - "-0.012 * XZZZZZZZZZZXXIIIIIII\n", - "+0.132 * IIIIIIIIIIZIZIIIIIII\n", - "+0.007 * IIIIIIIIIYYYYIIIIIII\n", - "+0.007 * IIIIIIIIIXXYYIIIIIII\n", - "+0.007 * IIIIIIIIIYYXXIIIIIII\n", - "+0.007 * IIIIIIIIIXXXXIIIIIII\n", - "-0.016 * IIIIIIYZZZYIZIIIIIII\n", - "-0.016 * IIIIIIXZZZXIZIIIIIII\n", - "+0.020 * IYZZZZZZZZYYYIIIIIII\n", - "+0.020 * IXZZZZZZZZXYYIIIIIII\n", - "+0.020 * IYZZZZZZZZYXXIIIIIII\n", - "+0.020 * IXZZZZZZZZXXXIIIIIII\n", - "-0.005 * YZZZZZZZZZYIZIIIIIII\n", - "-0.005 * XZZZZZZZZZXIZIIIIIII\n", - "+0.115 * IIIIIIIIIZIIZIIIIIII\n", - "-0.040 * IIIIIIYZZYIYYIIIIIII\n", - "-0.040 * IIIIIIXZZXIYYIIIIIII\n", - "-0.040 * IIIIIIYZZYIXXIIIIIII\n", - "-0.040 * IIIIIIXZZXIXXIIIIIII\n", - "-0.005 * IYZZZZZZZYIIZIIIIIII\n", - "-0.005 * IXZZZZZZZXIIZIIIIIII\n", - "-0.002 * YZZZZZZZZYIYYIIIIIII\n", - "-0.002 * XZZZZZZZZXIYYIIIIIII\n", - "-0.002 * YZZZZZZZZYIXXIIIIIII\n", - "-0.002 * XZZZZZZZZXIXXIIIIIII\n", - "+0.124 * IIIIIIIIZIIIZIIIIIII\n", - "-0.001 * IIIIIYZZYIIYYIIIIIII\n", - "-0.001 * IIIIIXZZXIIYYIIIIIII\n", - "-0.001 * IIIIIYZZYIIXXIIIIIII\n", - "-0.001 * IIIIIXZZXIIXXIIIIIII\n", - "-0.037 * IIIIYZZZYIIYYIIIIIII\n", - "-0.037 * IIIIXZZZXIIYYIIIIIII\n", - "-0.037 * IIIIYZZZYIIXXIIIIIII\n", - "-0.037 * IIIIXZZZXIIXXIIIIIII\n", - "-0.006 * IIIYZZZZYIIIZIIIIIII\n", - "-0.006 * IIIXZZZZXIIIZIIIIIII\n", - "-0.000 * IIYZZZZZYIIIZIIIIIII\n", - "-0.000 * IIXZZZZZXIIIZIIIIIII\n", - "+0.124 * IIIIIIIZIIIIZIIIIIII\n", - "-0.037 * IIIIIYZYIIIYYIIIIIII\n", - "-0.037 * IIIIIXZXIIIYYIIIIIII\n", - "-0.037 * IIIIIYZYIIIXXIIIIIII\n", - "-0.037 * IIIIIXZXIIIXXIIIIIII\n", - "+0.001 * IIIIYZZYIIIYYIIIIIII\n", - "+0.001 * IIIIXZZXIIIYYIIIIIII\n", - "+0.001 * IIIIYZZYIIIXXIIIIIII\n", - "+0.001 * IIIIXZZXIIIXXIIIIIII\n", - "+0.000 * IIIYZZZYIIIIZIIIIIII\n", - "+0.000 * IIIXZZZXIIIIZIIIIIII\n", - "-0.006 * IIYZZZZYIIIIZIIIIIII\n", - "-0.006 * IIXZZZZXIIIIZIIIIIII\n", - "+0.118 * IIIIIIZIIIIIZIIIIIII\n", - "+0.019 * IYZZZZYIIIIYYIIIIIII\n", - "+0.019 * IXZZZZXIIIIYYIIIIIII\n", - "+0.019 * IYZZZZYIIIIXXIIIIIII\n", - "+0.019 * IXZZZZXIIIIXXIIIIIII\n", - "+0.006 * YZZZZZYIIIIIZIIIIIII\n", - "+0.006 * XZZZZZXIIIIIZIIIIIII\n", - "+0.119 * IIIIIZIIIIIIZIIIIIII\n", - "-0.001 * IIIYZYIIIIIYYIIIIIII\n", - "-0.001 * IIIXZXIIIIIYYIIIIIII\n", - "-0.001 * IIIYZYIIIIIXXIIIIIII\n", - "-0.001 * IIIXZXIIIIIXXIIIIIII\n", - "+0.030 * IIYZZYIIIIIYYIIIIIII\n", - "+0.030 * IIXZZXIIIIIYYIIIIIII\n", - "+0.030 * IIYZZYIIIIIXXIIIIIII\n", - "+0.030 * IIXZZXIIIIIXXIIIIIII\n", - "+0.119 * IIIIZIIIIIIIZIIIIIII\n", - "+0.030 * IIIYYIIIIIIYYIIIIIII\n", - "+0.030 * IIIXXIIIIIIYYIIIIIII\n", - "+0.030 * IIIYYIIIIIIXXIIIIIII\n", - "+0.030 * IIIXXIIIIIIXXIIIIIII\n", - "+0.001 * IIYZYIIIIIIYYIIIIIII\n", - "+0.001 * IIXZXIIIIIIYYIIIIIII\n", - "+0.001 * IIYZYIIIIIIXXIIIIIII\n", - "+0.001 * IIXZXIIIIIIXXIIIIIII\n", - "+0.129 * IIIZIIIIIIIIZIIIIIII\n", - "+0.129 * IIZIIIIIIIIIZIIIIIII\n", - "+0.138 * IZIIIIIIIIIIZIIIIIII\n", - "+0.039 * YYIIIIIIIIIYYIIIIIII\n", - "+0.039 * XXIIIIIIIIIYYIIIIIII\n", - "+0.039 * YYIIIIIIIIIXXIIIIIII\n", - "+0.039 * XXIIIIIIIIIXXIIIIIII\n", - "+0.147 * ZIIIIIIIIIIIZIIIIIII\n", - "+0.143 * ZZZZZZZZZZZZIIIIIIII\n", - "+0.018 * ZZZZZZZZZXIZIIIIIIII\n", - "-0.018 * IIIIIIIIIXZZIIIIIIII\n", - "-0.009 * ZXIIIIIIIIIZIIIIIIII\n", - "+0.009 * IXZZZZZZZZZZIIIIIIII\n", - "+0.143 * IIIIIIIIIIZZIIIIIIII\n", - "-0.024 * IIIIIIYZZZYZIIIIIIII\n", - "-0.024 * IIIIIIXZZZXZIIIIIIII\n", - "+0.002 * YZZZZZZZZZYZIIIIIIII\n", - "+0.002 * XZZZZZZZZZXZIIIIIIII\n", - "+0.120 * IIIIIIIIIZIZIIIIIIII\n", - "-0.009 * IYZZZZZZZYIZIIIIIIII\n", - "-0.009 * IXZZZZZZZXIZIIIIIIII\n", - "+0.132 * IIIIIIIIZIIZIIIIIIII\n", - "-0.011 * IIIYZZZZYIIZIIIIIIII\n", - "-0.011 * IIIXZZZZXIIZIIIIIIII\n", - "-0.001 * IIYZZZZZYIIZIIIIIIII\n", - "-0.001 * IIXZZZZZXIIZIIIIIIII\n", - "+0.132 * IIIIIIIZIIIZIIIIIIII\n", - "+0.001 * IIIYZZZYIIIZIIIIIIII\n", - "+0.001 * IIIXZZZXIIIZIIIIIIII\n", - "-0.011 * IIYZZZZYIIIZIIIIIIII\n", - "-0.011 * IIXZZZZXIIIZIIIIIIII\n", - "+0.126 * IIIIIIZIIIIZIIIIIIII\n", - "+0.016 * YZZZZZYIIIIZIIIIIIII\n", - "+0.016 * XZZZZZXIIIIZIIIIIIII\n", - "+0.124 * IIIIIZIIIIIZIIIIIIII\n", - "+0.124 * IIIIZIIIIIIZIIIIIIII\n", - "+0.139 * IIIZIIIIIIIZIIIIIIII\n", - "+0.139 * IIZIIIIIIIIZIIIIIIII\n", - "+0.147 * IZIIIIIIIIIZIIIIIIII\n", - "+0.171 * ZIIIIIIIIIIZIIIIIIII\n", - "+0.077 * ZZZZZZZZZZIIIIIIIIII\n", - "+0.011 * ZZZZZZXIIIXIIIIIIIII\n", - "+0.011 * ZZZZZZYIIIYIIIIIIIII\n", - "-0.008 * XIIIIIIIIIXIIIIIIIII\n", - "-0.008 * YIIIIIIIIIYIIIIIIIII\n", - "+0.097 * ZZZZZZZZZIZIIIIIIIII\n", - "+0.001 * ZXIIIIIIIXZIIIIIIIII\n", - "+0.001 * ZYIIIIIIIYZIIIIIIIII\n", - "+0.105 * ZZZZZZZZIZZIIIIIIIII\n", - "+0.002 * ZZZXIIIIXZZIIIIIIIII\n", - "+0.002 * ZZZYIIIIYZZIIIIIIIII\n", - "+0.000 * ZZXIIIIIXZZIIIIIIIII\n", - "+0.000 * ZZYIIIIIYZZIIIIIIIII\n", - "+0.105 * ZZZZZZZIZZZIIIIIIIII\n", - "-0.000 * ZZZXIIIXZZZIIIIIIIII\n", - "-0.000 * ZZZYIIIYZZZIIIIIIIII\n", - "+0.002 * ZZXIIIIXZZZIIIIIIIII\n", - "+0.002 * ZZYIIIIYZZZIIIIIIIII\n", - "+0.105 * ZZZZZZIZZZZIIIIIIIII\n", - "-0.006 * XIIIIIXZZZZIIIIIIIII\n", - "-0.006 * YIIIIIYZZZZIIIIIIIII\n", - "+0.107 * ZZZZZIZZZZZIIIIIIIII\n", - "+0.107 * ZZZZIZZZZZZIIIIIIIII\n", - "+0.116 * ZZZIZZZZZZZIIIIIIIII\n", - "+0.116 * ZZIZZZZZZZZIIIIIIIII\n", - "+0.116 * ZIZZZZZZZZZIIIIIIIII\n", - "+0.130 * IZZZZZZZZZZIIIIIIIII\n", - "+0.016 * ZZZZZZZZZXZIIIIIIIII\n", - "-0.016 * IIIIIIIIIXIIIIIIIIII\n", - "+0.008 * ZXIIIIIIIIZIIIIIIIII\n", - "-0.008 * IXZZZZZZZZIIIIIIIIII\n", - "+0.005 * ZZZZZZXIIYYIIIIIIIII\n", - "+0.037 * ZZZZZZXIIXXIIIIIIIII\n", - "+0.032 * ZZZZZZYIIYXIIIIIIIII\n", - "+0.032 * IIIIIIYZZYXIIIIIIIII\n", - "+0.037 * IIIIIIXZZXXIIIIIIIII\n", - "+0.005 * IIIIIIXZZYYIIIIIIIII\n", - "-0.002 * XIIIIIIIIYYIIIIIIIII\n", - "+0.005 * XIIIIIIIIXXIIIIIIIII\n", - "+0.007 * YIIIIIIIIYXIIIIIIIII\n", - "+0.007 * YZZZZZZZZYXIIIIIIIII\n", - "+0.005 * XZZZZZZZZXXIIIIIIIII\n", - "-0.002 * XZZZZZZZZYYIIIIIIIII\n", - "+0.000 * ZZZZZXIIYZYIIIIIIIII\n", - "+0.001 * ZZZZZXIIXZXIIIIIIIII\n", - "+0.001 * ZZZZZYIIYZXIIIIIIIII\n", - "+0.001 * IIIIIYZZYIXIIIIIIIII\n", - "+0.001 * IIIIIXZZXIXIIIIIIIII\n", - "+0.000 * IIIIIXZZYIYIIIIIIIII\n", - "+0.003 * ZZZZXIIIYZYIIIIIIIII\n", - "+0.034 * ZZZZXIIIXZXIIIIIIIII\n", - "+0.031 * ZZZZYIIIYZXIIIIIIIII\n", - "+0.031 * IIIIYZZZYIXIIIIIIIII\n", - "+0.034 * IIIIXZZZXIXIIIIIIIII\n", - "+0.003 * IIIIXZZZYIYIIIIIIIII\n", - "+0.003 * ZZZZZXIYZZYIIIIIIIII\n", - "+0.034 * ZZZZZXIXZZXIIIIIIIII\n", - "+0.031 * ZZZZZYIYZZXIIIIIIIII\n", - "+0.031 * IIIIIYZYIIXIIIIIIIII\n", - "+0.034 * IIIIIXZXIIXIIIIIIIII\n", - "+0.003 * IIIIIXZYIIYIIIIIIIII\n", - "-0.000 * ZZZZXIIYZZYIIIIIIIII\n", - "-0.001 * ZZZZXIIXZZXIIIIIIIII\n", - "-0.001 * ZZZZYIIYZZXIIIIIIIII\n", - "-0.001 * IIIIYZZYIIXIIIIIIIII\n", - "-0.001 * IIIIXZZXIIXIIIIIIIII\n", - "-0.000 * IIIIXZZYIIYIIIIIIIII\n", - "-0.003 * ZXIIIIYZZZYIIIIIIIII\n", - "-0.021 * ZXIIIIXZZZXIIIIIIIII\n", - "-0.017 * ZYIIIIYZZZXIIIIIIIII\n", - "-0.017 * IYZZZZYIIIXIIIIIIIII\n", - "-0.021 * IXZZZZXIIIXIIIIIIIII\n", - "-0.003 * IXZZZZYIIIYIIIIIIIII\n", - "+0.000 * ZZZXIYZZZZYIIIIIIIII\n", - "+0.001 * ZZZXIXZZZZXIIIIIIIII\n", - "+0.001 * ZZZYIYZZZZXIIIIIIIII\n", - "+0.001 * IIIYZYIIIIXIIIIIIIII\n", - "+0.001 * IIIXZXIIIIXIIIIIIIII\n", - "+0.000 * IIIXZYIIIIYIIIIIIIII\n", - "-0.002 * ZZXIIYZZZZYIIIIIIIII\n", - "-0.031 * ZZXIIXZZZZXIIIIIIIII\n", - "-0.029 * ZZYIIYZZZZXIIIIIIIII\n", - "-0.029 * IIYZZYIIIIXIIIIIIIII\n", - "-0.031 * IIXZZXIIIIXIIIIIIIII\n", - "-0.002 * IIXZZYIIIIYIIIIIIIII\n", - "-0.002 * ZZZXYZZZZZYIIIIIIIII\n", - "-0.031 * ZZZXXZZZZZXIIIIIIIII\n", - "-0.029 * ZZZYYZZZZZXIIIIIIIII\n", - "-0.029 * IIIYYIIIIIXIIIIIIIII\n", - "-0.031 * IIIXXIIIIIXIIIIIIIII\n", - "-0.002 * IIIXYIIIIIYIIIIIIIII\n", - "-0.000 * ZZXIYZZZZZYIIIIIIIII\n", - "-0.001 * ZZXIXZZZZZXIIIIIIIII\n", - "-0.001 * ZZYIYZZZZZXIIIIIIIII\n", - "-0.001 * IIYZYIIIIIXIIIIIIIII\n", - "-0.001 * IIXZXIIIIIXIIIIIIIII\n", - "-0.000 * IIXZYIIIIIYIIIIIIIII\n", - "-0.002 * XYZZZZZZZZYIIIIIIIII\n", - "-0.032 * XXZZZZZZZZXIIIIIIIII\n", - "-0.030 * YYZZZZZZZZXIIIIIIIII\n", - "-0.030 * YYIIIIIIIIXIIIIIIIII\n", - "-0.032 * XXIIIIIIIIXIIIIIIIII\n", - "-0.002 * XYIIIIIIIIYIIIIIIIII\n", - "-0.017 * ZXIIIIIIIZIIIIIIIIII\n", - "+0.017 * IXZZZZZZZIZIIIIIIIII\n", - "+0.007 * ZZZZZZZZIXIIIIIIIIII\n", - "-0.007 * IIIIIIIIZXZIIIIIIIII\n", - "+0.006 * ZZZXIIIIYYIIIIIIIIII\n", - "+0.010 * ZZZXIIIIXXIIIIIIIIII\n", - "+0.004 * ZZZYIIIIYXIIIIIIIIII\n", - "+0.004 * IIIYZZZZYXZIIIIIIIII\n", - "+0.010 * IIIXZZZZXXZIIIIIIIII\n", - "+0.006 * IIIXZZZZYYZIIIIIIIII\n", - "+0.000 * ZZXIIIIIYYIIIIIIIIII\n", - "+0.001 * ZZXIIIIIXXIIIIIIIIII\n", - "+0.000 * ZZYIIIIIYXIIIIIIIIII\n", - "+0.000 * IIYZZZZZYXZIIIIIIIII\n", - "+0.001 * IIXZZZZZXXZIIIIIIIII\n", - "+0.000 * IIXZZZZZYYZIIIIIIIII\n", - "+0.007 * ZZZZZZZIZXIIIIIIIIII\n", - "-0.007 * IIIIIIIZIXZIIIIIIIII\n", - "-0.000 * ZZZXIIIYZYIIIIIIIIII\n", - "-0.001 * ZZZXIIIXZXIIIIIIIIII\n", - "-0.000 * ZZZYIIIYZXIIIIIIIIII\n", - "-0.000 * IIIYZZZYIXZIIIIIIIII\n", - "-0.001 * IIIXZZZXIXZIIIIIIIII\n", - "-0.000 * IIIXZZZYIYZIIIIIIIII\n", - "+0.006 * ZZXIIIIYZYIIIIIIIIII\n", - "+0.010 * ZZXIIIIXZXIIIIIIIIII\n", - "+0.004 * ZZYIIIIYZXIIIIIIIIII\n", - "+0.004 * IIYZZZZYIXZIIIIIIIII\n", - "+0.010 * IIXZZZZXIXZIIIIIIIII\n", - "+0.006 * IIXZZZZYIYZIIIIIIIII\n", - "+0.004 * ZZZZZZIZZXIIIIIIIIII\n", - "-0.004 * IIIIIIZIIXZIIIIIIIII\n", - "-0.016 * XIIIIIYZZYIIIIIIIIII\n", - "-0.021 * XIIIIIXZZXIIIIIIIIII\n", - "-0.006 * YIIIIIYZZXIIIIIIIIII\n", - "-0.006 * YZZZZZYIIXZIIIIIIIII\n", - "-0.021 * XZZZZZXIIXZIIIIIIIII\n", - "-0.016 * XZZZZZYIIYZIIIIIIIII\n", - "+0.001 * ZZZZZIZZZXIIIIIIIIII\n", - "-0.001 * IIIIIZIIIXZIIIIIIIII\n", - "+0.001 * ZZZZIZZZZXIIIIIIIIII\n", - "-0.001 * IIIIZIIIIXZIIIIIIIII\n", - "+0.011 * ZZZIZZZZZXIIIIIIIIII\n", - "-0.011 * IIIZIIIIIXZIIIIIIIII\n", - "+0.011 * ZZIZZZZZZXIIIIIIIIII\n", - "-0.011 * IIZIIIIIIXZIIIIIIIII\n", - "+0.005 * ZIZZZZZZZXIIIIIIIIII\n", - "-0.005 * IZIIIIIIIXZIIIIIIIII\n", - "+0.014 * IZZZZZZZZXIIIIIIIIII\n", - "-0.014 * ZIIIIIIIIXZIIIIIIIII\n", - "-0.009 * ZXIIIIIIZIIIIIIIIIII\n", - "+0.009 * IXZZZZZZIZZIIIIIIIII\n", - "-0.000 * ZZZZZXYZYIIIIIIIIIII\n", - "-0.000 * ZZZZZXXZXIIIIIIIIIII\n", - "+0.000 * ZZZZZYYZXIIIIIIIIIII\n", - "+0.000 * IIIIIYYIXZZIIIIIIIII\n", - "-0.000 * IIIIIXXIXZZIIIIIIIII\n", - "-0.000 * IIIIIXYIYZZIIIIIIIII\n", - "-0.001 * ZZZZXIYZYIIIIIIIIIII\n", - "-0.001 * ZZZZXIXZXIIIIIIIIIII\n", - "+0.000 * ZZZZYIYZXIIIIIIIIIII\n", - "+0.000 * IIIIYZYIXZZIIIIIIIII\n", - "-0.001 * IIIIXZXIXZZIIIIIIIII\n", - "-0.001 * IIIIXZYIYZZIIIIIIIII\n", - "-0.000 * XIIIIYZZYIIIIIIIIIII\n", - "-0.000 * XIIIIXZZXIIIIIIIIIII\n", - "+0.000 * YIIIIYZZXIIIIIIIIIII\n", - "+0.000 * YZZZZYIIXZZIIIIIIIII\n", - "-0.000 * XZZZZXIIXZZIIIIIIIII\n", - "-0.000 * XZZZZYIIYZZIIIIIIIII\n", - "-0.010 * XIIIYZZZYIIIIIIIIIII\n", - "-0.009 * XIIIXZZZXIIIIIIIIIII\n", - "+0.002 * YIIIYZZZXIIIIIIIIIII\n", - "+0.002 * YZZZYIIIXZZIIIIIIIII\n", - "-0.009 * XZZZXIIIXZZIIIIIIIII\n", - "-0.010 * XZZZYIIIYZZIIIIIIIII\n", - "-0.007 * ZXIYZZZZYIIIIIIIIIII\n", - "-0.001 * ZXIXZZZZXIIIIIIIIIII\n", - "+0.006 * ZYIYZZZZXIIIIIIIIIII\n", - "+0.006 * IYZYIIIIXZZIIIIIIIII\n", - "-0.001 * IXZXIIIIXZZIIIIIIIII\n", - "-0.007 * IXZYIIIIYZZIIIIIIIII\n", - "-0.000 * ZXYZZZZZYIIIIIIIIIII\n", - "-0.000 * ZXXZZZZZXIIIIIIIIIII\n", - "+0.000 * ZYYZZZZZXIIIIIIIIIII\n", - "+0.000 * IYYIIIIIXZZIIIIIIIII\n", - "-0.000 * IXXIIIIIXZZIIIIIIIII\n", - "-0.000 * IXYIIIIIYZZIIIIIIIII\n", - "-0.009 * ZXIIIIIZIIIIIIIIIIII\n", - "+0.009 * IXZZZZZIZZZIIIIIIIII\n", - "-0.001 * ZZZZZXYYIIIIIIIIIIII\n", - "-0.001 * ZZZZZXXXIIIIIIIIIIII\n", - "+0.000 * ZZZZZYYXIIIIIIIIIIII\n", - "+0.000 * IIIIIYYXZZZIIIIIIIII\n", - "-0.001 * IIIIIXXXZZZIIIIIIIII\n", - "-0.001 * IIIIIXYYZZZIIIIIIIII\n", - "+0.000 * ZZZZXIYYIIIIIIIIIIII\n", - "+0.000 * ZZZZXIXXIIIIIIIIIIII\n", - "-0.000 * ZZZZYIYXIIIIIIIIIIII\n", - "-0.000 * IIIIYZYXZZZIIIIIIIII\n", - "+0.000 * IIIIXZXXZZZIIIIIIIII\n", - "+0.000 * IIIIXZYYZZZIIIIIIIII\n", - "-0.010 * XIIIIYZYIIIIIIIIIIII\n", - "-0.009 * XIIIIXZXIIIIIIIIIIII\n", - "+0.002 * YIIIIYZXIIIIIIIIIIII\n", - "+0.002 * YZZZZYIXZZZIIIIIIIII\n", - "-0.009 * XZZZZXIXZZZIIIIIIIII\n", - "-0.010 * XZZZZYIYZZZIIIIIIIII\n", - "+0.000 * XIIIYZZYIIIIIIIIIIII\n", - "+0.000 * XIIIXZZXIIIIIIIIIIII\n", - "-0.000 * YIIIYZZXIIIIIIIIIIII\n", - "-0.000 * YZZZYIIXZZZIIIIIIIII\n", - "+0.000 * XZZZXIIXZZZIIIIIIIII\n", - "+0.000 * XZZZYIIYZZZIIIIIIIII\n", - "+0.000 * ZXIYZZZYIIIIIIIIIIII\n", - "+0.000 * ZXIXZZZXIIIIIIIIIIII\n", - "-0.000 * ZYIYZZZXIIIIIIIIIIII\n", - "-0.000 * IYZYIIIXZZZIIIIIIIII\n", - "+0.000 * IXZXIIIXZZZIIIIIIIII\n", - "+0.000 * IXZYIIIYZZZIIIIIIIII\n", - "-0.007 * ZXYZZZZYIIIIIIIIIIII\n", - "-0.001 * ZXXZZZZXIIIIIIIIIIII\n", - "+0.006 * ZYYZZZZXIIIIIIIIIIII\n", - "+0.006 * IYYIIIIXZZZIIIIIIIII\n", - "-0.001 * IXXIIIIXZZZIIIIIIIII\n", - "-0.007 * IXYIIIIYZZZIIIIIIIII\n", - "-0.013 * ZXIIIIZIIIIIIIIIIIII\n", - "+0.013 * IXZZZZIZZZZIIIIIIIII\n", - "-0.000 * ZZZXIYYIIIIIIIIIIIII\n", - "-0.000 * ZZZXIXXIIIIIIIIIIIII\n", - "-0.000 * ZZZYIYXIIIIIIIIIIIII\n", - "-0.000 * IIIYZYXZZZZIIIIIIIII\n", - "-0.000 * IIIXZXXZZZZIIIIIIIII\n", - "-0.000 * IIIXZYYZZZZIIIIIIIII\n", - "+0.002 * ZZXIIYYIIIIIIIIIIIII\n", - "+0.002 * ZZXIIXXIIIIIIIIIIIII\n", - "+0.000 * ZZYIIYXIIIIIIIIIIIII\n", - "+0.000 * IIYZZYXZZZZIIIIIIIII\n", - "+0.002 * IIXZZXXZZZZIIIIIIIII\n", - "+0.002 * IIXZZYYZZZZIIIIIIIII\n", - "+0.002 * ZZZXYZYIIIIIIIIIIIII\n", - "+0.002 * ZZZXXZXIIIIIIIIIIIII\n", - "+0.000 * ZZZYYZXIIIIIIIIIIIII\n", - "+0.000 * IIIYYIXZZZZIIIIIIIII\n", - "+0.002 * IIIXXIXZZZZIIIIIIIII\n", - "+0.002 * IIIXYIYZZZZIIIIIIIII\n", - "+0.000 * ZZXIYZYIIIIIIIIIIIII\n", - "+0.000 * ZZXIXZXIIIIIIIIIIIII\n", - "+0.000 * ZZYIYZXIIIIIIIIIIIII\n", - "+0.000 * IIYZYIXZZZZIIIIIIIII\n", - "+0.000 * IIXZXIXZZZZIIIIIIIII\n", - "+0.000 * IIXZYIYZZZZIIIIIIIII\n", - "+0.001 * XYZZZZYIIIIIIIIIIIII\n", - "+0.004 * XXZZZZXIIIIIIIIIIIII\n", - "+0.003 * YYZZZZXIIIIIIIIIIIII\n", - "+0.003 * YYIIIIXZZZZIIIIIIIII\n", - "+0.004 * XXIIIIXZZZZIIIIIIIII\n", - "+0.001 * XYIIIIYZZZZIIIIIIIII\n", - "-0.011 * ZXIIIZIIIIIIIIIIIIII\n", - "+0.011 * IXZZZIZZZZZIIIIIIIII\n", - "-0.000 * XIIYZYIIIIIIIIIIIIII\n", - "-0.000 * XIIXZXIIIIIIIIIIIIII\n", - "+0.000 * YIIYZXIIIIIIIIIIIIII\n", - "+0.000 * YZZYIXZZZZZIIIIIIIII\n", - "-0.000 * XZZXIXZZZZZIIIIIIIII\n", - "-0.000 * XZZYIYZZZZZIIIIIIIII\n", - "+0.009 * XIYZZYIIIIIIIIIIIIII\n", - "+0.007 * XIXZZXIIIIIIIIIIIIII\n", - "-0.003 * YIYZZXIIIIIIIIIIIIII\n", - "-0.003 * YZYIIXZZZZZIIIIIIIII\n", - "+0.007 * XZXIIXZZZZZIIIIIIIII\n", - "+0.009 * XZYIIYZZZZZIIIIIIIII\n", - "-0.011 * ZXIIZIIIIIIIIIIIIIII\n", - "+0.011 * IXZZIZZZZZZIIIIIIIII\n", - "+0.009 * XIIYYIIIIIIIIIIIIIII\n", - "+0.007 * XIIXXIIIIIIIIIIIIIII\n", - "-0.003 * YIIYXIIIIIIIIIIIIIII\n", - "-0.003 * YZZYXZZZZZZIIIIIIIII\n", - "+0.007 * XZZXXZZZZZZIIIIIIIII\n", - "+0.009 * XZZYYZZZZZZIIIIIIIII\n", - "+0.000 * XIYZYIIIIIIIIIIIIIII\n", - "+0.000 * XIXZXIIIIIIIIIIIIIII\n", - "-0.000 * YIYZXIIIIIIIIIIIIIII\n", - "-0.000 * YZYIXZZZZZZIIIIIIIII\n", - "+0.000 * XZXIXZZZZZZIIIIIIIII\n", - "+0.000 * XZYIYZZZZZZIIIIIIIII\n", - "-0.006 * ZXIZIIIIIIIIIIIIIIII\n", - "+0.006 * IXZIZZZZZZZIIIIIIIII\n", - "-0.006 * ZXZIIIIIIIIIIIIIIIII\n", - "+0.006 * IXIZZZZZZZZIIIIIIIII\n", - "+0.003 * IXIIIIIIIIIIIIIIIIII\n", - "-0.003 * ZXZZZZZZZZZIIIIIIIII\n", - "+0.101 * IIIIIIIIIZZIIIIIIIII\n", - "+0.000 * IYZZZZZZZYZIIIIIIIII\n", - "+0.000 * IXZZZZZZZXZIIIIIIIII\n", - "+0.109 * IIIIIIIIZIZIIIIIIIII\n", - "-0.003 * IIIYZZZZYIZIIIIIIIII\n", - "-0.003 * IIIXZZZZXIZIIIIIIIII\n", - "-0.000 * IIYZZZZZYIZIIIIIIIII\n", - "-0.000 * IIXZZZZZXIZIIIIIIIII\n", - "+0.109 * IIIIIIIZIIZIIIIIIIII\n", - "+0.000 * IIIYZZZYIIZIIIIIIIII\n", - "+0.000 * IIIXZZZXIIZIIIIIIIII\n", - "-0.003 * IIYZZZZYIIZIIIIIIIII\n", - "-0.003 * IIXZZZZXIIZIIIIIIIII\n", - "+0.102 * IIIIIIZIIIZIIIIIIIII\n", - "+0.000 * YZZZZZYIIIZIIIIIIIII\n", - "+0.000 * XZZZZZXIIIZIIIIIIIII\n", - "+0.108 * IIIIIZIIIIZIIIIIIIII\n", - "+0.108 * IIIIZIIIIIZIIIIIIIII\n", - "+0.117 * IIIZIIIIIIZIIIIIIIII\n", - "+0.117 * IIZIIIIIIIZIIIIIIIII\n", - "+0.116 * IZIIIIIIIIZIIIIIIIII\n", - "+0.127 * ZIIIIIIIIIZIIIIIIIII\n", - "-0.017 * IIIIIIYZZIYIIIIIIIII\n", - "-0.017 * IIIIIIXZZIXIIIIIIIII\n", - "-0.010 * YZZZZZZZZIYIIIIIIIII\n", - "-0.010 * XZZZZZZZZIXIIIIIIIII\n", - "-0.000 * IIIIIYZZXXYIIIIIIIII\n", - "-0.000 * IIIIIYZZYYYIIIIIIIII\n", - "-0.000 * IIIIIXZZXYYIIIIIIIII\n", - "-0.000 * IIIIIYZZYXXIIIIIIIII\n", - "-0.000 * IIIIIXZZXXXIIIIIIIII\n", - "-0.000 * IIIIIXZZYYXIIIIIIIII\n", - "-0.003 * IIIIYZZZXXYIIIIIIIII\n", - "-0.011 * IIIIYZZZYYYIIIIIIIII\n", - "-0.008 * IIIIXZZZXYYIIIIIIIII\n", - "-0.008 * IIIIYZZZYXXIIIIIIIII\n", - "-0.011 * IIIIXZZZXXXIIIIIIIII\n", - "-0.003 * IIIIXZZZYYXIIIIIIIII\n", - "-0.003 * IIIIIYZXIXYIIIIIIIII\n", - "-0.011 * IIIIIYZYIYYIIIIIIIII\n", - "-0.008 * IIIIIXZXIYYIIIIIIIII\n", - "-0.008 * IIIIIYZYIXXIIIIIIIII\n", - "-0.011 * IIIIIXZXIXXIIIIIIIII\n", - "-0.003 * IIIIIXZYIYXIIIIIIIII\n", - "+0.000 * IIIIYZZXIXYIIIIIIIII\n", - "+0.000 * IIIIYZZYIYYIIIIIIIII\n", - "+0.000 * IIIIXZZXIYYIIIIIIIII\n", - "+0.000 * IIIIYZZYIXXIIIIIIIII\n", - "+0.000 * IIIIXZZXIXXIIIIIIIII\n", - "+0.000 * IIIIXZZYIYXIIIIIIIII\n", - "+0.023 * IYZZZZXIIXYIIIIIIIII\n", - "+0.023 * IYZZZZYIIYYIIIIIIIII\n", - "-0.001 * IXZZZZXIIYYIIIIIIIII\n", - "-0.001 * IYZZZZYIIXXIIIIIIIII\n", - "+0.023 * IXZZZZXIIXXIIIIIIIII\n", - "+0.023 * IXZZZZYIIYXIIIIIIIII\n", - "-0.000 * IIIYZXIIIXYIIIIIIIII\n", - "-0.000 * IIIYZYIIIYYIIIIIIIII\n", - "-0.000 * IIIXZXIIIYYIIIIIIIII\n", - "-0.000 * IIIYZYIIIXXIIIIIIIII\n", - "-0.000 * IIIXZXIIIXXIIIIIIIII\n", - "-0.000 * IIIXZYIIIYXIIIIIIIII\n", - "+0.005 * IIYZZXIIIXYIIIIIIIII\n", - "+0.009 * IIYZZYIIIYYIIIIIIIII\n", - "+0.005 * IIXZZXIIIYYIIIIIIIII\n", - "+0.005 * IIYZZYIIIXXIIIIIIIII\n", - "+0.009 * IIXZZXIIIXXIIIIIIIII\n", - "+0.005 * IIXZZYIIIYXIIIIIIIII\n", - "+0.005 * IIIYXIIIIXYIIIIIIIII\n", - "+0.009 * IIIYYIIIIYYIIIIIIIII\n", - "+0.005 * IIIXXIIIIYYIIIIIIIII\n", - "+0.005 * IIIYYIIIIXXIIIIIIIII\n", - "+0.009 * IIIXXIIIIXXIIIIIIIII\n", - "+0.005 * IIIXYIIIIYXIIIIIIIII\n", - "+0.000 * IIYZXIIIIXYIIIIIIIII\n", - "+0.000 * IIYZYIIIIYYIIIIIIIII\n", - "+0.000 * IIXZXIIIIYYIIIIIIIII\n", - "+0.000 * IIYZYIIIIXXIIIIIIIII\n", - "+0.000 * IIXZXIIIIXXIIIIIIIII\n", - "+0.000 * IIXZYIIIIYXIIIIIIIII\n", - "+0.007 * YXIIIIIIIXYIIIIIIIII\n", - "+0.014 * YYIIIIIIIYYIIIIIIIII\n", - "+0.007 * XXIIIIIIIYYIIIIIIIII\n", - "+0.007 * YYIIIIIIIXXIIIIIIIII\n", - "+0.014 * XXIIIIIIIXXIIIIIIIII\n", - "+0.007 * XYIIIIIIIYXIIIIIIIII\n", - "-0.012 * IIIIIIYZIZYIIIIIIIII\n", - "-0.012 * IIIIIIXZIZXIIIIIIIII\n", - "-0.000 * YZZZZZZZIZYIIIIIIIII\n", - "-0.000 * XZZZZZZZIZXIIIIIIIII\n", - "+0.010 * IIIYZZXIXZYIIIIIIIII\n", - "+0.002 * IIIYZZYIYZYIIIIIIIII\n", - "-0.008 * IIIXZZXIYZYIIIIIIIII\n", - "-0.008 * IIIYZZYIXZXIIIIIIIII\n", - "+0.002 * IIIXZZXIXZXIIIIIIIII\n", - "+0.010 * IIIXZZYIYZXIIIIIIIII\n", - "+0.001 * IIYZZZXIXZYIIIIIIIII\n", - "+0.000 * IIYZZZYIYZYIIIIIIIII\n", - "-0.000 * IIXZZZXIYZYIIIIIIIII\n", - "-0.000 * IIYZZZYIXZXIIIIIIIII\n", - "+0.000 * IIXZZZXIXZXIIIIIIIII\n", - "+0.001 * IIXZZZYIYZXIIIIIIIII\n", - "+0.001 * IYZZZXIIXZYIIIIIIIII\n", - "+0.000 * IYZZZYIIYZYIIIIIIIII\n", - "-0.000 * IXZZZXIIYZYIIIIIIIII\n", - "-0.000 * IYZZZYIIXZXIIIIIIIII\n", - "+0.000 * IXZZZXIIXZXIIIIIIIII\n", - "+0.001 * IXZZZYIIYZXIIIIIIIII\n", - "+0.017 * IYZZXIIIXZYIIIIIIIII\n", - "+0.013 * IYZZYIIIYZYIIIIIIIII\n", - "-0.003 * IXZZXIIIYZYIIIIIIIII\n", - "-0.003 * IYZZYIIIXZXIIIIIIIII\n", - "+0.013 * IXZZXIIIXZXIIIIIIIII\n", - "+0.017 * IXZZYIIIYZXIIIIIIIII\n", - "+0.011 * YZZXIIIIXZYIIIIIIIII\n", - "+0.008 * YZZYIIIIYZYIIIIIIIII\n", - "-0.003 * XZZXIIIIYZYIIIIIIIII\n", - "-0.003 * YZZYIIIIXZXIIIIIIIII\n", - "+0.008 * XZZXIIIIXZXIIIIIIIII\n", - "+0.011 * XZZYIIIIYZXIIIIIIIII\n", - "+0.001 * YZXIIIIIXZYIIIIIIIII\n", - "+0.000 * YZYIIIIIYZYIIIIIIIII\n", - "-0.000 * XZXIIIIIYZYIIIIIIIII\n", - "-0.000 * YZYIIIIIXZXIIIIIIIII\n", - "+0.000 * XZXIIIIIXZXIIIIIIIII\n", - "+0.001 * XZYIIIIIYZXIIIIIIIII\n", - "-0.012 * IIIIIIYIZZYIIIIIIIII\n", - "-0.012 * IIIIIIXIZZXIIIIIIIII\n", - "-0.000 * YZZZZZZIZZYIIIIIIIII\n", - "-0.000 * XZZZZZZIZZXIIIIIIIII\n", - "-0.001 * IIIYZZXXZZYIIIIIIIII\n", - "-0.000 * IIIYZZYYZZYIIIIIIIII\n", - "+0.000 * IIIXZZXYZZYIIIIIIIII\n", - "+0.000 * IIIYZZYXZZXIIIIIIIII\n", - "-0.000 * IIIXZZXXZZXIIIIIIIII\n", - "-0.001 * IIIXZZYYZZXIIIIIIIII\n", - "+0.010 * IIYZZZXXZZYIIIIIIIII\n", - "+0.002 * IIYZZZYYZZYIIIIIIIII\n", - "-0.008 * IIXZZZXYZZYIIIIIIIII\n", - "-0.008 * IIYZZZYXZZXIIIIIIIII\n", - "+0.002 * IIXZZZXXZZXIIIIIIIII\n", - "+0.010 * IIXZZZYYZZXIIIIIIIII\n", - "+0.017 * IYZZZXIXZZYIIIIIIIII\n", - "+0.013 * IYZZZYIYZZYIIIIIIIII\n", - "-0.003 * IXZZZXIYZZYIIIIIIIII\n", - "-0.003 * IYZZZYIXZZXIIIIIIIII\n", - "+0.013 * IXZZZXIXZZXIIIIIIIII\n", - "+0.017 * IXZZZYIYZZXIIIIIIIII\n", - "-0.001 * IYZZXIIXZZYIIIIIIIII\n", - "-0.000 * IYZZYIIYZZYIIIIIIIII\n", - "+0.000 * IXZZXIIYZZYIIIIIIIII\n", - "+0.000 * IYZZYIIXZZXIIIIIIIII\n", - "-0.000 * IXZZXIIXZZXIIIIIIIII\n", - "-0.001 * IXZZYIIYZZXIIIIIIIII\n", - "-0.001 * YZZXIIIXZZYIIIIIIIII\n", - "-0.000 * YZZYIIIYZZYIIIIIIIII\n", - "+0.000 * XZZXIIIYZZYIIIIIIIII\n", - "+0.000 * YZZYIIIXZZXIIIIIIIII\n", - "-0.000 * XZZXIIIXZZXIIIIIIIII\n", - "-0.001 * XZZYIIIYZZXIIIIIIIII\n", - "+0.011 * YZXIIIIXZZYIIIIIIIII\n", - "+0.008 * YZYIIIIYZZYIIIIIIIII\n", - "-0.003 * XZXIIIIYZZYIIIIIIIII\n", - "-0.003 * YZYIIIIXZZXIIIIIIIII\n", - "+0.008 * XZXIIIIXZZXIIIIIIIII\n", - "+0.011 * XZYIIIIYZZXIIIIIIIII\n", - "-0.016 * YZZZZZIZZZYIIIIIIIII\n", - "-0.016 * XZZZZZIZZZXIIIIIIIII\n", - "-0.005 * IIIIIZYZZZYIIIIIIIII\n", - "-0.005 * IIIIIZXZZZXIIIIIIIII\n", - "-0.005 * IIIIZIYZZZYIIIIIIIII\n", - "-0.005 * IIIIZIXZZZXIIIIIIIII\n", - "-0.015 * IIIZIIYZZZYIIIIIIIII\n", - "-0.015 * IIIZIIXZZZXIIIIIIIII\n", - "-0.015 * IIZIIIYZZZYIIIIIIIII\n", - "-0.015 * IIZIIIXZZZXIIIIIIIII\n", - "-0.007 * IZIIIIYZZZYIIIIIIIII\n", - "-0.007 * IZIIIIXZZZXIIIIIIIII\n", - "-0.014 * ZIIIIIYZZZYIIIIIIIII\n", - "-0.014 * ZIIIIIXZZZXIIIIIIIII\n", - "-0.007 * YZZZZIZZZZYIIIIIIIII\n", - "-0.007 * XZZZZIZZZZXIIIIIIIII\n", - "+0.000 * IYZXIXZZZZYIIIIIIIII\n", - "+0.000 * IYZYIYZZZZYIIIIIIIII\n", - "-0.000 * IXZXIYZZZZYIIIIIIIII\n", - "-0.000 * IYZYIXZZZZXIIIIIIIII\n", - "+0.000 * IXZXIXZZZZXIIIIIIIII\n", - "+0.000 * IXZYIYZZZZXIIIIIIIII\n", - "-0.012 * IYXIIXZZZZYIIIIIIIII\n", - "-0.006 * IYYIIYZZZZYIIIIIIIII\n", - "+0.005 * IXXIIYZZZZYIIIIIIIII\n", - "+0.005 * IYYIIXZZZZXIIIIIIIII\n", - "-0.006 * IXXIIXZZZZXIIIIIIIII\n", - "-0.012 * IXYIIYZZZZXIIIIIIIII\n", - "-0.007 * YZZZIZZZZZYIIIIIIIII\n", - "-0.007 * XZZZIZZZZZXIIIIIIIII\n", - "-0.012 * IYZXXZZZZZYIIIIIIIII\n", - "-0.006 * IYZYYZZZZZYIIIIIIIII\n", - "+0.005 * IXZXYZZZZZYIIIIIIIII\n", - "+0.005 * IYZYXZZZZZXIIIIIIIII\n", - "-0.006 * IXZXXZZZZZXIIIIIIIII\n", - "-0.012 * IXZYYZZZZZXIIIIIIIII\n", - "-0.000 * IYXIXZZZZZYIIIIIIIII\n", - "-0.000 * IYYIYZZZZZYIIIIIIIII\n", - "+0.000 * IXXIYZZZZZYIIIIIIIII\n", - "+0.000 * IYYIXZZZZZXIIIIIIIII\n", - "-0.000 * IXXIXZZZZZXIIIIIIIII\n", - "-0.000 * IXYIYZZZZZXIIIIIIIII\n", - "+0.004 * YZZIZZZZZZYIIIIIIIII\n", - "+0.004 * XZZIZZZZZZXIIIIIIIII\n", - "+0.004 * YZIZZZZZZZYIIIIIIIII\n", - "+0.004 * XZIZZZZZZZXIIIIIIIII\n", - "+0.015 * YIZZZZZZZZYIIIIIIIII\n", - "+0.015 * XIZZZZZZZZXIIIIIIIII\n", - "+0.102 * IIIIIIIIZZIIIIIIIIII\n", - "+0.008 * IIIYZZZZYZIIIIIIIIII\n", - "+0.008 * IIIXZZZZXZIIIIIIIIII\n", - "+0.000 * IIYZZZZZYZIIIIIIIIII\n", - "+0.000 * IIXZZZZZXZIIIIIIIIII\n", - "+0.102 * IIIIIIIZIZIIIIIIIIII\n", - "-0.000 * IIIYZZZYIZIIIIIIIIII\n", - "-0.000 * IIIXZZZXIZIIIIIIIIII\n", - "+0.008 * IIYZZZZYIZIIIIIIIIII\n", - "+0.008 * IIXZZZZXIZIIIIIIIIII\n", - "+0.060 * IIIIIIZIIZIIIIIIIIII\n", - "+0.005 * YZZZZZYIIZIIIIIIIIII\n", - "+0.005 * XZZZZZXIIZIIIIIIIIII\n", - "+0.109 * IIIIIZIIIZIIIIIIIIII\n", - "+0.109 * IIIIZIIIIZIIIIIIIIII\n", - "+0.101 * IIIZIIIIIZIIIIIIIIII\n", - "+0.101 * IIZIIIIIIZIIIIIIIIII\n", - "+0.100 * IZIIIIIIIZIIIIIIIIII\n", - "+0.113 * ZIIIIIIIIZIIIIIIIIII\n", - "-0.002 * IYZZZZZZIYIIIIIIIIII\n", - "-0.002 * IXZZZZZZIXIIIIIIIIII\n", - "+0.001 * IIIIIYXIXYIIIIIIIIII\n", - "+0.000 * IIIIIYYIYYIIIIIIIIII\n", - "-0.001 * IIIIIXXIYYIIIIIIIIII\n", - "-0.001 * IIIIIYYIXXIIIIIIIIII\n", - "+0.000 * IIIIIXXIXXIIIIIIIIII\n", - "+0.001 * IIIIIXYIYXIIIIIIIIII\n", - "+0.042 * IIIIYZXIXYIIIIIIIIII\n", - "+0.000 * IIIIYZYIYYIIIIIIIIII\n", - "-0.041 * IIIIXZXIYYIIIIIIIIII\n", - "-0.041 * IIIIYZYIXXIIIIIIIIII\n", - "+0.000 * IIIIXZXIXXIIIIIIIIII\n", - "+0.042 * IIIIXZYIYXIIIIIIIIII\n", - "-0.000 * YZZZZXIIXYIIIIIIIIII\n", - "-0.000 * YZZZZYIIYYIIIIIIIIII\n", - "+0.000 * XZZZZXIIYYIIIIIIIIII\n", - "+0.000 * YZZZZYIIXXIIIIIIIIII\n", - "-0.000 * XZZZZXIIXXIIIIIIIIII\n", - "-0.000 * XZZZZYIIYXIIIIIIIIII\n", - "-0.006 * YZZZXIIIXYIIIIIIIIII\n", - "-0.005 * YZZZYIIIYYIIIIIIIIII\n", - "+0.000 * XZZZXIIIYYIIIIIIIIII\n", - "+0.000 * YZZZYIIIXXIIIIIIIIII\n", - "-0.005 * XZZZXIIIXXIIIIIIIIII\n", - "-0.006 * XZZZYIIIYXIIIIIIIIII\n", - "-0.011 * IYZXIIIIXYIIIIIIIIII\n", - "-0.010 * IYZYIIIIYYIIIIIIIIII\n", - "+0.001 * IXZXIIIIYYIIIIIIIIII\n", - "+0.001 * IYZYIIIIXXIIIIIIIIII\n", - "-0.010 * IXZXIIIIXXIIIIIIIIII\n", - "-0.011 * IXZYIIIIYXIIIIIIIIII\n", - "-0.001 * IYXIIIIIXYIIIIIIIIII\n", - "-0.001 * IYYIIIIIYYIIIIIIIIII\n", - "+0.000 * IXXIIIIIYYIIIIIIIIII\n", - "+0.000 * IYYIIIIIXXIIIIIIIIII\n", - "-0.001 * IXXIIIIIXXIIIIIIIIII\n", - "-0.001 * IXYIIIIIYXIIIIIIIIII\n", - "-0.002 * IYZZZZZIZYIIIIIIIIII\n", - "-0.002 * IXZZZZZIZXIIIIIIIIII\n", - "+0.042 * IIIIIYXXZYIIIIIIIIII\n", - "+0.000 * IIIIIYYYZYIIIIIIIIII\n", - "-0.041 * IIIIIXXYZYIIIIIIIIII\n", - "-0.041 * IIIIIYYXZXIIIIIIIIII\n", - "+0.000 * IIIIIXXXZXIIIIIIIIII\n", - "+0.042 * IIIIIXYYZXIIIIIIIIII\n", - "-0.001 * IIIIYZXXZYIIIIIIIIII\n", - "-0.000 * IIIIYZYYZYIIIIIIIIII\n", - "+0.001 * IIIIXZXYZYIIIIIIIIII\n", - "+0.001 * IIIIYZYXZXIIIIIIIIII\n", - "-0.000 * IIIIXZXXZXIIIIIIIIII\n", - "-0.001 * IIIIXZYYZXIIIIIIIIII\n", - "-0.006 * YZZZZXIXZYIIIIIIIIII\n", - "-0.005 * YZZZZYIYZYIIIIIIIIII\n", - "+0.000 * XZZZZXIYZYIIIIIIIIII\n", - "+0.000 * YZZZZYIXZXIIIIIIIIII\n", - "-0.005 * XZZZZXIXZXIIIIIIIIII\n", - "-0.006 * XZZZZYIYZXIIIIIIIIII\n", - "+0.000 * YZZZXIIXZYIIIIIIIIII\n", - "+0.000 * YZZZYIIYZYIIIIIIIIII\n", - "-0.000 * XZZZXIIYZYIIIIIIIIII\n", - "-0.000 * YZZZYIIXZXIIIIIIIIII\n", - "+0.000 * XZZZXIIXZXIIIIIIIIII\n", - "+0.000 * XZZZYIIYZXIIIIIIIIII\n", - "+0.001 * IYZXIIIXZYIIIIIIIIII\n", - "+0.001 * IYZYIIIYZYIIIIIIIIII\n", - "-0.000 * IXZXIIIYZYIIIIIIIIII\n", - "-0.000 * IYZYIIIXZXIIIIIIIIII\n", - "+0.001 * IXZXIIIXZXIIIIIIIIII\n", - "+0.001 * IXZYIIIYZXIIIIIIIIII\n", - "-0.011 * IYXIIIIXZYIIIIIIIIII\n", - "-0.010 * IYYIIIIYZYIIIIIIIIII\n", - "+0.001 * IXXIIIIYZYIIIIIIIIII\n", - "+0.001 * IYYIIIIXZXIIIIIIIIII\n", - "-0.010 * IXXIIIIXZXIIIIIIIIII\n", - "-0.011 * IXYIIIIYZXIIIIIIIIII\n", - "-0.018 * IYZZZZIZZYIIIIIIIIII\n", - "-0.018 * IXZZZZIZZXIIIIIIIIII\n", - "+0.000 * IIIYZXXZZYIIIIIIIIII\n", - "+0.001 * IIIYZYYZZYIIIIIIIIII\n", - "+0.001 * IIIXZXYZZYIIIIIIIIII\n", - "+0.001 * IIIYZYXZZXIIIIIIIIII\n", - "+0.001 * IIIXZXXZZXIIIIIIIIII\n", - "+0.000 * IIIXZYYZZXIIIIIIIIII\n", - "-0.000 * IIYZZXXZZYIIIIIIIIII\n", - "-0.036 * IIYZZYYZZYIIIIIIIIII\n", - "-0.035 * IIXZZXYZZYIIIIIIIIII\n", - "-0.035 * IIYZZYXZZXIIIIIIIIII\n", - "-0.036 * IIXZZXXZZXIIIIIIIIII\n", - "-0.000 * IIXZZYYZZXIIIIIIIIII\n", - "-0.000 * IIIYXIXZZYIIIIIIIIII\n", - "-0.036 * IIIYYIYZZYIIIIIIIIII\n", - "-0.035 * IIIXXIYZZYIIIIIIIIII\n", - "-0.035 * IIIYYIXZZXIIIIIIIIII\n", - "-0.036 * IIIXXIXZZXIIIIIIIIII\n", - "-0.000 * IIIXYIYZZXIIIIIIIIII\n", - "-0.000 * IIYZXIXZZYIIIIIIIIII\n", - "-0.001 * IIYZYIYZZYIIIIIIIIII\n", - "-0.001 * IIXZXIYZZYIIIIIIIIII\n", - "-0.001 * IIYZYIXZZXIIIIIIIIII\n", - "-0.001 * IIXZXIXZZXIIIIIIIIII\n", - "-0.000 * IIXZYIYZZXIIIIIIIIII\n", - "-0.006 * YXIIIIXZZYIIIIIIIIII\n", - "-0.032 * YYIIIIYZZYIIIIIIIIII\n", - "-0.026 * XXIIIIYZZYIIIIIIIIII\n", - "-0.026 * YYIIIIXZZXIIIIIIIIII\n", - "-0.032 * XXIIIIXZZXIIIIIIIIII\n", - "-0.006 * XYIIIIYZZXIIIIIIIIII\n", - "+0.009 * IYZZZIZZZYIIIIIIIIII\n", - "+0.009 * IXZZZIZZZXIIIIIIIIII\n", - "-0.000 * YZZXIXZZZYIIIIIIIIII\n", - "-0.000 * YZZYIYZZZYIIIIIIIIII\n", - "+0.000 * XZZXIYZZZYIIIIIIIIII\n", - "+0.000 * YZZYIXZZZXIIIIIIIIII\n", - "-0.000 * XZZXIXZZZXIIIIIIIIII\n", - "-0.000 * XZZYIYZZZXIIIIIIIIII\n", - "+0.007 * YZXIIXZZZYIIIIIIIIII\n", - "+0.007 * YZYIIYZZZYIIIIIIIIII\n", - "-0.001 * XZXIIYZZZYIIIIIIIIII\n", - "-0.001 * YZYIIXZZZXIIIIIIIIII\n", - "+0.007 * XZXIIXZZZXIIIIIIIIII\n", - "+0.007 * XZYIIYZZZXIIIIIIIIII\n", - "+0.009 * IYZZIZZZZYIIIIIIIIII\n", - "+0.009 * IXZZIZZZZXIIIIIIIIII\n", - "+0.007 * YZZXXZZZZYIIIIIIIIII\n", - "+0.007 * YZZYYZZZZYIIIIIIIIII\n", - "-0.001 * XZZXYZZZZYIIIIIIIIII\n", - "-0.001 * YZZYXZZZZXIIIIIIIIII\n", - "+0.007 * XZZXXZZZZXIIIIIIIIII\n", - "+0.007 * XZZYYZZZZXIIIIIIIIII\n", - "+0.000 * YZXIXZZZZYIIIIIIIIII\n", - "+0.000 * YZYIYZZZZYIIIIIIIIII\n", - "-0.000 * XZXIYZZZZYIIIIIIIIII\n", - "-0.000 * YZYIXZZZZXIIIIIIIIII\n", - "+0.000 * XZXIXZZZZXIIIIIIIIII\n", - "+0.000 * XZYIYZZZZXIIIIIIIIII\n", - "+0.000 * IYZIZZZZZYIIIIIIIIII\n", - "+0.000 * IXZIZZZZZXIIIIIIIIII\n", - "+0.000 * IYIZZZZZZYIIIIIIIIII\n", - "+0.000 * IXIZZZZZZXIIIIIIIIII\n", - "-0.011 * ZYZZZZZZZYIIIIIIIIII\n", - "-0.011 * ZXZZZZZZZXIIIIIIIIII\n", - "+0.110 * IIIIIIIZZIIIIIIIIIII\n", - "+0.000 * IIIYZZZYZIIIIIIIIIII\n", - "+0.000 * IIIXZZZXZIIIIIIIIIII\n", - "-0.003 * IIYZZZZYZIIIIIIIIIII\n", - "-0.003 * IIXZZZZXZIIIIIIIIIII\n", - "+0.106 * IIIIIIZIZIIIIIIIIIII\n", - "+0.006 * YZZZZZYIZIIIIIIIIIII\n", - "+0.006 * XZZZZZXIZIIIIIIIIIII\n", - "+0.108 * IIIIIZIIZIIIIIIIIIII\n", - "+0.001 * IIIIYYIIZIIIIIIIIIII\n", - "+0.001 * IIIIXXIIZIIIIIIIIIII\n", - "+0.071 * IIIIZIIIZIIIIIIIIIII\n", - "+0.097 * IIIZIIIIZIIIIIIIIIII\n", - "+0.001 * IIYYIIIIZIIIIIIIIIII\n", - "+0.001 * IIXXIIIIZIIIIIIIIIII\n", - "+0.114 * IIZIIIIIZIIIIIIIIIII\n", - "+0.115 * IZIIIIIIZIIIIIIIIIII\n", - "+0.127 * ZIIIIIIIZIIIIIIIIIII\n", - "-0.003 * IIIYZZZIYIIIIIIIIIII\n", - "-0.003 * IIIXZZZIXIIIIIIIIIII\n", - "-0.000 * IIYZZZZIYIIIIIIIIIII\n", - "-0.000 * IIXZZZZIXIIIIIIIIIII\n", - "+0.001 * IIIIIZIYYIIIIIIIIIII\n", - "+0.001 * IIIIIZIXXIIIIIIIIIII\n", - "-0.038 * IIIIYXIXYIIIIIIIIIII\n", - "-0.038 * IIIIYYIYYIIIIIIIIIII\n", - "+0.000 * IIIIXXIYYIIIIIIIIIII\n", - "+0.000 * IIIIYYIXXIIIIIIIIIII\n", - "-0.038 * IIIIXXIXXIIIIIIIIIII\n", - "-0.038 * IIIIXYIYXIIIIIIIIIII\n", - "-0.001 * IIIIZIIYYIIIIIIIIIII\n", - "-0.001 * IIIIZIIXXIIIIIIIIIII\n", - "-0.001 * IIIZIIIYYIIIIIIIIIII\n", - "-0.001 * IIIZIIIXXIIIIIIIIIII\n", - "+0.019 * IIYXIIIXYIIIIIIIIIII\n", - "+0.001 * IIYYIIIYYIIIIIIIIIII\n", - "-0.018 * IIXXIIIYYIIIIIIIIIII\n", - "-0.018 * IIYYIIIXXIIIIIIIIIII\n", - "+0.001 * IIXXIIIXXIIIIIIIIIII\n", - "+0.019 * IIXYIIIYXIIIIIIIIIII\n", - "+0.001 * IIZIIIIYYIIIIIIIIIII\n", - "+0.001 * IIZIIIIXXIIIIIIIIIII\n", - "+0.008 * IIIYZZIZYIIIIIIIIIII\n", - "+0.008 * IIIXZZIZXIIIIIIIIIII\n", - "+0.000 * IIYZZZIZYIIIIIIIIIII\n", - "+0.000 * IIXZZZIZXIIIIIIIIIII\n", - "-0.001 * IYZZZXXZYIIIIIIIIIII\n", - "-0.000 * IYZZZYYZYIIIIIIIIIII\n", - "+0.001 * IXZZZXYZYIIIIIIIIIII\n", - "+0.001 * IYZZZYXZXIIIIIIIIIII\n", - "-0.000 * IXZZZXXZXIIIIIIIIIII\n", - "-0.001 * IXZZZYYZXIIIIIIIIIII\n", - "-0.021 * IYZZXIXZYIIIIIIIIIII\n", - "-0.001 * IYZZYIYZYIIIIIIIIIII\n", - "+0.020 * IXZZXIYZYIIIIIIIIIII\n", - "+0.020 * IYZZYIXZXIIIIIIIIIII\n", - "-0.001 * IXZZXIXZXIIIIIIIIIII\n", - "-0.021 * IXZZYIYZXIIIIIIIIIII\n", - "-0.015 * YZZXIIXZYIIIIIIIIIII\n", - "-0.001 * YZZYIIYZYIIIIIIIIIII\n", - "+0.014 * XZZXIIYZYIIIIIIIIIII\n", - "+0.014 * YZZYIIXZXIIIIIIIIIII\n", - "-0.001 * XZZXIIXZXIIIIIIIIIII\n", - "-0.015 * XZZYIIYZXIIIIIIIIIII\n", - "-0.001 * YZXIIIXZYIIIIIIIIIII\n", - "-0.000 * YZYIIIYZYIIIIIIIIIII\n", - "+0.001 * XZXIIIYZYIIIIIIIIIII\n", - "+0.001 * YZYIIIXZXIIIIIIIIIII\n", - "-0.000 * XZXIIIXZXIIIIIIIIIII\n", - "-0.001 * XZYIIIYZXIIIIIIIIIII\n", - "+0.013 * IIIYZIZZYIIIIIIIIIII\n", - "+0.013 * IIIXZIZZXIIIIIIIIIII\n", - "-0.000 * IIYZZIZZYIIIIIIIIIII\n", - "-0.000 * IIXZZIZZXIIIIIIIIIII\n", - "+0.001 * IIIYXXZZYIIIIIIIIIII\n", - "-0.001 * IIIYYYZZYIIIIIIIIIII\n", - "-0.002 * IIIXXYZZYIIIIIIIIIII\n", - "-0.002 * IIIYYXZZXIIIIIIIIIII\n", - "-0.001 * IIIXXXZZXIIIIIIIIIII\n", - "+0.001 * IIIXYYZZXIIIIIIIIIII\n", - "-0.033 * IIYZXXZZYIIIIIIIIIII\n", - "-0.000 * IIYZYYZZYIIIIIIIIIII\n", - "+0.033 * IIXZXYZZYIIIIIIIIIII\n", - "+0.033 * IIYZYXZZXIIIIIIIIIII\n", - "-0.000 * IIXZXXZZXIIIIIIIIIII\n", - "-0.033 * IIXZYYZZXIIIIIIIIIII\n", - "-0.000 * YXIIIXZZYIIIIIIIIIII\n", - "-0.001 * YYIIIYZZYIIIIIIIIIII\n", - "-0.001 * XXIIIYZZYIIIIIIIIIII\n", - "-0.001 * YYIIIXZZXIIIIIIIIIII\n", - "-0.001 * XXIIIXZZXIIIIIIIIIII\n", - "-0.000 * XYIIIYZZXIIIIIIIIIII\n", - "-0.021 * IIIYIZZZYIIIIIIIIIII\n", - "-0.021 * IIIXIZZZXIIIIIIIIIII\n", - "+0.000 * IIYZIZZZYIIIIIIIIIII\n", - "+0.000 * IIXZIZZZXIIIIIIIIIII\n", - "-0.000 * YXIIXZZZYIIIIIIIIIII\n", - "-0.033 * YYIIYZZZYIIIIIIIIIII\n", - "-0.033 * XXIIYZZZYIIIIIIIIIII\n", - "-0.033 * YYIIXZZZXIIIIIIIIIII\n", - "-0.033 * XXIIXZZZXIIIIIIIIIII\n", - "-0.000 * XYIIYZZZXIIIIIIIIIII\n", - "-0.000 * IIYIZZZZYIIIIIIIIIII\n", - "-0.000 * IIXIZZZZXIIIIIIIIIII\n", - "-0.007 * IIZYZZZZYIIIIIIIIIII\n", - "-0.007 * IIZXZZZZXIIIIIIIIIII\n", - "-0.000 * IZIYZZZZYIIIIIIIIIII\n", - "-0.000 * IZIXZZZZXIIIIIIIIIII\n", - "-0.011 * ZIIYZZZZYIIIIIIIIIII\n", - "-0.011 * ZIIXZZZZXIIIIIIIIIII\n", - "-0.000 * IZYZZZZZYIIIIIIIIIII\n", - "-0.000 * IZXZZZZZXIIIIIIIIIII\n", - "-0.001 * ZIYZZZZZYIIIIIIIIIII\n", - "-0.001 * ZIXZZZZZXIIIIIIIIIII\n", - "+0.106 * IIIIIIZZIIIIIIIIIIII\n", - "+0.006 * YZZZZZYZIIIIIIIIIIII\n", - "+0.006 * XZZZZZXZIIIIIIIIIIII\n", - "+0.071 * IIIIIZIZIIIIIIIIIIII\n", - "-0.001 * IIIIYYIZIIIIIIIIIIII\n", - "-0.001 * IIIIXXIZIIIIIIIIIIII\n", - "+0.108 * IIIIZIIZIIIIIIIIIIII\n", - "+0.114 * IIIZIIIZIIIIIIIIIIII\n", - "-0.001 * IIYYIIIZIIIIIIIIIIII\n", - "-0.001 * IIXXIIIZIIIIIIIIIIII\n", - "+0.097 * IIZIIIIZIIIIIIIIIIII\n", - "+0.115 * IZIIIIIZIIIIIIIIIIII\n", - "+0.127 * ZIIIIIIZIIIIIIIIIIII\n", - "-0.000 * IIIYZZIYIIIIIIIIIIII\n", - "-0.000 * IIIXZZIXIIIIIIIIIIII\n", - "+0.008 * IIYZZZIYIIIIIIIIIIII\n", - "+0.008 * IIXZZZIXIIIIIIIIIIII\n", - "-0.021 * IYZZZXXYIIIIIIIIIIII\n", - "-0.001 * IYZZZYYYIIIIIIIIIIII\n", - "+0.020 * IXZZZXYYIIIIIIIIIIII\n", - "+0.020 * IYZZZYXXIIIIIIIIIIII\n", - "-0.001 * IXZZZXXXIIIIIIIIIIII\n", - "-0.021 * IXZZZYYXIIIIIIIIIIII\n", - "+0.001 * IYZZXIXYIIIIIIIIIIII\n", - "+0.000 * IYZZYIYYIIIIIIIIIIII\n", - "-0.001 * IXZZXIYYIIIIIIIIIIII\n", - "-0.001 * IYZZYIXXIIIIIIIIIIII\n", - "+0.000 * IXZZXIXXIIIIIIIIIIII\n", - "+0.001 * IXZZYIYXIIIIIIIIIIII\n", - "+0.001 * YZZXIIXYIIIIIIIIIIII\n", - "+0.000 * YZZYIIYYIIIIIIIIIIII\n", - "-0.001 * XZZXIIYYIIIIIIIIIIII\n", - "-0.001 * YZZYIIXXIIIIIIIIIIII\n", - "+0.000 * XZZXIIXXIIIIIIIIIIII\n", - "+0.001 * XZZYIIYXIIIIIIIIIIII\n", - "-0.015 * YZXIIIXYIIIIIIIIIIII\n", - "-0.001 * YZYIIIYYIIIIIIIIIIII\n", - "+0.014 * XZXIIIYYIIIIIIIIIIII\n", - "+0.014 * YZYIIIXXIIIIIIIIIIII\n", - "-0.001 * XZXIIIXXIIIIIIIIIIII\n", - "-0.015 * XZYIIIYXIIIIIIIIIIII\n", - "-0.000 * IIIYZIZYIIIIIIIIIIII\n", - "-0.000 * IIIXZIZXIIIIIIIIIIII\n", - "-0.021 * IIYZZIZYIIIIIIIIIIII\n", - "-0.021 * IIXZZIZXIIIIIIIIIIII\n", - "-0.000 * IIIYXXZYIIIIIIIIIIII\n", - "-0.033 * IIIYYYZYIIIIIIIIIIII\n", - "-0.033 * IIIXXYZYIIIIIIIIIIII\n", - "-0.033 * IIIYYXZXIIIIIIIIIIII\n", - "-0.033 * IIIXXXZXIIIIIIIIIIII\n", - "-0.000 * IIIXYYZXIIIIIIIIIIII\n", - "+0.001 * IIYZXXZYIIIIIIIIIIII\n", - "-0.001 * IIYZYYZYIIIIIIIIIIII\n", - "-0.002 * IIXZXYZYIIIIIIIIIIII\n", - "-0.002 * IIYZYXZXIIIIIIIIIIII\n", - "-0.001 * IIXZXXZXIIIIIIIIIIII\n", - "+0.001 * IIXZYYZXIIIIIIIIIIII\n", - "-0.000 * YXIIIXZYIIIIIIIIIIII\n", - "-0.033 * YYIIIYZYIIIIIIIIIIII\n", - "-0.033 * XXIIIYZYIIIIIIIIIIII\n", - "-0.033 * YYIIIXZXIIIIIIIIIIII\n", - "-0.033 * XXIIIXZXIIIIIIIIIIII\n", - "-0.000 * XYIIIYZXIIIIIIIIIIII\n", - "+0.000 * IIIYIZZYIIIIIIIIIIII\n", - "+0.000 * IIIXIZZXIIIIIIIIIIII\n", - "+0.013 * IIYZIZZYIIIIIIIIIIII\n", - "+0.013 * IIXZIZZXIIIIIIIIIIII\n", - "+0.000 * YXIIXZZYIIIIIIIIIIII\n", - "+0.001 * YYIIYZZYIIIIIIIIIIII\n", - "+0.001 * XXIIYZZYIIIIIIIIIIII\n", - "+0.001 * YYIIXZZXIIIIIIIIIIII\n", - "+0.001 * XXIIXZZXIIIIIIIIIIII\n", - "+0.000 * XYIIYZZXIIIIIIIIIIII\n", - "-0.007 * IIYIZZZYIIIIIIIIIIII\n", - "-0.007 * IIXIZZZXIIIIIIIIIIII\n", - "+0.000 * IIZYZZZYIIIIIIIIIIII\n", - "+0.000 * IIZXZZZXIIIIIIIIIIII\n", - "+0.000 * IZIYZZZYIIIIIIIIIIII\n", - "+0.000 * IZIXZZZXIIIIIIIIIIII\n", - "+0.001 * ZIIYZZZYIIIIIIIIIIII\n", - "+0.001 * ZIIXZZZXIIIIIIIIIIII\n", - "-0.000 * IZYZZZZYIIIIIIIIIIII\n", - "-0.000 * IZXZZZZXIIIIIIIIIIII\n", - "-0.011 * ZIYZZZZYIIIIIIIIIIII\n", - "-0.011 * ZIXZZZZXIIIIIIIIIIII\n", - "+0.114 * IIIIIZZIIIIIIIIIIIII\n", - "+0.114 * IIIIZIZIIIIIIIIIIIII\n", - "+0.108 * IIIZIIZIIIIIIIIIIIII\n", - "+0.108 * IIZIIIZIIIIIIIIIIIII\n", - "+0.102 * IZIIIIZIIIIIIIIIIIII\n", - "+0.110 * ZIIIIIZIIIIIIIIIIIII\n", - "-0.006 * YZZZZIYIIIIIIIIIIIII\n", - "-0.006 * XZZZZIXIIIIIIIIIIIII\n", - "+0.000 * IYZXIXYIIIIIIIIIIIII\n", - "+0.000 * IYZYIYYIIIIIIIIIIIII\n", - "-0.000 * IXZXIYYIIIIIIIIIIIII\n", - "-0.000 * IYZYIXXIIIIIIIIIIIII\n", - "+0.000 * IXZXIXXIIIIIIIIIIIII\n", - "+0.000 * IXZYIYXIIIIIIIIIIIII\n", - "-0.020 * IYXIIXYIIIIIIIIIIIII\n", - "-0.018 * IYYIIYYIIIIIIIIIIIII\n", - "+0.001 * IXXIIYYIIIIIIIIIIIII\n", - "+0.001 * IYYIIXXIIIIIIIIIIIII\n", - "-0.018 * IXXIIXXIIIIIIIIIIIII\n", - "-0.020 * IXYIIYXIIIIIIIIIIIII\n", - "-0.006 * YZZZIZYIIIIIIIIIIIII\n", - "-0.006 * XZZZIZXIIIIIIIIIIIII\n", - "-0.020 * IYZXXZYIIIIIIIIIIIII\n", - "-0.018 * IYZYYZYIIIIIIIIIIIII\n", - "+0.001 * IXZXYZYIIIIIIIIIIIII\n", - "+0.001 * IYZYXZXIIIIIIIIIIIII\n", - "-0.018 * IXZXXZXIIIIIIIIIIIII\n", - "-0.020 * IXZYYZXIIIIIIIIIIIII\n", - "-0.000 * IYXIXZYIIIIIIIIIIIII\n", - "-0.000 * IYYIYZYIIIIIIIIIIIII\n", - "+0.000 * IXXIYZYIIIIIIIIIIIII\n", - "+0.000 * IYYIXZXIIIIIIIIIIIII\n", - "-0.000 * IXXIXZXIIIIIIIIIIIII\n", - "-0.000 * IXYIYZXIIIIIIIIIIIII\n", - "+0.008 * YZZIZZYIIIIIIIIIIIII\n", - "+0.008 * XZZIZZXIIIIIIIIIIIII\n", - "+0.008 * YZIZZZYIIIIIIIIIIIII\n", - "+0.008 * XZIZZZXIIIIIIIIIIIII\n", - "+0.025 * YIZZZZYIIIIIIIIIIIII\n", - "+0.025 * XIZZZZXIIIIIIIIIIIII\n", - "+0.120 * IIIIZZIIIIIIIIIIIIII\n", - "+0.109 * IIIZIZIIIIIIIIIIIIII\n", - "-0.000 * IIYYIZIIIIIIIIIIIIII\n", - "-0.000 * IIXXIZIIIIIIIIIIIIII\n", - "+0.081 * IIZIIZIIIIIIIIIIIIII\n", - "+0.115 * IZIIIZIIIIIIIIIIIIII\n", - "+0.119 * ZIIIIZIIIIIIIIIIIIII\n", - "-0.000 * IIIZYYIIIIIIIIIIIIII\n", - "-0.000 * IIIZXXIIIIIIIIIIIIII\n", - "-0.029 * IIYXXYIIIIIIIIIIIIII\n", - "-0.028 * IIYYYYIIIIIIIIIIIIII\n", - "+0.001 * IIXXYYIIIIIIIIIIIIII\n", - "+0.001 * IIYYXXIIIIIIIIIIIIII\n", - "-0.028 * IIXXXXIIIIIIIIIIIIII\n", - "-0.029 * IIXYYXIIIIIIIIIIIIII\n", - "+0.000 * IIZIYYIIIIIIIIIIIIII\n", - "+0.000 * IIZIXXIIIIIIIIIIIIII\n", - "-0.000 * YXIXZYIIIIIIIIIIIIII\n", - "-0.000 * YYIYZYIIIIIIIIIIIIII\n", - "-0.000 * XXIYZYIIIIIIIIIIIIII\n", - "-0.000 * YYIXZXIIIIIIIIIIIIII\n", - "-0.000 * XXIXZXIIIIIIIIIIIIII\n", - "-0.000 * XYIYZXIIIIIIIIIIIIII\n", - "+0.000 * YXXZZYIIIIIIIIIIIIII\n", - "+0.026 * YYYZZYIIIIIIIIIIIIII\n", - "+0.026 * XXYZZYIIIIIIIIIIIIII\n", - "+0.026 * YYXZZXIIIIIIIIIIIIII\n", - "+0.026 * XXXZZXIIIIIIIIIIIIII\n", - "+0.000 * XYYZZXIIIIIIIIIIIIII\n", - "+0.081 * IIIZZIIIIIIIIIIIIIII\n", - "+0.000 * IIYYZIIIIIIIIIIIIIII\n", - "+0.000 * IIXXZIIIIIIIIIIIIIII\n", - "+0.109 * IIZIZIIIIIIIIIIIIIII\n", - "+0.115 * IZIIZIIIIIIIIIIIIIII\n", - "+0.119 * ZIIIZIIIIIIIIIIIIIII\n", - "+0.000 * YXIXYIIIIIIIIIIIIIII\n", - "+0.026 * YYIYYIIIIIIIIIIIIIII\n", - "+0.026 * XXIYYIIIIIIIIIIIIIII\n", - "+0.026 * YYIXXIIIIIIIIIIIIIII\n", - "+0.026 * XXIXXIIIIIIIIIIIIIII\n", - "+0.000 * XYIYXIIIIIIIIIIIIIII\n", - "+0.000 * YXXZYIIIIIIIIIIIIIII\n", - "+0.000 * YYYZYIIIIIIIIIIIIIII\n", - "+0.000 * XXYZYIIIIIIIIIIIIIII\n", - "+0.000 * YYXZXIIIIIIIIIIIIIII\n", - "+0.000 * XXXZXIIIIIIIIIIIIIII\n", - "+0.000 * XYYZXIIIIIIIIIIIIIII\n", - "+0.119 * IIZZIIIIIIIIIIIIIIII\n", - "+0.114 * IZIZIIIIIIIIIIIIIIII\n", - "+0.132 * ZIIZIIIIIIIIIIIIIIII\n", - "+0.114 * IZZIIIIIIIIIIIIIIIII\n", - "+0.132 * ZIZIIIIIIIIIIIIIIIII\n", - "+0.108 * ZZIIIIIIIIIIIIIIIIII\n" - ] - } - ], - "source": [ - "chemistry_problem = MoleculeProblem(\n", - " molecule=molecule,\n", - " mapping=\"jordan_wigner\", #'bravyi_kitaev'\n", - " z2_symmetries=True,\n", - " freeze_core=True,\n", - ")\n", - "\n", - "operator = chemistry_problem.generate_hamiltonian()\n", - "gs_problem = chemistry_problem.update_problem(operator.num_qubits)\n", - "print(\"Your Hamiltonian is\", operator.show(), sep=\"\\n\")" - ] - }, - { - "cell_type": "markdown", - "id": "67a124c2-33fc-420c-8cb3-0002f18f4e77", - "metadata": { - "id": "67a124c2-33fc-420c-8cb3-0002f18f4e77" - }, - "source": [ - "The output of the above code lines is the Hamiltonian presented as a superposition of Pauli matrices multiplication.\n", - "One can easily confirm that using z2*symmetries=True, the number of qubits are reduced (compered to z2_symmetries=False): for $H_2$ - from 4 to 1, for $LiH$ from 12 to 8, and for $H*{2}O$ from 14 to 10." - ] - }, - { - "cell_type": "markdown", - "id": "8abe3e3d-1b01-4fab-b86a-feaab3851950", - "metadata": { - "id": "8abe3e3d-1b01-4fab-b86a-feaab3851950" - }, - "source": [ - "## 2. Constructing and Synthesizing a Ground State Solver\n", - "\n", - "A ground state solver model consists of a parameterized eigenfunction (\"the ansatz\"), on which we run a VQE. In addition, a post-process of the result allows to return the total energy (combining the ground state energy of the Hamiltonian, the nuclear repulsion and the static nuclear energy).\n", - "\n", - "Once we've specified an Hamiltonian and a desired Ansatz, we send them to the VQE algorithm in order to find the Hamiltonian's ground state. In the process, the algorithm will send requests to a classical server, which task is to minimize the energy expectation value and return the optimized parameters. The simulator and optimizing parameters are defined as part of the VQE part of the model. The user should control the `max_iteration` value in a manner so the solution has reached a stable convergence. In addition, the value `num_shots` sets the number of measurements performed after each iteration, thus influence the accuracy of the solutions.\n", - "\n", - "We demonstrate two different proposal for the wavefunction solution ansatz: (1) Hardware (HW) efficient, and (2) Unitary Coupled Cluster (UCC). For groundstate solvers it is typical to initialize the Ansatz with the Hartree-Fock state." - ] - }, - { - "cell_type": "markdown", - "id": "07ed8f8e-485b-4f0f-93b7-78e7fd6fbe39", - "metadata": { - "id": "07ed8f8e-485b-4f0f-93b7-78e7fd6fbe39" - }, - "source": [ - "### 2.1 HW-Efficient Ansatz\n", - "\n", - "Hardware-efficient ansatz is a suggested solution that is generated to fit a specific hardware [1]. The ansatz creates a state with given number of parameters by user choice (number of qubits, that should fit the Hamiltonian), and creates entanglement between the qubits by the inputed connectivity map. In this example, a 4 qubit map is given, which is specifically made of $H_2$ with z2_symmetries=False.\n", - "\n", - "After constructing the model, we can synthesize it and view the outputted circuit, in charged on creating the state with an interactive interface." - ] - }, - { - "cell_type": "code", - "execution_count": 159, - "id": "90b20061-8dbd-4136-adba-28ddacb1f583", - "metadata": { - "id": "90b20061-8dbd-4136-adba-28ddacb1f583" - }, - "outputs": [], - "source": [ - "chemistry_problem = MoleculeProblem(\n", - " molecule=molecule,\n", - " mapping=\"jordan_wigner\", #'bravyi_kitaev'\n", - " z2_symmetries=False,\n", - " freeze_core=True,\n", - ")\n", - "\n", - "hwea_params = HEAParameters(\n", - " num_qubits=24,\n", - " connectivity_map=[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8),\n", - " (8, 9), (9, 10)],\n", - " reps=3,\n", - " one_qubit_gates=[\"x\", \"ry\"],\n", - " two_qubit_gates=[\"cx\"],\n", - ")\n", - "\n", - "qmod = construct_chemistry_model(\n", - " chemistry_problem=chemistry_problem,\n", - " use_hartree_fock=True,\n", - " ansatz_parameters=hwea_params,\n", - " execution_parameters=ChemistryExecutionParameters(\n", - " optimizer=OptimizerType.COBYLA,\n", - " max_iteration=30,\n", - " initial_point=None,\n", - " ),\n", - ")\n", - "\n", - "backend_preferences = ClassiqBackendPreferences(\n", - " backend_name=ClassiqSimulatorBackendNames.SIMULATOR\n", - ")\n", - "\n", - "qmod = set_execution_preferences(\n", - " qmod,\n", - " execution_preferences=ExecutionPreferences(\n", - " num_shots=1000, backend_preferences=backend_preferences\n", - " ),\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 160, - "id": "f13599d2-e8e7-4165-aa26-8ae8d4bdafaa", - "metadata": { - "id": "f13599d2-e8e7-4165-aa26-8ae8d4bdafaa" - }, - "outputs": [], - "source": [ - "from classiq import write_qmod\n", - "\n", - "write_qmod(qmod, name=\"molecule_eigensolver\")" - ] - }, - { - "cell_type": "code", - "execution_count": 161, - "id": "22cd12d1-2c87-400a-a983-b2f24e40fa45", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "id": "22cd12d1-2c87-400a-a983-b2f24e40fa45", - "outputId": "d48d0740-4851-4943-f54b-325303b4838a" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/3bc0b6ac-4cbc-46e6-8238-227db5ab0a79?version=0.42.1\n" - ] - } - ], - "source": [ - "qprog = synthesize(qmod)\n", - "show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "7fb92cdc", - "metadata": { - "id": "7fb92cdc" - }, - "source": [ - "### 2.2. UCC Ansatz\n", - "\n", - "Next, we show how to create the commonly used chemistry-inspired UCC ansatz, which is a unitary version of the classical coupled cluster (CC) method [2] .\n", - "\n", - "The parameter that defines the UCC ansatz is:\n", - "- excitations (List[int] or List[str]): list of desired excitations. Allowed excitations:\n", - " - 1 for singles\n", - " - 2 for doubles\n", - " - 3 for triples\n", - " - 4 for quadruples\n", - "\n", - "Once again, after the code lines bellow run, the user is able to view the outputted circuit, in charged on creating the state with an interactive interface. In addition, the depth of the circuit is printed.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 162, - "id": "1f520673", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "id": "1f520673", - "outputId": "fd4a3467-c48b-483c-b156-0a0cde9e2189" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Opening: https://platform.classiq.io/circuit/ce59181f-b6f0-4cff-8be5-4f5d9aa0cc9f?version=0.42.1\n", - "circuit depth: 16968\n" - ] - } - ], - "source": [ - "chemistry_problem = MoleculeProblem(\n", - " molecule=molecule,\n", - " mapping=\"jordan_wigner\", #'bravyi_kitaev'\n", - " z2_symmetries=True,\n", - " freeze_core=True,\n", - ")\n", - "\n", - "serialized_chemistry_model = construct_chemistry_model(\n", - " chemistry_problem=chemistry_problem,\n", - " use_hartree_fock=True,\n", - " ansatz_parameters=UCCParameters(excitations=[1, 2]),\n", - " execution_parameters=ChemistryExecutionParameters(\n", - " optimizer=OptimizerType.COBYLA,\n", - " max_iteration=30,\n", - " initial_point=None,\n", - " ),\n", - ")\n", - "\n", - "backend_preferences = ClassiqBackendPreferences(\n", - " backend_name=ClassiqSimulatorBackendNames.SIMULATOR\n", - ")\n", - "\n", - "serialized_chemistry_model = set_execution_preferences(\n", - " serialized_chemistry_model,\n", - " execution_preferences=ExecutionPreferences(\n", - " num_shots=1000, backend_preferences=backend_preferences\n", - " ),\n", - ")\n", - "\n", - "qprog = synthesize(serialized_chemistry_model)\n", - "show(qprog)\n", - "\n", - "circuit = QuantumProgram.from_qprog(qprog)\n", - "print(f\"circuit depth: {circuit.transpiled_circuit.depth}\")" - ] - }, - { - "cell_type": "markdown", - "id": "f12c9a32-f271-4892-8515-bd9e6b9fcf8b", - "metadata": { - "id": "f12c9a32-f271-4892-8515-bd9e6b9fcf8b" - }, - "source": [ - "Classiq's UCC algorithm provides an highly efficient solution in aspects of circuit depth and number of CX gates. Those ultimately reduce the gate's time and amount of resources needed for its operation." - ] - }, - { - "cell_type": "markdown", - "id": "ef36661f", - "metadata": { - "id": "ef36661f" - }, - "source": [ - "## 3. Execute to Find Ground State\n", - "\n", - "Once we've synthesized the model we can execute it." - ] - }, - { - "cell_type": "code", - "execution_count": 163, - "id": "1a66d377", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 477 - }, - "id": "1a66d377", - "outputId": "1c93e68e-1300-4fde-ec56-e6e2d377a96e" - }, - "outputs": [ - { - "output_type": "error", - "ename": "ClassiqAPIError", - "evalue": "Error number 90001 occurred. The resources needed to execute this request are insufficient.\n This may be due to computational limitations, or high load on Classiq's servers.\n We suggest trying with alternative parameters, or reducing the resource consumption.\n\n\nError identifier: E581A0475-26BA-4C43-A7AB-BFFCF3EAF1CC.\nIf you need further assistance, please reach out on our Community Slack channel at: https://short.classiq.io/join-slack\nIf the error persists feel free to open a ticket at: https://short.classiq.io/support", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mClassiqAPIError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mexecute\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mqprog\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mresult\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mchemistry_result_dict\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/classiq/_internals/async_utils.py\u001b[0m in \u001b[0;36masync_wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 43\u001b[0m \u001b[0;34m@\u001b[0m\u001b[0mfunctools\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwraps\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0masync_func\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 44\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0masync_wrapper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mAny\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mAny\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0mT\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 45\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mrun\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0masync_func\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 46\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 47\u001b[0m \u001b[0;31m# patch `functools.wraps` work on `name` and `qualname`\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/classiq/_internals/async_utils.py\u001b[0m in \u001b[0;36mrun\u001b[0;34m(coro)\u001b[0m\n\u001b[1;32m 37\u001b[0m \u001b[0;31m# Never use asyncio.run in library code.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 38\u001b[0m \u001b[0mloop\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mget_event_loop\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 39\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mloop\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun_until_complete\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcoro\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 40\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 41\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/nest_asyncio.py\u001b[0m in \u001b[0;36mrun_until_complete\u001b[0;34m(self, future)\u001b[0m\n\u001b[1;32m 96\u001b[0m raise RuntimeError(\n\u001b[1;32m 97\u001b[0m 'Event loop stopped before Future completed.')\n\u001b[0;32m---> 98\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mresult\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 99\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 100\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_run_once\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/usr/lib/python3.10/asyncio/futures.py\u001b[0m in \u001b[0;36mresult\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 199\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__log_traceback\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 200\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_exception\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 201\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_exception\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwith_traceback\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_exception_tb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 202\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_result\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 203\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/usr/lib/python3.10/asyncio/tasks.py\u001b[0m in \u001b[0;36m__step\u001b[0;34m(***failed resolving arguments***)\u001b[0m\n\u001b[1;32m 230\u001b[0m \u001b[0;31m# We use the `send` method directly, because coroutines\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 231\u001b[0m \u001b[0;31m# don't have `__iter__` and `__next__` methods.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 232\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcoro\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 233\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 234\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcoro\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mthrow\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/classiq/execution/jobs.py\u001b[0m in \u001b[0;36mresult_async\u001b[0;34m(self, timeout_sec)\u001b[0m\n\u001b[1;32m 96\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 97\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstatus\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mJobStatus\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mFAILED\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 98\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mClassiqAPIError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0merror\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 99\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstatus\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mJobStatus\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mCANCELLED\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 100\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mClassiqAPIError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Job has been cancelled.\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mClassiqAPIError\u001b[0m: Error number 90001 occurred. The resources needed to execute this request are insufficient.\n This may be due to computational limitations, or high load on Classiq's servers.\n We suggest trying with alternative parameters, or reducing the resource consumption.\n\n\nError identifier: E581A0475-26BA-4C43-A7AB-BFFCF3EAF1CC.\nIf you need further assistance, please reach out on our Community Slack channel at: https://short.classiq.io/join-slack\nIf the error persists feel free to open a ticket at: https://short.classiq.io/support" - ] - } - ], - "source": [ - "result = execute(qprog).result()\n", - "chemistry_result_dict = result[1].value" - ] - }, - { - "cell_type": "markdown", - "id": "f72ceeb5-bc71-46d8-a390-31ec874700f3", - "metadata": { - "id": "f72ceeb5-bc71-46d8-a390-31ec874700f3" - }, - "source": [ - "Execution of the quantum program returns several useful outputs:\n", - "- energy : the output of the VQE algorithm - the electronic energy simulated.\n", - "- nuclear_repulsion : the electrostatic energy generated by the atom's nuclei.\n", - "- hartree_fock_energy : the Hartree Fock energy.\n", - "- total_energy : this is the ground state energy of the Hamiltonian (combining the energy, the nuclear repulsion and the static nuclear energy).\n", - "\n", - "It also contains the full VQE result from which we can get, for example:\n", - "- optimal_parameters : gives the results for the anzats parameters minimizing that expectation value.\n", - "- eigenstate : gives the ground state wave function.\n", - "\n", - "Note the all energy are presented in units of Hartree." - ] - }, - { - "cell_type": "markdown", - "id": "6VG1iSvMpb8M", - "metadata": { - "id": "6VG1iSvMpb8M" - }, - "source": [] - }, - { - "cell_type": "markdown", - "id": "aGkNxwqpX1Yz", - "metadata": { - "id": "aGkNxwqpX1Yz" - }, - "source": [] - }, - { - "cell_type": "code", - "execution_count": 138, - "id": "437b3211", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "id": "437b3211", - "outputId": "dbe14152-d540-4cd0-f294-b17824883a4c" - }, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "-71.7605079203085" - ] - }, - "metadata": {}, - "execution_count": 138 - } - ], - "source": [ - "chemistry_result_dict[\"total_energy\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 139, - "id": "9a537d3c", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "collapsed": true, - "id": "9a537d3c", - "outputId": "bbb38543-5586-41d0-80a4-32ce72e3fa1b" - }, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "{'param_0': 4.297574618367516,\n", - " 'param_1': -1.504633061740663,\n", - " 'param_10': -3.6437416361959856,\n", - " 'param_11': 0.06857537289766391,\n", - " 'param_12': -0.36346685952612656,\n", - " 'param_13': -0.7519018401777506,\n", - " 'param_14': -2.8118598605968717,\n", - " 'param_15': 1.307451081841208,\n", - " 'param_16': -4.4156026166000935,\n", - " 'param_17': 2.1175446665800237,\n", - " 'param_18': 5.580438616773936,\n", - " 'param_19': -3.08318244300614,\n", - " 'param_2': 3.6622861342765347,\n", - " 'param_20': 5.726122176829751,\n", - " 'param_21': 3.65873933961565,\n", - " 'param_22': -5.530192925838418,\n", - " 'param_23': 3.063438649255726,\n", - " 'param_24': 0.5301345737711989,\n", - " 'param_25': -3.31817327605338,\n", - " 'param_26': -4.998839006910894,\n", - " 'param_27': -6.2474777669575765,\n", - " 'param_28': -2.8845513153540208,\n", - " 'param_29': -3.1405109604973145,\n", - " 'param_3': -4.53110966026628,\n", - " 'param_4': 4.748304331159153,\n", - " 'param_5': -5.219454727089838,\n", - " 'param_6': 2.8281186713622386,\n", - " 'param_7': -1.9088614011539669,\n", - " 'param_8': 6.121290432401807,\n", - " 'param_9': -2.7335067577998275}" - ] - }, - "metadata": {}, - "execution_count": 139 - } - ], - "source": [ - "chemistry_result_dict[\"vqe_result\"][\"optimal_parameters\"]" - ] - }, - { - "cell_type": "markdown", - "id": "2375f3c3", - "metadata": { - "id": "2375f3c3" - }, - "source": [ - "Finally, we can compare the VQE solution to the classical solution by employing exact diagonalization:" - ] - }, - { - "cell_type": "code", - "execution_count": 140, - "id": "5c896576", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "id": "5c896576", - "outputId": "f6ada73d-6bd4-440d-98c1-d17e70b57cde" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "exact result: -23.544497240443615\n", - "vqe result: -80.95442108093188\n" - ] - } - ], - "source": [ - "mat = operator.to_matrix()\n", - "w, v = np.linalg.eig(mat)\n", - "print(\"exact result:\", np.real(min(w)))\n", - "print(\"vqe result:\", chemistry_result_dict[\"energy\"])" - ] - }, - { - "cell_type": "markdown", - "source": [ - "## **h2**\n", - "\n", - "hw-eff: width 4/depth34\n", - "\n", - "ucc: width 1/depth 6, width 4, depth 3\n", - "\n", - "total en -1.1342995783232035,\n", - "exact result: -1.8572750302023786,\n", - "vqe result: -1.854268572772183\n" - ], - "metadata": { - "id": "TXF-IJT59B7j" - }, - "id": "TXF-IJT59B7j" - }, - { - "cell_type": "markdown", - "id": "2qTUaxbEX5IF", - "metadata": { - "id": "2qTUaxbEX5IF" - }, - "source": [ - "## **h2o**\n", - "\n", - "hw-eff.: width 12/depth 375,\n", - "(conn map 0-1..10-11, reps 11)\n", - "\n", - "ucc: width 8/depth 1218, width 12/depth 1048\n", - "\n", - "total energy -71.7605079203085,\n", - "exact result: -23.544497240443615,\n", - "vqe result: -80.95442108093192" - ] - }, - { - "cell_type": "markdown", - "id": "bxRq_3-Jb4_0", - "metadata": { - "id": "bxRq_3-Jb4_0" - }, - "source": [ - "##**co2**\n", - "\n", - "hw-eff: width 24/depth 175\n", - "\n", - "ucc: width 20/depth 19767, width 24/depth 16968\n", - "\n", - "Error number 90001 occurred. The resources needed to execute this request are insufficient.\n", - " This may be due to computational limitations, or high load on Classiq's servers." - ] - }, - { - "cell_type": "markdown", - "id": "b998e321", - "metadata": { - "id": "b998e321" - }, - "source": [ - "[1] Abhinav Kandala, Antonio Mezzacapo, Kristan Temme, Maika Takita, Markus Brink, Jerry M. Chow, Jay M. Gambetta Hardware-efficient variational quantum eigensolver for small molecules and quantum magnets. Nature 549, 242 (2017)\n", - "\n", - "[2] Panagiotis Kl. Barkoutsos, Jerome F. Gonthier, Igor Sokolov, Nikolaj Moll, Gian Salis, Andreas Fuhrer, Marc Ganzhorn, Daniel J. Egger, Matthias Troyer, Antonio Mezzacapo, Stefan Filipp, and Ivano Tavernelli Quantum algorithms for electronic structure calculations: Particle-hole Hamiltonian and optimized wave-function expansions Phys. Rev. A 98, 022322 (2018)\n" - ] - } - ], - "metadata": { - "colab": { - "provenance": [], - "include_colab_link": true - }, - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file From 784ab4595cb9c88c3c804b5688a8e400b78a0981 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Sun, 16 Jun 2024 17:22:40 +0200 Subject: [PATCH 24/83] Add files via upload --- .../Submissions/HW1/Yasir_Mansour_HW1_QClass2024.ipynb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/community/QClass_2024/Submissions/HW1/Yasir_Mansour_HW1_QClass2024.ipynb b/community/QClass_2024/Submissions/HW1/Yasir_Mansour_HW1_QClass2024.ipynb index d464ea5d..4ef2740f 100644 --- a/community/QClass_2024/Submissions/HW1/Yasir_Mansour_HW1_QClass2024.ipynb +++ b/community/QClass_2024/Submissions/HW1/Yasir_Mansour_HW1_QClass2024.ipynb @@ -63,7 +63,7 @@ }, "outputs": [], "source": [ - "!pip install -U -q classiq" + "#!pip install -U -q classiq" ] }, { @@ -80,8 +80,8 @@ }, "outputs": [], "source": [ - "import classiq\n", - "classiq.authenticate()" + "#import classiq\n", + "#classiq.authenticate()" ] }, { From bf40f8884517eec3bab5785f692fabf92c94dd9e Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Sun, 16 Jun 2024 17:24:09 +0200 Subject: [PATCH 25/83] Add files via upload --- .../HW2/Yasir_Mansour_HW2_QClass2024.ipynb | 785 ++++++++++++++++++ 1 file changed, 785 insertions(+) create mode 100644 community/QClass_2024/Submissions/HW2/Yasir_Mansour_HW2_QClass2024.ipynb diff --git a/community/QClass_2024/Submissions/HW2/Yasir_Mansour_HW2_QClass2024.ipynb b/community/QClass_2024/Submissions/HW2/Yasir_Mansour_HW2_QClass2024.ipynb new file mode 100644 index 00000000..cd1dd4f6 --- /dev/null +++ b/community/QClass_2024/Submissions/HW2/Yasir_Mansour_HW2_QClass2024.ipynb @@ -0,0 +1,785 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "view-in-github" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "NbVeWUvUOPPN" + }, + "source": [ + "# The Qmod Workshop - Part 2: Higher-Level Concepts\n", + "\n", + "This is the second part of the Qmod workshop, covering exercises 6 through 10. Make sure to go through Part 1 before continuing with this notebook." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "CSoLXYc-P-zb", + "outputId": "32e4c151-5e82-4ff8-df53-e9ac710f2507", + "tags": [] + }, + "outputs": [], + "source": [ + "#!pip install classiq" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "Js5S3AMtP6LJ", + "outputId": "d3f334a9-6dcf-4e2a-f547-b68342d126ea" + }, + "outputs": [], + "source": [ + "#import classiq\n", + "#classiq.authenticate()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from classiq import *" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "DLFwpFN8OPPd" + }, + "source": [ + "### Exercise 6 - Exponentiation and Pauli Operators\n", + "\n", + "The Qmod language supports different classical types: scalars, arrays, and structs. Structs are objects with member variables, or fields.\n", + "\n", + "See also Classical Types(docs.classiq.io/latest/user-guide/platform/qmod/language-reference/classical-types/#structs).\n", + "\n", + "The builtin struct type `PauliTerm` is defined as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "EEjNNhY3OPPe" + }, + "outputs": [], + "source": [ + "@struct\n", + "class PauliTerm:\n", + " pauli: CArray[Pauli]\n", + " coefficient: CReal" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "oOlb_yyJOPPg" + }, + "source": [ + "Note that `Pauli` is an enum for all the Pauli matrices (I, X, Y, Z).\n", + "\n", + "Pauli based hamiltonian can be represented as a list of `PauliTerm`s. A Pauli operator defined this way is the argument to a hamiltonian evolution functions.\n", + "\n", + "In this exercise we will use the Suzuki-Trotter function to find the evolution of `H=0.5XZXX + 0.25YIZI + 0.3 XIZY` (captured as a literal value for the pauli-operator), with the evolution coefficient being 3, the order being 2, and use 4 repetitions.\n", + "\n", + "The declaration of the `suzuki_trotter` function is:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "uO1d4ba3OPPi" + }, + "outputs": [], + "source": [ + "@qfunc(external=True)\n", + "def suzuki_trotter(\n", + " pauli_operator: CArray[PauliTerm],\n", + " evolution_coefficient: CReal,\n", + " order: CInt,\n", + " repetitions: CInt,\n", + " qbv: QArray[QBit],\n", + ") -> None:\n", + " pass" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "jGcQahGvOPPk" + }, + "source": [ + "Fill in the missing parts of the following code in order to complete this exercise:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "-ZPy2HjIOPPl", + "outputId": "fc91afc7-7cfc-4efe-b1d4-c3da484dfaeb" + }, + "outputs": [], + "source": [ + "from classiq import *\n", + "\n", + "\n", + "@qfunc\n", + "def main(q: Output[QArray[QBit]]) -> None:\n", + " allocate(4, q)\n", + " suzuki_trotter(\n", + " [\n", + " PauliTerm(pauli=[Pauli.X, Pauli.Z, Pauli.X, Pauli.X], coefficient=0.5),\n", + " PauliTerm(pauli=[Pauli.Y, Pauli.I, Pauli.Z, Pauli.I], coefficient=0.25),\n", + " PauliTerm(pauli=[Pauli.X, Pauli.I, Pauli.Z, Pauli.Y], coefficient=0.3),\n", + " ],\n", + " #[0.5XZXX + 0.25YIZI + 0.3 XIZY],\n", + " evolution_coefficient=3,\n", + " repetitions=4,\n", + " order=2,\n", + " qbv=q,\n", + " )\n", + "\n", + "\n", + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "a2tiByHPVxIm" + }, + "source": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "YVauJN06OPPr" + }, + "source": [ + "### Exercise 7 - Basic Arithmetics\n", + "\n", + "#### Exercise 7a\n", + "In this exercise we will use quantum numeric variables and calculate expressions over them.\n", + "\n", + "See details on the syntax of numeric types under Quantum types(docs.classiq.io/latest/user-guide/platform/qmod/language-reference/quantum-types/#syntax).\n", + "See more on quantum expressions under Numeric assignment(docs.classiq.io/latest/user-guide/platform/qmod/language-reference/statements/numeric-assignment/)\n", + "\n", + "Create the following quantum programs:\n", + "1. Initialize variables `x=2`, `y=7` and computes `res = x + y`.\n", + "2. Initialize variables `x=2`, `y=7` and computes `res = x * y`.\n", + "3. Initialize variables `x=2`, `y=7`, `z=1` and computes `res = x * y - z`.\n", + "\n", + "Guidance:\n", + "* Use the operator `|=` to perform out-of-place assignment of arithmetic expression.\n", + "* To initialize the variables, use the function `prepare_int`.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "2Ad42tEjOPPt", + "outputId": "0e3c5195-3914-4296-b400-067df17efb67" + }, + "outputs": [], + "source": [ + "from classiq import *\n", + "\n", + "# Your code here:\n", + "@qfunc\n", + "def main(res1: Output[QNum], res2: Output[QNum], res3: Output[QNum], x: Output[QNum], y: Output[QNum], z: Output[QNum]):\n", + " prepare_int(2, x)\n", + " prepare_int(7, y)\n", + " prepare_int(1, z)\n", + " res1 |= x + y\n", + " res2 |= x * y\n", + " res3 |= x * y - z\n", + "\n", + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "oD9FFw0hOPPv" + }, + "source": [ + "#### Exercise 7b\n", + "Declare `x` to be a 2-qubit variable and `y` to be 3-qubit variable.\n", + "\n", + "We will perform an addition of two superposition states: `x` is an equal superposition of `0` and `2`, and `y` is an equal superposition of `1`, `2`, `3`, and `6`.\n", + "\n", + "1. Use `prepare_state` to initialize `x` and `y`. Note that `prepare_state` works with probabilities, not amplitudes.\n", + " The declaration of the `prepare_state` function is:\n", + " ```\n", + " @qfunc(external=True)\n", + " def prepare_state(\n", + " probabilities: CArray[CReal],\n", + " bound: CReal,\n", + " out: Output[QArray[QBit]],\n", + " ) -> None:\n", + " pass\n", + " ```\n", + " (Set the bound to 0 in your code)\n", + "2. Compute `res = x + y`. Execute the resulting circuit. What did you get?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "J5aQnWHEOPPx", + "outputId": "ea1de78b-3848-4255-d430-b1ae0bcc7cd2" + }, + "outputs": [], + "source": [ + "from classiq import *\n", + "\n", + "# Your code here:\n", + "@qfunc\n", + "def main(res: Output[QNum], x: Output[QNum], y: Output[QNum]):\n", + " prepare_state([0.5, 0, 0.5, 0], bound=0.01, out=x)\n", + " prepare_state([0, 0.25, 0.25, 0.25, 0, 0, 0.25, 0], bound=0.01, out=y)\n", + " res |= x + y\n", + "\n", + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "QguPlrPLOPPz" + }, + "source": [ + "### Exercise 8 - Within-Apply\n", + "\n", + "The within-apply statement applies the pattern `U_dagger V U` that appears frequently in quantum computing.\n", + "It allows you to compute some function `V` within the context of another function `U`, and afterward uncompute `U` in order to release auxiliary qubits storing intermediate results.\n", + "\n", + "See also Within Apply(docs.classiq.io/latest/user-guide/platform/qmod/language-reference/statements/within-apply/).\n", + "\n", + "#### Exercise 8a\n", + "\n", + "In this exercise, we will use within-apply to compute an arithmetic expression in steps.\n", + "\n", + "Use the `within_apply` operation to calculate `res = x + y + z` from a two-variable addition building block with the following steps:\n", + "1. Add `x` and `y`\n", + "2. Add the result to `z`\n", + "3. Uncompute the result of the first operation\n", + "\n", + "For simplicity, initialize the registers to simple integers: `x=3`, `y=5`, `z=2`.\n", + "\n", + "Hints:\n", + "\n", + "* Use a temporary variable.\n", + "* Wrap the arithmetic operation in a function.\n", + "\n", + "Execute the circuit and make sure you obtain the expected result." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "gOMBLIf7OPP1", + "outputId": "ee6530e4-3fa1-4d46-d151-9862ee961b5e" + }, + "outputs": [], + "source": [ + "from classiq import *\n", + "\n", + "# Your code here:\n", + "@qfunc\n", + "def q_add(res: Output[QNum], a:QNum, b:QNum) -> None:\n", + " res |= a + b\n", + "\n", + "@qfunc\n", + "def main(res: Output[QNum], x: Output[QNum],\n", + " y: Output[QNum], z: Output[QNum]) -> None:\n", + " prepare_int(3, x)\n", + " prepare_int(5, y)\n", + " prepare_int(2, z)\n", + " aux = QNum('aux')\n", + " within_apply(compute = lambda: q_add(aux, x, y),\n", + " action = lambda: q_add(res, aux, z))\n", + "\n", + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)\n", + "#13 qbits" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "umMhnAelOPP2" + }, + "source": [ + "#### Exercise 8b\n", + "\n", + "Why should we use `within-apply` and not just write three concatenated functions?\n", + "To understand the motivation, we will create another arithmetic circuit.\n", + "This time, however, we will also set Classiq’s synthesis engine to optimize on the circuit’s number of qubits, i.e., its width.\n", + "\n", + "Setting constraints can be done via the `set_constraints` operation - see here(docs.classiq.io/latest/user-guide/platform/synthesis/constraints/).\n", + "\n", + "Perform the operation `res = w + x + y + z`, where w is initialized to 4 and the rest as before:\n", + "\n", + "1. Add `x` and `y` (as part of the `within_apply` operation)\n", + "2. Add the result to `z` (as part of the within_apply operation)\n", + "3. Uncompute the result of the first operation (as part of the `within_apply` operation)\n", + "4. Add the result of the second operation to `w`. There’s no need to perform another uncomputation, as this brings our calculation to an end.\n", + "\n", + "Create the model, optimize on the circuit’s width, and run the circuit. Can you identify where qubits have been released and reused?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "ED1iDS1aOPP5", + "outputId": "2260c2b1-d176-4c26-a83f-e0be9d1b6804" + }, + "outputs": [], + "source": [ + "from classiq import *\n", + "\n", + "# Your code here:\n", + "@qfunc\n", + "def q_add(res: Output[QNum], a:QNum, b:QNum) -> None:\n", + " res |= a + b\n", + "\n", + "@qfunc\n", + "def main(res: Output[QNum], x: Output[QNum],\n", + " y: Output[QNum], z: Output[QNum], w: Output[QNum]) -> None:\n", + " prepare_int(3, x)\n", + " prepare_int(5, y)\n", + " prepare_int(2, z)\n", + " prepare_int(4, w)\n", + " aux1 = QNum('aux1')\n", + " aux2 = QNum('aux2')\n", + " within_apply(compute = lambda: q_add(aux1, x, y),\n", + " action = lambda: q_add(aux2, aux1, z),)\n", + " res |= aux2 + w\n", + "\n", + "\n", + "\n", + "qmod = create_model(main)\n", + "qmod = set_constraints(qmod,\n", + " Constraints(optimization_parameter='width'))\n", + "qprog = synthesize(qmod)\n", + "show(qprog)\n", + "#16 qbits" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "pIBHrEOxOPP6" + }, + "source": [ + "#### Bonus: Use a Single Arithmetic Expression\n", + "\n", + "What happens when we don't manually decompose this expression?\n", + "\n", + "Use Classiq’s arithmetic engine to calculate `res |= x + y + z + w` and optimize for width.\n", + "Look at the resulting quantum program - can you identify the computation and uncomputation blocks? What else did you notice?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "ep-Efm_oOPP8", + "outputId": "258d0b91-cb7a-4a25-b80d-0492e6557fe1" + }, + "outputs": [], + "source": [ + "from classiq import *\n", + "\n", + "# Your code here:\n", + "@qfunc\n", + "def q_add(res: Output[QNum], a:QNum, b:QNum) -> None:\n", + " res |= a + b\n", + "\n", + "@qfunc\n", + "def main(res: Output[QNum], x: Output[QNum],\n", + " y: Output[QNum], z: Output[QNum], w: Output[QNum]) -> None:\n", + " prepare_int(3, x)\n", + " prepare_int(5, y)\n", + " prepare_int(2, z)\n", + " prepare_int(4, w)\n", + " res |= x + y + z + w\n", + "\n", + "qmod = create_model(main)\n", + "qmod = set_constraints(qmod,\n", + " Constraints(optimization_parameter='width'))\n", + "qprog = synthesize(qmod)\n", + "show(qprog)\n", + "#15 qbits" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ZV9OGqqROPP-" + }, + "source": [ + "### Exercise 9 - In-place Arithmetics\n", + "\n", + "For the following exercise we will use numeric quantum variables that represent fixed-point reals.\n", + "\n", + "Arithmetic expressions can be calculated in-place into a target variable, without allocating new qubits to store the result. This is done using the in-place-xor operator.\n", + "\n", + "See also Numeric assignment(docs.classiq.io/latest/user-guide/platform/qmod/language-reference/statements/numeric-assignment/#semantics).\n", + "\n", + "In-place assignment is often used to nest arithmetic expressions under quantum operators. Note that out-of-place assignment requires its left-value variable to be un-initialized, and therefore cannot be used under an operator if the variable is declared outside its scope. Applying operators to arithmetic expressions is required in many algorithms. One example is the piecewise evaluation of mathematical functions - calculating different expressions over `x` depending on the subdomain where `x` falls.\n", + "\n", + "For this exercise, replace the missing parts in the code snippet below to evaluate the result of:\n", + "\n", + "$$\n", + "f(x) = \\begin{cases}\n", + " 2x + 1 & \\text{ if } 0 \\leq x < 0.5 \\\\\n", + " x + 0.5 & \\text{ if } 0.5 \\leq x < 1\n", + " \\end{cases}\n", + "$$\n", + "\n", + "Notes:\n", + "- We cannot use `x` directly as the control variable in a `constrol` operator, because it also occurs in the nested scope. to determine if `x` is in the lower or higher half of the domain we duplicate the most significant bit onto a separate variable called `label`.\n", + "- In Python assignment operators cannot be used in lambda expressions, so the computation of the function needs to be factored out to a named Python function (but not necessarily a Qmod function).\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "P1AsWxksOPQA", + "outputId": "c56c759d-fb58-45d7-b8b6-fc801c611f11" + }, + "outputs": [], + "source": [ + "\n", + "from classiq import *\n", + "\n", + "\n", + "def linear_func(a: float, b: float, x: QNum, res: QNum) -> None:\n", + " res = (a * x) + b\n", + "\n", + "\n", + "@qfunc\n", + "def dup_msb(qba: QArray[QBit], msb: QBit) -> None:\n", + " CX(qba[qba.len - 1], msb)\n", + "\n", + "\n", + "@qfunc\n", + "def main(x: Output[QNum[3, False, 3]], res: Output[QNum[5, False, 3]]) -> None:\n", + " allocate(5, res)\n", + " allocate(3, x)\n", + " hadamard_transform(x)\n", + "\n", + " label = QArray(\"label\")\n", + " allocate(1, label)\n", + "\n", + " dup_msb(x, label)\n", + " control(label, lambda: linear_func(1.0, 0.5, x, res)) # 0.5 <= x < 1.0\n", + " X(label)\n", + " control(label, lambda: linear_func(2.0, 1.0, x, res)) # 0.0 <= x < 0.5\n", + "\n", + "\n", + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "OOvAn02QOPQC" + }, + "source": [ + "### Exercise 10 - State-preparation Algorithm using Quantum-if\n", + "\n", + "#### Binding\n", + "The `bind` operation allows to convert smoothly between different quantum types and split or slice bits when necessary. Here’s an example:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "JCX6UMqROPQD", + "outputId": "6d35d8f5-4341-4560-b708-d70d443dab84" + }, + "outputs": [], + "source": [ + "from classiq import *\n", + "\n", + "\n", + "\n", + "from classiq import *\n", + "from math import pi\n", + "\n", + "\n", + "@qfunc\n", + "def main(res: Output[QArray[QBit]]) -> None:\n", + " x: QArray[QBit] = QArray(\"x\")\n", + " allocate(3, x)\n", + " hadamard_transform(x)\n", + "\n", + " lsb = QBit(\"lsb\")\n", + " msb = QNum(\"msb\", 2, False, 0)\n", + " bind(x, [lsb, msb])\n", + "\n", + " control(msb == 1, lambda: RY(pi / 3, lsb))\n", + " # msb==1 <==> bit1 bit2 == 01 (binary of decimal 1)\n", + "\n", + " bind([lsb, msb], res)\n", + "\n", + "model = create_model(main)\n", + "qprog = synthesize(model)\n", + "show(qprog)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "fc5-bUyKOPQF" + }, + "source": [ + "The first `bind` operation splits the 3-qubit register `x` into the 2-qubit and single-qubit registers `lsb` and `msb`, respectively.\n", + "\n", + "After the `bind` operation:\n", + "1. The registers `lsb` and `msb` can be operated on as separated registers.\n", + "2. The register`x` is consumed and can no longer be used.\n", + "\n", + "The second `bind` operation concatenates the registers to the output register `res`.\n", + "\n", + "For this exercise, fill in the missing code parts in the above snippet and use the `control` statement to manually generate the following lovely 3-qubit probability distribution: `[1/8, 1/8, 1/8, -sqrt(3)/16, 1/8 + sqrt(3)/16, 1/8, 1/8, 1/8, 1/8]`.\n", + "\n", + "The following series of gates generate it:\n", + "\n", + "Perform the Hadamard transform on all three qubits.\n", + "\n", + "Apply a rotation on the LSB (least-significant bit) conditioned by the MSB being |0> and the second to last MSB being |1>. How would you write this condition using a QNum?\n", + "\n", + "The following series of gates generate it:\n", + "1. Perform the Hadamard transform on all three qubits.\n", + "2. Apply a `pi/3` rotation on the LSB (least-significant bit) conditioned by the MSB being |0> and the second to last MSB being |1>. How would you write this condition using a QNum?\n", + "\n", + "If you want to validate your results without looking at the full solution, compare them to running using Classiq’s built-in `prepare_state` function.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "nSjVMfP8OPQG", + "outputId": "5ca3382b-fcf8-4901-bf77-72eb916118a0" + }, + "outputs": [], + "source": [ + "#version 1 with msb, lsb, H, RY\n", + "from classiq import *\n", + "from classiq.qmod.symbolic import sqrt\n", + "from math import pi\n", + "\n", + "prob_list= [\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8 - sqrt(3) / 16,\n", + " 1 / 8 + sqrt(3) / 16,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " ]\n", + "@qfunc\n", + "def pre_prepared_state(q: QArray[QBit]) -> None:\n", + " prepare_state(\n", + " [\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8 - sqrt(3) / 16,\n", + " 1 / 8 + sqrt(3) / 16,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " ],\n", + " 0.0,\n", + " q,\n", + " )\n", + "\n", + "@qfunc\n", + "def main(res: Output[QArray[QBit]]) -> None:\n", + " x: QArray[QBit] = QArray(\"x\")\n", + " allocate(3, x)\n", + " hadamard_transform(x)\n", + "\n", + " lsb = QBit(\"lsb\")\n", + " msb = QNum(\"msb\", 2, False, 0)\n", + " bind(x, [lsb, msb])\n", + "\n", + " control(msb == 1, lambda: RY(pi / 3, lsb))\n", + " # msb==1 <==> bit1 bit2 == 01 (binary of decimal 1)\n", + " bind([lsb, msb], res)\n", + "\n", + " #prepare_state(probabilities=prob_list, bound=0.0, out=res)\n", + "\n", + "model = create_model(main)\n", + "qprog = synthesize(model)\n", + "show(qprog)\n", + "\n", + "# Your code here:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "mp0cnm12XKjo", + "outputId": "c97473fc-1b10-4bc0-b9ec-2db111726a00" + }, + "outputs": [], + "source": [ + "#version 2 with prepare_state\n", + "from classiq import *\n", + "from classiq.qmod.symbolic import sqrt\n", + "from math import pi\n", + "\n", + "prob_list= [\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8 - sqrt(3) / 16,\n", + " 1 / 8 + sqrt(3) / 16,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " ]\n", + "@qfunc\n", + "def pre_prepared_state(q: Output[QArray[QBit]]) -> None:\n", + " prepare_state(\n", + " [\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8 - sqrt(3) / 16,\n", + " 1 / 8 + sqrt(3) / 16,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " 1 / 8,\n", + " ],\n", + " 0.0,\n", + " q,\n", + " )\n", + "\n", + "@qfunc\n", + "def main(res: Output[QArray[QBit]]) -> None:\n", + " prepare_state(probabilities=prob_list, bound=0.0, out=res)\n", + "\n", + "model = create_model(main)\n", + "qprog = synthesize(model)\n", + "show(qprog)\n", + "\n", + "# Your code here:" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "-TDAFwWbXVeT" + }, + "source": [] + } + ], + "metadata": { + "colab": { + "include_colab_link": true, + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3 [Default]", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} From d3343e85bf5dea2068483e9cdbb73a650ba610d2 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Sun, 16 Jun 2024 17:25:23 +0200 Subject: [PATCH 26/83] Delete community/QClass_2024/Submissions/HW2/Yasir_Mansour_HW2_QClass2024.pdf --- .../HW2/Yasir_Mansour_HW2_QClass2024.pdf | Bin 72767 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 community/QClass_2024/Submissions/HW2/Yasir_Mansour_HW2_QClass2024.pdf diff --git a/community/QClass_2024/Submissions/HW2/Yasir_Mansour_HW2_QClass2024.pdf b/community/QClass_2024/Submissions/HW2/Yasir_Mansour_HW2_QClass2024.pdf deleted file mode 100644 index a7729a2469e24ca16ee9105bcccbdb8b7bb01d8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72767 zcma&tL$EMRurTKL*tTukwr$(CZQHhO+qP}n=j8h~zxVx!Y%%*#$p6c!)krx)F zVW4G!Bsspnd52`A$EU})Gqi-{=B5+1uy!_aq!YC^a5fP(F|so@p_4YTHFGw{XJlii z=jDZTa&|N^uz_^nywRG8#qNOVJ)^h;>8$ok@fRQhk7uc819Q^4Ht_Tu~H${ovgbjY)t z{NQWb_w9Z{oNMI`{07H+aPfTs%y+KD_sjA7=XdSm?yW7RKWNh_VqpP%lJV@YG>FBP zmh~P!u+Fj|a~B70mn2^l{#pRR4Rx{=lbBSNb()tL(TJb_-bsTHD!d;#)FK|t{#lNi zY^;m(++NV$-!Nc5_qfbDZe)+acAl>|5{!{w6MCI-A3nPANzBfe7ygXUM&9Plom*HD zxM8g0kxU`nWS?y9&6<+V8#d~G07LKsJdJBb&xl{59B1J1HjR70lA=@{bQpkpf(aK8 zum%N~@DLJnFFp%Ug`#%Su}qfN5M@edMIW8%Wx$o!?unY}eur>h>F7F^Ru3d^O_Wfc z66q449)T`o`C*fj;BLC_cwSTgZhsS=3;j^j!&b0xqG zR7rXPE`N!W*ta(pf($vWIj@NNysFb(FO5I~yL6a~HFR^-0~9Ch+9_zWjg)gO1qZU$ zUNwBe+RI%+7?n@iGey`!$4q!6m$>cz60yWtBK}*rzHx$$FNz8aTiO}c=cX(o8_pwd zVj7pH-;a!NE~%0$**dofnhJ-al1(YhM0L?JIB(@aV_8FP{G2soHDpC|%$SfPUYu7fO6RR)-H zXSttkpU~$a1yt4R!0M;j%>uILmqSKw={Z1w#sZ+O@po6aCHXiNL4y?LoY5x32G9-c zM#vs_FNvaq**}CHkb3z{GA1QV9swRmuH)fO9H?LN2EbNWu~GuQ#VeZ1q`xCEm&^b^ z8FZF^SHLIan(W)H9CSd>7!uE!XqPFiDrfrn>Urz#-X+xc?%>HGNN>m3U}uD2IpZcU zXi$G-dLrZk?~W}zk3*RJN7cpNL>G1Mxf*sZL2Be@1!YrYjbR-7S!i(csuaBmb^j>y z#H5VfENu(;M$mjC1XArc-eYNf0N`Jo}Ahth@;N(5w2*b>&sKc!Xl z#~A}^QC-feezS8!kNW8FtN-ty&rjyXfG!c+;~j*1>2YcA@A-}I=LhDuH)HDU=1yY{ z>xbtaI9LLn57NtOE!KBG+Mzah=Ad~1EmWgpaEMjTWua)2jcY0^1*{HxDg=KMO4j8p zA)F_rZU=#ec-~?Ht%%X<;l-=>Salw&)7x%9fE}H$%lpnWtvl`#wI|Oe zdcaDI1R7VOB4|p@(rJ_O|HO|kdkSws1@qctH3AKo-s4F;q%KK*3AJetIoQQkxo#|^Roi0kAaf_2=pA$h~ zvd(I+MANh0?6C<5v@m<%X1014F_C{RTE(Vp$q_w0 zs`%Wv--jja;&RG=C1e*8Ee39Dk|ii5L@DVY6ap0NG)(|lZfldT%5XaEgjPaIc#`?{*YBCM0 zKtO7HRM;N{F+l}Kkj3;nOvoC(>I`NNAy7jRBT_KvUHTHdAA_2$vpP4+E0Rpc<31uO z|7@eRs_HZQIO!#JD(KQ~ujZ{r*u5}wcdSUfg?rt6OxVXg;0r5RmftXgIeD`qGCK&$0;i5Bd$CFRkF==0wlD6_(VG zg`>uQZNK&{d$8LrG;6EDo>gxv^sdPk?lYZg`=SWSmRqP|IAjD3-!4X#@EGtEHD!Yl z)zUq6bxLr_qBpZ?shyP#w|FNUY-$J_IP=z2*Jrcif2LT~$6QwcCFaV|sEKdr5`M+w z;8;78B23s@;+w){6mE(Qm9$)QtC}a~HiVXmPS4hGGf|Qwcx^iN(ao~3k{*JER|R?7 zVumXwRF6+&Rz+)IT*VA$Hf(YV^tYil#o9xysf%e zM0|J6o(#jE;rT zO!GR!kZvmCKC>96dNhPpa{fI(vCx*rL$`W!=-)GjGOKg3d7;=tB1_W<-g-4FxA`kT z(fcy)F!fsF0&lZ%Dq!g3?b-IU?Txijf$_+PG)#Lg@gs}z^Y4bmRA&UCe1b7X?@o2t zpt{xa$7dqu5KE-`H+K+`t~6~(9QQS6t7HcbCpRlGJZ?AohJ%Q zzov}qLX`wQ1Bn<1JsS04G}#Qzlj>mn8I=op5qS%WpfbN0BF=B$6#3&$ih`(f1}eXk zS)nQopnh|@s+htcc)fg>WTc`NgYbu2F@S!7>q}fNdOzr>=H%2rtAb%?b7fI0=U$74 zVy1XI6>f=o)=9RyT;lI8EFN<2pvwtK{~D6-1*jfv`*_9CahM>m2&%6ezHGY24?1p% zRKPLvxiGag_sANx3enK^DRG2}t~7)GE~#|R8i(`QY`Z!R61dw@acH_NEU`?wwan4s zc?Mmexw`e?+97>!o^!mBk#P@h%m6JsG}~bN=Q90oG*+*Ltt%)MBf@D?7he;f3McZm z;&a_eko}Nm!nVSwcgiPOnzz5h3l$Pf;P}x zX1!5N&daNS7-koQ4g8%Hq;^jh+P1fU0aB~?^s>mkWLJVPL>sIi8D+c|`YiHk3||yG z0Q-ld_=H~k?ECr!=Ka3Y=jZeHd!rJ||BCmG{2t3dX%)72&d{zvY4d!akoQxb42!TK zO!Cc7I4ln?HMB*KekMxL64CMkq{YL1z7CItCQ6V^-x5?BVIq#*k@EFrj-^q#2?D7z z(oeQO*!-RjDysZ0uI6(p7jUUJbk7T|*QiV&!62)xzZt#9#_RayY0i`WfP$m{lXV1A6dcD^NyZ6Hcix^5! zh~3)@CwXvFuLPe!3#%u`cM~!%2~HPWuLzFRZzpFj(yrD4ljnyZh;xC_x0Xx$4Z8J! zwk1=lVi%U9g4$lCmhV~C_88+SUp6$S=O-?-TEs#P&gh08KABhc6`PPCgEl1{4<1o7 zA^j+BN~DODu7zH?SX?V<9iWa|VbyJ)j%%x&?WTlUm>Scei!`B=5l;QaE zzR2_2V5|ip3uW!P%TL`tJsUn4`(r_)1wNWjYW-p{iptJ!Op^MMx*@UAp^u*9s>HBY zY0#Ycmf^Nd8N-s{(t&(mXfE~2~94Z}-d${bK|Exvy?5*yq@JsSH)VBxLnZbA? zdaWg~fFyz*L#uE#UO}HL&3@gy`nBzNNaoC*6Ijtb*Kql0;y8UtTm`?H+LN7~-eiA0O|hL7@=w}~f9Ac1 zDkQP~YDnjzNAc}gD4_w6z&adC2onYWxHl*D^tjB06{WEKgL zN%h8xZe|EjT@CqDVY=J{?vv-Z?FwJ8=VBt_K4+mhg)W{Le6#C0g~109uj!*B<=4pU zr-BEM&NPK1cV1cvDOpcDw#_)o&`;7HvJGT>o9uUG=Oamx&2spZo`@b(2h@ zcJJ2p_A0y~)e--UNq|YMm6{>v!E`b+NP%ytie8MYk=D z4Ne5Zqi1xD*=1_r&=?7dLgD9;R4)ZmIL##%| z?hzHu8VpZXRk;YP3wObx7nw{W+PvlW{xV>tBNicD#~@{b2U)zYP=UJ8+jlb^02wFo z?#@6^x!=wscBuIaV~s$HOzo>;XbRl%=*-kKNI_WmwTkrN`y2%CGG!jK5{$&X`v{CV z&qCb7B$Sx!Y2{P_7XIfZibtdKAY)qEO%IEDecJ;105*gAg zu!L4+aEen29@6Q_#(M@$N-gfy5a|)P+lZFI+&VH7)uaf&G!(uZB&V5V_Ts^E&HLh4 zpW{++810g9kevAO)AVCu7~>{hX0W;O{Cti4ge5fAt({MHird0B6#hz{#fCZy4t)=F z9-XGxmthjPwSryPu4{T~^e(WBVoM^och3!(#{IJ{{ANjbHOPh750Q3d7J<8s@>v-j zLO;9<9hduRzy@`#%8f2%CUrHd4M;CNC9-Af&r*I@CHb{Ukrp=YrX&X=375*Ig+&wfi7;hwj%?^C~CyFc0SpY4`;>e2%9k~{B}Ka1W^i&&3_&ace6PS9)jY$-_^TMxoM z9agl915~3BpA{2XkJ9t#lG7(@XV{0WNz1wq-(Snb90!Crj@3bTBk75R_Xw%uEf5;)<2DNxvdh==S@Wbg z%JYd@hGKg+48=ho_{WA&=E+@KajKg}f{-0caf=rfq0ZTON#rA1%$kSkQNy}C(+07v zsU7n=8d&)70-f5bs~rKU%@W7mxPoiN88+wM?;F4McO2*cuN9dX{#RCHr)T<~R$RfF ziY01$$gMlagO@?w>(|!@76-kziRr-LjTX(FF|any5%T355qlu9T&8(J$GWy$p^O;u zY{0GFJlP^djrAKg1o(SAd2#!G4z8>Fcv<$Az4Pyf1#3NG00`F+G=1NuR=U8Ro*lof75zImd4{9qo7gH%napUE?j$Oa;Epl8uYx zaUYpwksy&U3%sZYv~lqDuK_OOi7haA4|v1e7-(DQG>Po^pzJ_u$V?D%lF1w8P(Z9h zx*d5u21O+s!Dho}TSIe`r965(HolsD+29-77bEWh?*ws10zFvU_;rXXTn0C3Tp2Zk zlSdFyk_y_Q>xH|9WME-aTms&!fPueeQdHHt^cFYf9(l!^UYkUOBm`>&`%+816h))a zAr2O|vD(;OF@D0XHBNPZvB@Rl!~89$lxX--tOl&LaNc-O0C*_EHJUIit^t%qxNEvq zJekDRtQ2UQk*Z3h84zktSg-i3ZIZ3h!cbQ<7VI2vPRfP$9KWCQzhs3y-9q${a3+Py zrM-K8+#?ChKpNa^dgFTt}U@`QDDsH^O z1GthBdk@htzj@E#n5r5QccH?!BHC4QC)<7tp{GaoP7D{c%0O-!CvR~AeS+0C z5f`i-PS9ljAj&pIk&>=2f{G;Too)mic0SF2+W=ZetB!3)ioIaPXN{y|F6&R;Y3jCV zJD}_#!m=Ev1OgtQ#m;3vJhvbye7MMm-~>kDon7V{sF5FDzAMRDl9ilKtdV>n5Gx0f zS*Q|2j+E5@O}w5xO=-<5y8#<)pcqsZqz+55>;N6|rk=~M<)9DYX9~cSd&MuB#oONd;xmLfm*_V--!^l>Qh@pfe=%;)@^EIa|vU9kGZ7rl6m4XUG^eO)%AVx z4#BSXI)L%m;}j%Gdv{j$O}`R(Na_(Jo1d>YtFqmv$4~nlxDwn#ii(<^3APNG4ju2m z*^5nAkeh8i0?c`dJH+G2$ThLG6C{>ZNR!NADlm>`x^3!&iwWHa?o_n&On9Y(bqYYf z#iz>`xXWm<+|CFgW@5BVnu2_ukg_Ty@qor;{y?VwZUVXj3fh$d6Lk7zI8QMu0fWhU zzea1l?xePU#dA}0Y!yHbWJxTBrFZ$})dXO}KsuQT<_K2ujBTqRDHqX^f;d0|6$d2P5{Qft^q!GRy;GW6*FgOCY$Lv= zQh{b$l1a(QuhcMVJzsp7v14n}%{SF5rB+Yk>arqJi7E8CL-xoLI1lUN&%KI|amQ)* zs;*d~4l2q-@r=6aM6yr^EygnJ202$^9rWtR)UZueXOLl;yvipuh~jIN_0oe385{aY zCo}1Dp;**M{E_$<+~-GqaiEBqm*~o|?31Wv>YY$3E`gI$_t5xnlj_Hv1j`bhqYJYo zkwbcS3gySH1JL#kyRc=()}q8rKcBjFsmmu$)ZVu#?~}H1`x;5SJJssgsJDx+6q-j@ zK&UrD&qG5dZCPf@Y_%*t-8sTjEL&%plUILMtQ_~Qq_@?p-<`C2{06sEw1H6PZ%n7g zPkgoNaX^jMT(8bF^A_j(rpGlA(Oa4!|;INHqDcr8?OOBlt~d1 ze-S9{6)|`SPPcA%HQIO0vwH7Y<;c0#6+_wffF#q)L)gXGq%>AiY%QnTghQ8JmJaLa zIqkh1?7_$h44SOb^~6z>6MvZ@YQN>5#O@OL=}i2t?hefSfi1h12-F6FF-M8)qBPV+ z|4vy*_z@9}KE5Sz;X&g3HhD7x-_WRJOi_3CLm1_q~ z94Qe=C%px*lP+ z*|wGe>OyuBmF6*n)cgB(j>SX%p#nsk;X^wygYhl-nIvFmf5^h26Nzq+6s$gJ2b6tf zgnxu;VfW0jpf`;JYNf5Xo=g!bexS02Jg2Ne}xf1CSsZkY7@ba~()BU81p+)m_Eis#hS;qnBG_wdT%hqs`^=%cmxG=Yo_?=PYc0!S-LXhsU)$L?!@b5Tlt9Ly7gd$!_ksCe?-_`>`wb zfXrmamabW?WGr$fCKYd;0iBp74RzCYs8fZ3T8rNoh5Qlr^HHQ z2K!Ro5(HThJ;L8M1Q`Kv(zb!my{tby`jL=DPMN=OJq>Ms?4GhXo3GNqPO=gR+mMt= z8megVx8EGcf)~>nvv>z!j%%)|Z=f`>TKYd#4kY7vrhqPnGDzFeWb-)O#C5#qRtMO^G4V~;KYU#UFKrt_5iH~SYRgFu%(%2@vKvNQBT$R0%ObCThS=h ziIH6bEGpB(o*+^(B?0>&?`*!Jp|&IXf{KX7LLU%{D; z@&65H%q?5(j+-7m2VZ^U9XfvlWROmPR~nIB)UWuAh@~*=g<`m$pTtCR1y0O3vukUF z^&^h3RPw|_mE~6(rL17Q77&;|N3I_LyZ@TCCBC~&Z;v}?<2U;$@smf*c3QXzVb+T2 z$UColG(jTDl)*c1Zs_l~dwRLQo}a+#t#p3_1^#Nq#W`EQ^9Jx;cY-nGClx=nNscipcH8HYccTf#ZjjJ z^x{8=|0}V2k*~`4H4=EYn^MiqCT!Jh+4T*rVU+$iiZS^d&Hn{h;fwI$GK8!~OS)U&1A6ad4EJ{CV;47T0I%_Xlph_4+aPb@1{9Srt2o#aF=E zTF@mP8N5 z)YLj9p4!r=syW)1JKfwqxqyu7f})(WaWXv_G+shwBoI%zR$lnOu?+fzijsT91b?EN z)guA17x`gthnOYX7|y9R4DB0-w5PWZ1u*O+^XKR>%f+-%I)~0@Aq=VYEQ5*Yo_h|= zR@gx@m~T~Hxe;iEBX}sv7!JhLv7jYbF`kyPB}q?#2>*cicvV6u4X;!9$NuerW9-cN z9FWRpzPZIr6K&VPU2|DiTx-}t>jx;XoWyztlp@Dzse&E##v;q+=7o*i!=nK$L?SVXq$ae$p5yuF?ZEGrt9CP6SNyLo~`3xVM63#g7 zs(_$zL+!nWvXxfK=N28cRaAaq`PQN^}MRL7u3aC`VPH9L_lg`P9=g2M$-TRv|fp^Df4Cx*}o7Ny@!Gxa8MEwDWLGMN zpt{iY0c!zebDJZ%h?P#>YAZ0NB((|*VcqK_vJrx@Hw{#sZ`Rs|-ldOy)#8~FQmB6^ zC;1tm@3PuMDC@r1SLvzQ@C$N82*>ynPm0h1=rMt*PQQw8plgJfF}I=u%{|oKs}8@b z_&Od>GI;oMnq~C$90porpzz=`p4@|dCXoUkLClad|txr)Ra(F|6tmwL=lx0Rf1!H8nO2V^f< zh8a(AKR2ge&<<%rrA*v11(7^#Rq&6C)g;c^>wEGqFon%ytVl3=N3fe9O9>NA9>K3k zx1K8W*F3@>c?OIzmLQ3gvoZ;u*APCBn1qqGxEgAl0BKF(j|2OI&j?zP(DnHD$z=2S zbY|XZZ(l$Pqb@n%bsV2O#AhnJ9M|Yg#o3isR5s@3(>PO7f|!3Bl#4DIv`VZs(5W{g zn~&5tTggRPp~a;odatfggVJ?cHLGy)wN0B(FsOAOsTZ%HFzR=ewi{|47j>E0o-`>s zT!z5q`nICH4MuK~<_J+P-Txj%Q_cGsAXH$wi$kq!yN*QoPql4egXkQ-hTdm#+F+ z*vx-L8;8y81HJ}(bA-Nf)soDrswM|oX3w~59%nIx56d>wC~h)nlNcw;lY5$?vZl6c z9ghZTRR}$vh_F2CHS#khEiTV5_JQwj6s^1nh)IvUh)RV*OO?Rjbb4TKV>)^v!w@L= z+>GLSHH_>M83AhQWiiBlXn}{3sgs;Qqz!B53)u4m$t~Sdu1Ey?O1jrDGJb%Lh+FrH@ zRn$3a2B{otzx{xmAq3y8F!rAmOaCYg*V7y&v|kY!3yLbT(;*n>Zsc zSTatdw%1veCn52MVyQaBs+ls?e~q_+iXRx;%BmIf!IwpwYKV}qL9lik7KF4~QqJX$ z9JT~mg2iHnfa(Rc{eFB4eym%NASqub8!5{|jO_hlKm`Fv1i8G6lBAGy%YBr-pzzGH zKcYXG_#oPM??O7KG}?xaNByHkTzOvNdBhGv@+VpTyIA*`i93?FE#EXb*j}*jdyff$g1anIId`UXWKms}+nsYF&o4`39T{>G zw|i$xcJLD1cJ&4vOkkJy39uOPuw^poX5J*$C)+LFcHj zD_%<6T^6CRmbW+*%gl=F914$9$r$Zi3K!C@l!!7`|OeEFddPg(5sN*77(h)(P@}#%_ef(;d z=cs;kzsbMp+i9`s>xsXpRFPw-3GOmA(C#=^GRxFR3OvUtT$K9S_B=g&>*R4EOKBv@ z?ZLq^t5r?4spw&YCO5gXfkxjXjy0@e$_XjDYc#u$*b1u{+IOKpcQA*!L!p|C)S<~p zi27Bjv7MK$Iu_!LjwXm0QTC{ zvkir%G&{mt5oKXNepMWHtuI%V2w)qDF6|&!soSZdc%|M&sk48Fk4U_qOg*rGy)9t(m9A`H};#~n|{n8hGn1)cC5VU(LW6F`SJX{yo=EP`(l#? z>81v@n10mqeU|31+J20?PX*6)-Y3t{ylz_G~d{LdpMQq%k}7NFl|d zZntvDnPLg9>Pfl5jqJ~KAwyUg3sS*8yQW!b1K2vPe&S504@L-?{}!1CO~M!}#kUF7 z4kKE)2^n&&J8BU;&H>}21sTY=7%UV@C+-t}?e@Jx;y0dl4w+}`F{Ogu``!Hg4W%vn z?-hZU=}ZZl2YPxIzRU!Xq|oQ{=`HREJberG$9$jM(OXRmn3>#H?M_nL_| z8Nu61&VLW6mC2XNAy@jzp@sWTc}-2jdA45#inMqNo2ZGaf_vy+4^kwC&a>^0*03?~`TCPj*xh#ZfT^r!Mme||dn7Aj zODUX)WCZHiUi1bVtmo%3M1CM3=VEatoA?iI0j0`8`4?T&d%D z6Qj$c{Jjd@I4*)ok{M?HL@+tSp7gA$CS+?M&jV%;`6vG??Eco>5_G(BPaM^3aZu-R z5TaTkq6#`M7C@!i_+jvd_EPwF;;G1jaax=tr@cdKMhWB3oh-rE+??V z0EklejqpT$xS?4=d1H}>knXPE$YM0$-2cYkLu~$3=<*DYoQL-i>R~E z1dx~lm7ZFqT6JITdISh0Zu*K%8C|7Np14QW;>qj^1JY%BZuG`PdY)E!nBwf(ijlWG zr5KQ<>`j)Vnvk{6;!bX{3Dg&j_vw#j1@HAJ8OkKi#zsnJWcLJx9Ue-f!m6Ec9$3B5{(=XQf$Wkmb~D;}8bt zfN|NON3X=a!Mb^3G*^u6hGdfKPK+pyOu2m`#`ve5$vC?6-E=$&!AI|W63_`uXU(H*>5unO$97cnsExrQgGj;e@ z@|&q3$)fo&)mdRpSPmv`mx*6ekzM4=3Od(Xa2g1!RAFOyCee{IAB;<$)8uzPr&Ij& zR*@!3ZgVtX&y(rVSWRi7H0%C$-Q%=;CqEX>`6; z!od{MfW#{0BDNo101FV`3SOECOe5k0m*0XC=@!%Hwe74@`4Y!Th!pFYBE zLOkJi$PLl)0dXu+F*%#|9NZL^&ji8IyxVJwczdkiF4y@W!T>BfPKLAufoYR;Z2p!5 z*U)9u0;8P#zh*P}oU86Vg5-N%TS{_*put8*F7k$SNlY~|&PvMtn5K4*+2b8~#=k(iV-b{a~ZXAcv z8y+-yojUVsRd7-w{W}IK=}=Wd{QX7TOhm+Xtb58Ie*+|OhwVuM$e2UM16GuLWgAuH zV>ft0l(;bpdLD|IuMrBf45!Z)hsgb9Fvo32rSMJTBvSQVBGCgXVz~nWUBx{j&-4nM zXS9Vgz2Gwn51Y6#$*N=)0f=Q6q};f%c%QR>!ti_uaVaMom*f?2qej*Ai?G7;$?n=} z1umVpu*O}xR?IJT&)6I3HIv|k7lKYB-AXM#K3Np&Muqhh#*B11JLFgswZi>>Bte4= zG$suYfB%Aj8;$0F8_<>MPlb70JpBa#HyF3BPbZKq7cs;^Vnn zO6}?yg0va(Y6R?47-bD_cwTb6Y+As;4$%%2g7D?lr7<_d8n%6diIz;%p9Ddp_sK2U11{q7=Z>a^W|VjoNksM1_vaJZcYd-%^c%QPbl zw`rYIe*E*XK>T#hU+G!xY0HUBpcEn=mpfukChqjMZOB0i5E3Umhkw1>3V_Wc-**4W z6zDdYAS;!&-(7Go$BPI&DfmR0?_UwN*9MhaO}RL&(X@@mv`A~c_@hg8g$d5;WzKn! zTELU}2{4uNgqkLrgsgO&Lv6g)hsJBIlg4lDQOgqMYp>k1$Hcl5|G?i;g}pST;m7~> zN|O`FOvvVVJ821QF2}F{q&FTqGVdlUk&`UJN-gwJawyiP4Ufw$)a}W+FF3mUV-#(} z*plYUmdcp?yQw_jETJo#ETd(|hPWuC# z9lYfF|H_*AfA^D(otf=_%6jHMSrfP2f}g~Hf%RjnhAq`k+pPrZrIQT~;s{rkw%ldnGkf=&&4&S6b`}%|NkA5e?#`=@ z$0VG0PjO(!j%4rp`;*>xL{BT!U5LPYqNn@#gdjH0HFz-IEq z;^**0aGa1f*({BNeDM+Y0*O2J8AVJ(45bxzdR!oDWuvsvNaunaTKH-G4wF3 z0K$(;#p#_A0YMg6`HFvymDCAV3@Bh;1e8xEJWdt%<~ZXa=nEE%Aks+md&j}xgY1(! zyKBTDlVtls@+3E75_5Wlq!s;+bSHZ*94z&r3x?qXObgOvl8^zJui%c2z5^JjS7@b+ zdeRMYd`dnJeO`HNVI?J=RtZ93awx>gKV&IlWtx1EhH9PCsZ7I!fZ{dkF;7NzAcL0y zInc4MQGP^Mk<`*$Qm)EEJ76@FM{zgg)445z6%8@n02?F(LG z0WDxh(`@SK&X}!9aIuF1Lb?Yw+xAN&B{sT)n9FE^1mYs6knI>KXo+SD>bnHN-WTG> zUKOyK8Qr?Ozrwr$wSFk6Z~`m}Oy;UXjOOjy;D*HeI5{aesSI4CpG*b=^UvO7a^=DK zL>|dV+mAiPeyiy(eCuAnIUv9HxwW*uJl-o7xi31{neesb{*DthPZmhkn`DjNhc1n$ zRv3f_VtE3g>q?sA7kA6B?9`D@=^|DQYn*SG0fUuIVh%pB29%nGNEPC0Ma6i=Lyv<&!$g3R9ng1!wS8?m?ql> z=OXfztAP}R3#(n^!_)B+)6l=7`e!orfYFKylp*-27zR4i&^W`}0U?dOph$EiGVubN zz@M%3fT7L^F#AxAdBmn&%XN)3ysg*Qi>n?kiJJe7fc%p9M5R3)T>`s#!%)ouI6V&d$!%U1xeM}7vgLQQ_YlIKEO|Y>zB>g;g zk6Uh)l^6BhQVLpieWJ5!SI`)en-l)j?c?Idq|s9Wf|vztxLa_<9NqJ0h^ctP*vku% z3vdLTDjSS3J01qCnpF~xT+tqhr_a>>+Y2|5`4DMHMzz^94w$V8VA7Mtm2O{nAJs;> zcM#NQETA*?4CfWwgLpwr5TfbANWe;>r(U%Lt@Ml}Sc2&f24s3eBGYr3%JncMxNK&s zjOiaXwhMlWiQ$UD&{hWuj^L`=?Ud-xTH)k6U^xqm0eVE;yF?1NbTM8aO642mJ0KX% zy2q!h?aV5$eY_La_a@`ELtH%d9p!aP>K_9Fg-`q&E zGq6vuL=Ucp?(HSJJg9mK2;HqEJDf2S{+5~z?v(DJS|8^)CW!U0lZYgumK2zf7-l4? z^s-5@A5otKry7_(pS&?gij-zIDTTeDS z8x~=IomIA%qFhJ6{O|(4IfG%amqGKBR{P@PG3#hE@vOr=72$lZQ-{+V4)o!1CqP9keW8o)E`&G!4s*edZgkgzgWFhC%`YY^rvhLcNk&OzcQG_N;D>!L zrRPPuzrDTGehs%O!6`ceG{yrB%bn{N$it_juOL&%for3+uI+)H9US;6rGVNCm*?%6 z$es6XTD_pSSUVEu>ID1FdL5Pic_;3QE^i^u>=*CK@BOYV1lP2>&do(VMohT|P)x(1 zPN48EI}N9?Jo&t7|44(~agM)-Ale$ zfQt8o<(EUSBh8!E=U-$U=|iLv-$a!bk?m;58lhYe{x*MKF6aWbg95TM3#BKYx$cmv zss#-CnMdjMKMO+n!lwfLE>8(rt4g!8(%MKu?;#tu?N@+9MXzq?RFwekJPf*tt;jRl z97lud(qE)5E*VmE@2BfSTepcB7{PyT&5g;rxc(Iy{ecBXJhtB((4Fhjf^WynnK9>! zxcMg6%P#(IAE?Z4vH)*a&5P9xGgsS%w$vHbEra-4S73Te%-)Rv63(d69-w!zlfxa8 z*sfnN>(*px1f>?)Jg zy}l5kY`QR6);Y}~mvp1A9;ZHQRvE0&M^bKybP!#O2qCV}mVNvU*_nx5B#lAY(Z2+b7K0bi4^aR0rhK>kfTV}L( z1v|`^%jG~BU@cKCZF^*>nL#dbj;G+06W8Fu5FVdnyRiCw*(72@!fCs3hn{zaq4hN7 z3)GD#f2@l-!mPOlU12E&@A;(em6< z1;xpUMsv))3adQfVP6UgFHbiLbTlSHRskp4FLAclvT^b&QMKS1c(+J}Ue*-OaA^`( za*#?$AY{0=Azc(>H`0%b$>z3nf2_NyW?oXrxejP{XE;j?O?2_Fuw2nH!|&f&*)Ff9 zX}NvyTKqx{qVx5W7hTSB&DC2hA%lafncF&H63^tsFgyzr@yuFKG)N*ZYlS4yb5M4G#I~$LNv0O(mK#5XoJp)xRkFLz+Ki2z z-R@;VHS61HqbGa~tJVcz*P;}j=SK)z07oP}*TX`#%JYk6qEb}?5pR-V zN0t<}I1^Q08pga#sN-A%VNt?K8V+3Jl5$s8hh?K1QVo36_KK@yv{y`j)2P%>PEjYK zq;^%_4NS^te2OU5r}NMm2U!Ba+AhxFbrN~ZN>ly+McF&YjM6pRgXcW9ZQHhO+qP}n z_H!QFwr$(CtvUD3o#ejrdo%gwk4`$fvpb!=DqU;Wu3GioHSEqMxD5Bcqq^EP&Rqq* z4!8ZD$=j$GBf_Hz>XgL|Hx_5OAO_7OM58X%F535`Z9NY!npq5c^a@UM;|q~C9b@d zyyncN$xn}WOy)NxiIYyX9x60axUoGv^=fjv>8w|BRvW~XjK z0txP%m3=iHW)pkF6}q~lCnIdmk1P|<<8XyA2|J1GfFyMQP{cvMQtS|&)qcKsW)Cv?Dpl!3Y>=d3^{YZ_Cj}r|Q zlsdU%j$(LEY7xj2*E65J>8|)fD(tFHPbQQUC5tpoQ8=~3W3%51tltm`qM$F3{m7|L zc;PZC>I^eTW{|N>pJ^tL-d@PfK=Iy96R?*iDm-`iJ;~aHaE2f1$R-zb5vdIuv|$&$ zEkc$nhdJ{2sanpVK=cUZ8nocvDq7P$0&FC#`m9_X@IyyoX_tz;2(>k4g#O6xmH;PV z0OnhgZJ9r2Ti#3{Zn6*3{~-Pwd;&*1y1?)%DN5(qQJ!4dMDy4utS=2*bwk%+`9`Z zG_p~?fE?0=*ch0x-b6c7NYhD5KV6=_EwN>V8hT8%S|)0|{5L(Z;{D=#*%7aa>7!mi zqfxigp|_Pb*hr=@F*_m(|B#drAAp^^-Rn8(_=X$gYj$tb@3?=v{>9k~L zb#}EOLN{PA@%e=rX=H8`B|vaR6Z2Mnl|ftMzgA{@skE98xyi zHhaBu!v?GWq!lkPd6%wF;RAQPZ73H>oKcp02P$%x~t@r)bCa z^+&G1z(-!s%S>~|vF~9^+~VE%{fYIJqrdaz_N_i}W*W_I*IUQR-!xl}tkiMW)^Gjj z=El{}cUjs##j}EoG%P$Y1YoVVT?ds@>ko7a49P-u`El?xwHoXIruQ~nK9E-Gqzd~Xbo^QqYJn)cB=MYtm~#h)$+m+o1n@xF*D@ynpa9Xi3xqK_4y6jZH$ckoWZGwkz13iv+xWC{`;rMf6pY$q-LJSaF+Y2_U^i3lGu z146{Qj0~E0_N;(`Luvsw7Nk2rf9ajQQxTfn=cRIP=bBs0)d_soYMQC>Mrw+w*U)9L z=yP9rRYt+vI~p|9cF9b4s~Zd~ZJRulhfD8kVH4>tQrEO2Kze+X-zt2WS#y~j2$4k8 zJGH#n7g4N%=T_SxZ065<%9kA+AO}}9B6jN+apBYR%Mt)eY=n5R2d#BmKlr?0_lrKmIncBl#O|uU zyP+k_g7ECSfA#Pu&1SKheB(pki`trSZb^ZMInU%)US`Obhc_O4Re=Z}b9G6x!`&)X z%RIS!g#JA+6q?nR3(D1EuvoSHDsu)pdVFSv(&KsG2;zCov zTtE$s{Dn^feE0!;9I?q#eIq!tp&kCs>ERQlRlz|c*1*cVq%0y+r6VqU13Qf`Bh1m= z)y;ImmdNOtW&PA0%?T0aWpBu%RMd6L8|(Act;F;d7Lps_2D`*PMA*>+_@Hs2`h9Yq zQrC^%(_Nl?DxrRC!_nBC`j>^NG8UW|F&Ju1)(c9+gEwM5?1A7{=+95u_|W?a;Jqo3%T)n9LQixi*v$kC zOLsxObGZ678xv&9xx~D*r?XmjfyB#;+F)KH&#+{rM*LewqQC2`9|< zqB$-XONDP6SvyU{n5yU{i);QGQB|4nVk5da^dn=ywjyeOKkBhB5<4WSFOkYZ9{A@04k=5x)Pz8Uwo6G5+K3tLRH2(Uiz%QroIY$`Wp z2r3c!Rqe$<+xM!7e1*L@G@;pEbS@Sz-(uHPw61-lHZ~9x9`hgNl+FPn3yCT>Q=N;B z;O|AbadIo&1uo+=0{ZVrA{5Hvn;z;Nu5HT(ZI$R9qC(9OwL(4m9Yw*s>ue)iDJnA> znN}K<`OL4JII9}>gCKC!e$W&g)R>K|5-b3KVeYR#HVub2c~c4&Eqz{ec~1=cva?D7 zMhi%jzsmGNB2XqkuBa2BdwxMfn4Hccvjb#9O1P-$sMuNNDh0AY+m;hnJZLKlA}H4P`i&L^ zcEAy~g5zq1NV9+M(f<4f{Rz|k7pBhgA2D?nc832Q4!_crv?XeR?>{e4bi>wge=9GSTpzbu5>p>m6 zU+GITVXoe7a%J;hN!6T7*Uj!>T_NsagUS>c(QT!H)55T90~&O$lVMvzG3HrS&EOE{rrv!IU@bL(h#kX!j*KwIXvwd>d*zR+YFmz`^ zrq{qN-pt?LP(K|9*>!IjAq5*0TJvt&c)XS(@@alv6}t0PKcAf6_HHz2F@zN}b#!DK zo1rP!j-Fm08Wc$45GjwCG%jxMCoW_sc62oBTZs^dXdM&aRBb=`P+`PqDT;RDd2UDc zN2ZorW1jR>TcR)Eq$4faCm7bt zNmj-^xCzb(+jdPSi<&flvyVQ?ieZL*CpVw30{^KYl&({rzqqT%sT#1t5T%%|BbI_; zaPxI{*gcIg(2k>xYd_-DQ)_3{`iQeGO^e;V;2zz}$eF=Csc5r-B$e}7f_H(C%Z*l? z^(a<%?A*Bj71HIb_ryJN9?#^xrlQ9!I=d@!V}7ovJyZ#^fU*PK%(x>>(!RnJov>X$Z_At6XBJ1 zwyF*Pz>#q&`lSRjM0%zCM3`zzA{G9LpBv0V%4Zw3kp;|H>r50Hykw?7+@qaBSPu1T zONuR_VdL_hAc-iKhGjB5*zdE2h-1j`TNOpFGX`J@kQ7K65$b6sM8OH2{zDlDNj&p7zp#X7?)(HmVkkYK2BI{;^=t9c zGx%ruWz-hu5DBxHhGP2wX-mohLPET3k)3On{9PI63JLouTm|`gePuSL%+WS9A|<=^JC=y*k6lxYb8W_st^5YVAP0fq}v+^5;n(mhEpxwaPl zle;TP>P0oHYebPd?d=cVvY_E5qdf=(TVi$EX-&<$a0SVO+1yk4VcIP2sheBprDgQy z84jQ(1z^SQOriYU5L;07_L097XhC#yX3L6FksT6qpR50v&l(o4cU15W9l<|cwK>BXDc%oMj4`y;%-$0!`6;0py>9J9 zz`^Q1z}t34dMKljJsQJ0x7|Fx{E`$1L&vd5#DxKGBKhZU@#M8!8#JX}Lh)ry22x~Q z{Gg}%{0y`}3r~t2?T4xyEnJSJo}orW2v(x}`xu@D-k%B*nMNynRaSR~UC+R2gWz)i zt7f%2eFVxqt4g~(BigJ0z%2RL(Pop{ za44s6rvw4|!&iKhsmL8JkmoRB@m$-7U9y8U4PA?O?N3^f<_z{Jrd={EqZ}*npOfaF zt=UHm?2axzw%`c%#e(BC^J+-zrEfU2%3?jJn&%I5Wvh;u;au(*;u1r$dnnxB0#J?(|B2uItpj3pK zk!p^RsOn#WDgis|)L40B7wKOpw@8MljN9zhBBCLk@H-8vAg&TC5d!KAfaf z%`z*i`k^J7iias{cfehp^D>(=p`}_*Y97qz-%Ibe3lBEu)DH8usM<)OnGY&(3ZDKl z4ynjCa`(2XkT)S-IQfK+(RNq0TgKqDAweO3udm>l%a2G(nnX^EP>^ybnAjkbRAhr8 zPg}F=G&PS=?vfs6Oq`aPa`Ac&K5T40*BPZ;Qk;0I-oyr6FscTpnykBm8C|jDla$(R znV);r8l>~=9k;q(W@kSApu?Uh6(8eZK2~eIF(zo4j%UcJn#Ru)Wc5@GX}ZR0Uvn{B zSNnl)zspFSrJk~#y&8M3x|(iN=>oEKQB|bVP2HVpx7?d*R_lA z2R1Y1Ia$=XFpqo)#dsAM0gIH0^KQ~zJ&VKrL`+4ATrY5FZSgyrY6MA{*9q3`k$kMANfCmFM-C(sfS9q-ulwFBB+cK$D02#S=_JNb2Lcp5 zNj#wn6G3s^2r9$$)6lBQ(8}uOB7>7dZNn$+bS;);M2(*2Vs3&-RG2!3I|)i|(ku5l zyuxL?C1)JcFN_V_tztl3H4GPBzg4eyQu9Oh+ThrKl@t!NCj+2ERvto7q&SKTI@0*a z4E>dODBtJ%FNufpgz_ka>`2Fs9P>PdkcsjXYM~iy2`p0;1i1-?0oQ@E*jq=5W4fJu z{LLP7sv3y9vxUbu$ZZ_?YnU45gG4H{G=A*6L5p;|yth99oFI#jBU=*q6r(k;3!yt- zM70&0k!O1x*?(0Yh?>XggPpj!e7@5i?Qmr=oZRl+w0V5oUzxt1<(9zwU5@5`>o^n= zE)bflqga7?RHi4ku#-@8%SIOL`iq5l$`1h3ylQb!lWuG!( zo-Q({^-<+)4Qh@@=CS9TL;);}uVWg^Fzenh%SLK@}m#`wlTsN&3|EzIbq*vx3)AwQnf&4wzS zrHwa`JcNzAG|(vl!w*o5JJu~`;*#$yB<%!43&xAZ9cT;I8EWf?w#CWLlbOnYL*hZ? z-;(?OY904f^^QY_XgA0~(GCY`Tij$PHScQ_;C2o9jq1*~xPi^j8wugRu>q0=OSRj0 zI`=e(E;BH9wj3Oci=k#1)9(?l6x}P)=6xEDN7DzYE{K{rwpX}Rdcam8?@3m11VRUL z%9iiTmBkpq8OI#pIicBt8*m}-X61*xQ;YKl67eLmxWNR7_n%+yLrw@>_QV&Kj4^vvmt}CxVrWiRq0+tR6nGy8>I&c?;2`Yedo{kK@dxXwR zcc+ie3|Kpazk|7#4g~hn048N`JO1o{ zKZ-qIV+boAt2YZVijpzsA0x2hzq$X{NLD)MP#VpyL?`Oa9|(A9u^Apg>k87?17g6JN#AjD40H5+ zV4p&5C$sdZ*@0GTf&AObG)UWb73!;W;h8*vxs>4)_;=@T{)}ITG(LPMWAu{7hOnG1 zFWrEoP*g1RbTMt%(PnR>;6{Stw-0{_yGzJ&TJef>267h=xNLn>eoiUHDxZH|@{ zmXjs6u;NMwrNN)7KWhU`7u5&YfhJNA-W9?>2#OYR7}aqX&pm`~h6dDPT2+()m?qc+ zEsZga)rUQb)punOBL<@kMaPPx==_Q)WQESo;c=%(u1mPm_}(6y>DCstinfJe^P9kwHiG=thX5Pc=RXDsmw) z+P;KoGUDu*@W$c_gRf;EyaSG{-wp~tsxRJWHL!4_X9ucd+a!1}0b$LYgVhaR##h3O z8l^}pdNy#dTQ8K#PoE!Zgt4nN@t!qrKu_}2)aQWPVRKp-oX16UEgr8MH#4ZaeA2SS zCw1;tW*jcEE^Wm;@Vs8uE4WpN^ldQ5JQ;?vZiZ#JuT%T3Rz8u*P|#@GgD$%>Ben`^ zRz`UG$&Ld~&o&eKj9t(sOJRB}RerRox&vaKC3P0d^m@@|9=Rp|dWl>ImSm1o3F_RV zw((miWZ=2cq72bt!Nt`!X%fN&-O`scKER2$vi>TiX3s93EKcDsPWr-+=PDTrrn3w)Glpr(5&m?H=C@Fq>WKc~p>Q;SO*mgr zhw^+q$}|rEbh?pC?E*u5$Yq+_9wk?=XR_ym+4x^% z4I}GN^SQKBDuTVtk805HTLo2i3mslQgt)9?7vCWw#;K*|i^QH7XQ#8Drq{-VAMv#z zD$ZPGztCiApk7gUD}+#34H;Z}RGh8Nlv*y#)L?9&QKK~FVZy4^O zDcp=1)_K0Dddd#I>g((C{`MKJDEC3C1<|_bnaBK= zAd{V^B}P2v$kU<(cIM@G7oeWdzN@WV8Ni4?jyB$^`z=}m%%gP-iFlpO>`I@_c2+{Iz75%pQwBj zZI`x212r$3O&;Fua*?~&tIhM z5%E)z&M}hz60VmE9Hh0|zI$i>%t>H96m$yuSn)dQ;E3uZ#pUVW1F&$tU31_T5A^l_ z>i~^?-SKRF9)bqw(oPQd$e9TCG_FSnjs`S`7YPkB7)f%_5&@>SI$~jO#%f^coRoQc zcJdZ%HAfZX&6PlDm4iL&BqaiWI%MRzKwiYX_f21~7hE4kRC4#UNZngifY*SHNLYL* zpzXw&R|PHjK;e=x!1eC$PJ5G!^inxNVvwMnwlkRg*iN}d@n8WPXtGm(*Mz-p{{a;H z1tq}}SQ%c57Y_v=dOe>z3Yvf<(RwvWrRmDjP~u8T&E(aNYV!6To%N^AohwBlbQYXd{3|T*}-cWv4-Yo+TMi1J2~uV%k~!y9!FH-(9&1 z04bmXsi>7gJ7IBNfRb|SwJuSMokhIbuoaA1d43J!Be0kK$Y{VJ-iZm7Ucx!jO#r5@_8germ-?{xq3f!$z>@gvie{mJFhV=NaU8CikX`Wp+6JDXEkzBz79f z`r}Ysf>Vu`r%TTSA zUm|IWW=;fS7coFMDMuf=Jg!8(sC(aAq-M31XlfQ*NipL;LW;mBZwuL~c-Ty)WBOpGz z=We7GFM!MXRI&UiCH*Sms)6B`M zlaxul=a8AT299L~`GLhQe|CH6KzR+XB2pk&TBAn?SBZ-D=b2snT~que4THgMJR2n* zGm)$)Tt1Jl=8p2}S8p;>2u0PiRACYUC!>P3p`80pfldStVdjrVto|$vDyNQPUk2|k zBu|K?1=J3sQ=xmLs@LN;tJknjo_fw%&oOd_SojeCPEoB1UN`$m#@G3}?v3v|Y(Tw1 z@4t9;=KsX2GyT)4XDdy}T+%^pJs^MkgU39iz_knP#|+xYxrPBdDP0@zK~Y`b9CT(h z4hRZJ4?o3UVdV}3ipKeUirEc9>U){kPJEPITA!G1IKZ(439P{_#KaLOfYD)e`v1h~ z?G-s)4|dz{zFjOlntH_rENmN+tsvva(cfxm(Izzv_vO9vo1MswF!;~%7vn8uu>lhL zHLLtl;$V7&lP4`y%9C7Ph7_7`J^|z?br3@~ZOn2#?He!0h8JhWm^+|gW^FI4%R=7j z%+wWRzrgJUs--Lkxv1i(%Pq$UAns9W=JV$yv}FiKhb*KUwv;}11<=&5bZAFitrPO^ z`OxzHZHz(qXhv%Xh*;(#P_$*46(2l}&cR157f&(`@GbC^TtCvv;*Jv`UQqjCuF*Zk z-|FAt$>J%qasO@gniPgOyfRG{q9Ugx^zrG~p-t$;T@AwaL#Zx)jT{)Hf8GlH(E%yM zt!)E^?&AnDC)U03;nqVb5sO{~E-x>vd~cxD%%rmo%WB7+^%>fz(_>?ow^Gez-^J&n zj;g(}c#^;@y)^(Ra*Hh+fUo@RY}NC>%^;(8O`JQxvqDencw{9kv9 z5s9G+Q_2};T?^p(s%OQH=HiqTpcvZ}8?`)rTn^t8TlhY|WtmUQ;6t!SZ+_B(K zHbW~Tf_|@OKHMCjBb5-bw)M6CG~+`%3uFv@g!5=uLSw{F^deFQhs8b zF^*qP;hp_F>nc{7)m`7Fw?#-sBo0ezejV#nFq2$^0Tw;-1k*R2S5m9pz78ZNzQk9?CS`o6EPQ%@z72D*^h%vuoQd(qe+M(gI z2uT0Y__gi()!BUmV^G?5LCw0qP9rdtq=<>|dROsQOAE~HvmUvEclnk;@=vc|L<(V|E3J;}4&r6&Ni%0b{_- zDj+}caEH(>!agy{1BVINwAbR02r)pPI@*OuddwtsCg>Hr>6CU^*_{W*li1YO4Ldie z3Ix0A*%zp_d`Hc{VfG(ocrY{nquxGag7+jZ&tx!Kcvk}qxoTeIi%LG>Q`(qg?Yg&ZT) z)aOdP|ey7;0&Ys@!@`TUBzS(}w zm?h}Q+%V>V-Xb|mxj~`To)6_cm(_1XkI5t1unLoVM8ve@`{OxLA8YtlayoK*XbzS; zb#H`jj{R52oJyfRK!HG!j8MUd@Qt~VfFW>nSIB6z@gxLF<7KiPYrP(39O1hGjz%U( z@)?Ys0Q)c;i5sEJ*-;GL=n7vw@^&%@-<=|tD^H7ggReeEupZ?IE_t-hMHX(E-Fd9e zg}|L6kV{yJb%b$bJ-l{03Hu^RvrY{bmQepnNX_&ysAzd0KrE{-@-!exLQN(qVa6c@ z33UR!^7#--rw|6eV_oQbq+t}`YvlUa&cudLiY^%)d%wP zcn8r%Gq$7XfRab9-Z?(O9Sc7L`G5|+WcLM*%GR4Vs*sK1pceB)VJqmye7$L_mBQx- z;7N&R?B7i8KT@w@X8OlT%zv5O2Hk&|9Qoray@b_Rf(DpBleyY(eM}Lyp>0f+QOGb$ z%tM?luja{oD6j@wc%kRDtglJMmB+?nV8++!h665$b7f{ZZ0hrRDnE9AnN5OJML7*< z-fIsRsy2h>Rm8QYJ&eWk(aQ=iZ4Zy{#?^Z9)ci;8o|8B2`$x-)^sy3h43tloGr#%X zm4|N!)Ly4`OjX7VVv)%~<2%D6t8+``y5K95_shI$UQK3VyQk*W0qck5N>`|(8Avio zq_7svK($qc-B|>~qp%~y7#B7#B=b&Gt}sHzdC!jbc;i6br{?3r?WH+ZPO*D)SYyN? zUbe`*B$=TRgt?eth`Rtwf-XO7{3YTeSXCZz1sWJCX;5VRxuurT6g1(37znB>;LIc5(;(D1F@O0WDDB`|66Jz;<()OQ}>94xe732~o<2W9=lHKFo5YYP=}rXD#x-e&ym$*9jx zlN1j{?N49H90`OESxn455Aj&40U_PTg_iF4q<6*f^@V97=W$3s$ANJACm}z}9y-^i z3l1}ppH3>ZK>%iu)Oi39(J8+h0|*M}0t_bA*IJw8%??;*F~;#abYbutZlTBNL94t< z{oI+;p4|*#Hghh$9vw%x zFhX`3b7*E8lg*>wP&CD3r!SOwMbl4Up{|%%6=tP!@f%$(Q$Z98QS_bmL1@C+z zf21iyq%LiN2#HAr^KB%p&v#>BE8^2T3q368!BNkr0;l(sA#SUb>U%0%v{>zSlF8O`F&izEq4J5J!BYOZ>agB?5AAquFhv;~#i=)NWgOWc6_M${3i1tp&;o z&Zuq~1~&rA#-02XiW=u)?9X4&8oLPWDp(f|t7(Pf{j-P=0kU_BFxM^n{Yhq6lh7rgub_?B`!*qeoOPlMDvehe zElgE1J%9R2W4(zdSaNcUx>=j%h5&6lGF?q%MqbL$^pAUhE&eg6%b|ES>z6Z1bEa-y{5!GCXAkvW>F zh?|YYseuGDnDorram`<@S0yaWj0)I7KR=qD!f=-3dJE8}I2kk4D=Var+U2Qy-n!Q| z6SM*=&O)o^^NsQ6^jfqwstGb|^4ZW{qSk#LbR3naD-p2>qpLsp?TV2># za+`9u8lDbwia97v$BB~!WBnHyAAzj@m~s&dA+-gt_!kfGX>vvKF@z#1*~O;K>n*^Y zGk72Lm z5%DgyNLU>10b-zo^pvjVN#r1}WLdf;v|oh$V6e|wsBd&&H9f$2v-vX4ta?*|3>Jx= zV!0hSy>_#O{jT4Q?DO+$4F2}lzZt^+id`r=8#uY!8Pf`i3yIj;I4S+TrxX1D>h8_R z@{c`&w~D6{qAEr%J<))~xWe!%%fj@ei~UwP(0bFzlYFC`I-hWa+C_n$-))@eXrQRq zEd>6Ulz`tY6ObI55Doznq|HXyA8P6mmzI(%mn%b0Qk`~F(o*lN=gUuf z)9LJ+kFAfd>zA+YNCF=pu!#IV%@*SFhom>zYH(>KW0YfxrtUSf@4w}ADiZfZ{fcC= zwEMpJ`?xQGO$u|F3O#RdZ1<&ZTi7+P^g#R-zSo$#K5#%1xTxJIHz^^nB=1ENa6iIe z5kPqSqXVOcqa~xPr9jC(Ewc@0=Ss>}?G(DXRjgb^V6eK_MKp9~4U7$skBWPHJ?cl8 zEA#OX95U%C1vJY?MhoMgP8>4)wu-ZN=LY&LncqzuxiZSeSob~nJ`=x?4GSO4;S5NyLZZOXJy?pZKHVzU6T82feV|MD)^JwQ5 z&@HI5tLG^j9GxR@qFZrJd%fw(3LJtWs z3gPI(fDnQ~MeT62eZsJXXN4Y@^P?jrg!u_n9>aIi+}d8X#S06i8N!f1KHhLa0R6qj z$IRn6=uc4YIBmy@p~BU?{Og#KxmiU5;4Tq7CD;XEj4o{_Nmz(%BB$8Qt1Q{Cx#qOz zoo2PB=upnDrXQ{q2QL!IElZK8`rfnbMRR_ZsRnG4x%LP8!^LHHf(?x#zJ%7%=Gf=n zQ6Z{5w3|INCFZXm7ffZFrL-)jaBi}#Z3yRVlzUk*c&-4$f znK=n({&NOSwV+X#PBkZX`E|0!Z*a?Hc~#PiVAarMANG!#GC1}}96+j53hOi)8P1g5 zE<~_TFxBrQVU$vHTz~H9l5Ggq@Id;KYD|Cm6LnRK;01U&N7lS{jf5pV0Oj;|%8wx( zZxnHA!(1Uq!;4Iqx?3# zhg)=EG-tlMGxulK=;WTK0{0<8w+@N2p4&x2G`Phh7W;jMGZ?xm(=?ExgwC6WXZZ3A8?~gKk0L9e`M`BX7Gc5kg+R z9W9>6nN2Ts5HNhlmBfS#GIg&6JWcp+qQYVUK#lam_jlleOAXky00Mb6z~%gW9>Kv# zTG))wmal+4$5IzRB$Woc8xaXTBsgu-F%om@au0^b{A1#MVCi`(r_S@=pX=({?)hvv zHl4p9SMXiWp0KNFwLkqhUoV+!r=3sNsZrx}2R;xxFUErdDr(A2DAXN{m!|iz2=dJK zvk@SG+>Uz{Y6W1D?AYaco&U<_^xCBXy!_sSCJ^%iVBgkVV36wTZ7v?o1p1ci^R?iA z1-AfvRRGBi2ajHp^?`g5*;URvRUNjM=74{fq(^Bv zcOky(uD3xQnFvr0d>iu1_daYIqVvVWOLSWQ6;j@~8$u(}o8f(r^XVz7D8~r0g2_SK zb7=0^@QE~tD^vs(&DvNyw@pGbup<;AgzpZn8+j9mpFx&i)|@eYB~`h`>7A6>)+Rf} zu`02pr&=?|khH?ONeX(dcezo%7j_`<+I(S;Vcwv+vNrAOuCFi4XoDXhVm`H!*N1FBLa5(m;hPeOq&D)2;qmDYtkpY-~_%>Jan_bw&!&w*wBl`+Z0{ z+#YEY5^~7n7MVmT%03R3Et+OA(kxF4f#O1^s23ZG=N9|Lel_E8)O1Cq%O&Qop?*a7~XwbW*F7*1zK5rx;0hsgltdN}D<&g37E3vV3K!D~h*gJ0u-meFiq) zq86)QNpHFU{%Dv&5hOe+b-Jn_y^}Vn2(OE?d-Ezr(u z4)BfiRFCWCo%9<;k7xD3hpEsRumHDS*Z#CAE@~9gQL$!%P=*Jb>D}6`Z!J%+TbkgM zsjKS#I=s|}h0EA-y`pWUdJ_O$?5!E3d+SiKyY}oNC{OT?2Joc2MQA1Qu{`XYk_KyY z7(MbH42GHU^Wb;$fvg@YPNz-wC9W|da=IaS9!3=@D{YiE8DhK_+BolyHX5b8!9mBL z)-nHaOX6U^Nc%|il1!wE(bi4j6KEvMBZ^$j&*=0CqVNsuVkh=Z%{EU*K`@KJ#1|oj zSZ-FN4sT9-y64+@q7Nf2>_MRMA6@8%)YrMiN5x%(TAWr%4br+yEll~2N(Qlu-1;qQ z&7xT~Wm8juZV@N3b$yKCsa>^oZMP_a`-%&F+ZX+B-0VLJt~30jf3&5Z-madUo}Gf) z{-0XD$)VrBP~`x{|Lx`fD-m-x{$vHfFeF*v+JHjs{h#0QW0y!Lv80(uXB1WTvz`0VPY+Yrj z4h7qqb6vyIy2R7XX%$`FYnhtZCIfZV5+4N>5vFIS_9#T z8FV>haC|>mDG@LN7!t`We!p2d9f{H+r7>x89w6iYMcF$xX%@82qBCvV_Oxx=wr$^S z_q1)>wr$(CZF^6gPtSYe*%ABw1GVZyt*FY(D>H}w9qeWFd@qz=sTWPTc0RaeiAIHK zpIk?)x$-q$$bmt>U;+d3^g%E{v;XqZgBE)^&vGNT_({++RBjp4g)a>aO3yjEi>O9$ zOvsK54@zfaJTjfWadOV3#!Ye9tf8%srk@JqW>pp_v6mETo{C2ovC(S`XG*6}6e^{u zG!6`_+cd6?bKG0oot-XHM?|?eEL&@0RY}7cH8PN`_oZV{*~}Q8zM@Vjodw}ol_XGO z!dMxdmXfD8Gr(k-w46*uMmKX!a!y-DPbV5$&vDQNSkLu!mIg^FDi*{eJwhuc)6K3y zUpbMP70E$jcRvABes#9wc*`l z?A(MdcuM19fqp`#(Gy*1ujWD7NSib9qI)9~nD9@YX~(a65aQE3i!{FwIodj(=m$Zm zE^}V8rg~}B#=F1z6mcOoz*z}DR`6L2u9&%e5&UUDjTs`$H@sH|l(O%q+=&PG%Ms3s zlNKOi)k*u2E%8{Jlls)4ifNUTs|XO>7_0~xuZEOrN#Qy8VVMm!^v?L{-IRx9p~ug1 z!b0UdIYkLhx4bZA7WP16k#SzyRb0+2I>8T|B3q8V z!@woI{3I;6UxqD`IHIO?M*Ixsf@4cl*@AYIl2)t(y-e);4y>p|IZ7OlZY>Mr{n;kH z`q$Lr70{2h3GY30WUH^2n^viM-O`ij&tp zg6tNhp2v^ckI*JrXwbKHA_y6i)XaTEDcLN zW~5rDJzw8qYe>6(YH4}4+GhLHZzx+Y6LTfub9cKyiaZb{(oHPthO#U?vD!2AC(39rhY{7U|qp9f<(RTgx2gO2+O={>N;l3D3*`r1_X~7;uDztw{a}x zbjXP0gm{{}dkY-j?6Isx^2WG%IM3dWQjTT|N40tBmm?&D2BLYpS5Xm%^cRqf@MF+) ziDux)CfdMY?dxb+g>3)%a54|L7W9{P8n|lvnALZ6j7R847GQ2+{umQY$*^6Wpal}6 zI-L3np+DMyu59c(7)`JH3nmCe8|Mp3mYbJ`$Mza#!Z3#bUU7{5V?QzD{aKuwVr$$;_gpJv|y5m^4-Y&q$7psmsIxAZO zAW<|%G#kCc+rtx`xd7N&mf&XJaE~ilw{!PxFU@L@YJiwtBQk)ekfxj@sz=5~P!+dn z1M%#c^#Qh9_LbD#^1SYa+&>lhQ09B;{yiPNQttncyX7Yzk$}aVgknAU4)qrm=m7_C zonxUM?#?R9azIcHy!G+yeN)yvI$BzlcaA)hCw%~SbTxHb*0dBii*g9NxvKwQr}zAF z*U0qxZ#TvN6Kl)(Km6cU`oDnCf`EajpaD5g&#z#|Xv%%p?T82>Lr^dA(dkVN*@sqKYLfP=u(D1c4P5A=Vx;Q3eG> zBavvhm>@FTTe7KXtex&hA08&ao6ie4;}2N7xB}wU_QE%RP2c57n+R7{VdFpdfi@Twu67G9MxVp^pqB z-FoQ)UD)y;&3zgRr2rwJk`T;Y>U#eF5R=j>=I`Te;jUjUj zbE+2NWEHdKkU2NocIxQaBS2FK#w>D==t)7lUc-*jv5w5hA>Lh(9vu_i?zmD^3Fwbc z#v@qQa%IeMJaWMk*)&qg30hS|=wW|U7@Dp7Cz^M@#*9q%B*3&QJEB27UKbX!j${N3 zTc(bX!4Tgu)SxthW01wx;k7&|E+K^uQmd8G(4dxdsecGVM!Ru4KZ-3i;3xE~=Ld2B zNJyH53{gNBf+5K*Dpjacc9QfMd2f)&kfAP8U7(V183|FC+`($$g%LHHOj+#3>C~)VOPm{3ZX>cNFSl0r<2_&+8C-*s63pUz zIx}u1r2q`g?(bgt7}Gq`_9BPu*Dv9VFIS8h;tn_QT7M4E%FaWgS4fep`EP4+72Hv( z@yTgXjUX7f@xF3crPHDXOFEHSfDPoyUxl5T@B9mH$FKVxO1XstWh6P%D| zM?q6S-KkzwH)IttQ=mhm$Uffuq8AVG<6O_jt zMyBH=f)bTB$^i|V)IROT%ELlKt6F6dSvI3z`k`^$iJIJWzNCgW;NbT39I|p#ZNZ?z zAcLKfXVGZEL^*E8^3URRzIY_E6RroNj2-F&4Fwb%U#-;epquANzZ=lDqbb&Wo{JQ_~CFF|1Ir03JK{mB`Skz@IS z0pSnY6;FAZ+>ffBdp@*9SSWSQ4Pp3h*SGV)3Zg$me2#$gw66w{Abw8FJ(6_WpR34+ zn|X_6S-jH~X)Qy2^c8#yuOjAEp_@|6qUkz0y9`*Iqebh(8oZe9HOEW7t(|LX5Q{18 z>OV1rG*(woKno)SzOI|l)WFC^a$k>SX7oiuq+Ko;GT+)ldnWU#br!Pv_w2{aAuvB zSO_jAeT*-RdDsV`y@iyeK2T>%=f?*enS{->r5y$FBM*+)`^h5u?srO2dGQ2ga88J1 zo1%$mVSJbg0hhdyqfHmuUz zR*67jPG&`lEKQtBV5?e78$cVRW^($O{T$=ueE<0^&qL7W{yhHyJJyhs)Eg`O?fDT) zl;PXLn}S32O)yf63UE9~>s$JK{ZV@u`avo@J+KTJG|^PaO@x}#SN@HA&y?+NChhy% zbFZ!|!2oLV_1f&#xVB#L2@0u7GpGvzriT>EAS;1m+rB=zgwKHt6TTMQXf8O)5M>LwNjV+8PztPhBdL5IwPcrJWY0Kact*;cFQ#r*St4>UcXD{xK3!(%^BMX z-qO#X_BP?U2EAT|A7rbKDa|jJ@cu|{$(d!6aIXpfhTFIUd+?&KW}t0p?gU{Q;GqkG zFVCTm^?LXh-kG$bhg3|(ubjyh&Gd@a*vUPvBg)AE=zOm3c7BK!;+HGSpaB?A9b`rw zoe$#3zWQ!0J_*C3Mt(l9ic6ikORMcN{Nn&I{W(!YP6&AU5`-KCjG2ei`|y<0;&E%s ze8j`$8?|bVSnZ+z`$u>UXAR>?rdnps0=}npw>K_hzUoz zmL?n?mrl=971o?=H{&(Va-|ZqtASRh~a6MZz>SXH1OX4^R>FXDG`0 z1`HC#`J3mAT;&|2IMoS5S)T|?^C!D)lo%r(DBCOw_x zE&J9QB{(FgN3Oj&-5mDla`U4G8Mw`B#@yK?n_U9_zHk2w3WAFV-gW2Vctn-i@cj8# zfpJ;NIlFKLDqHKYhw(OH!78USQ7|~bzIY!(fyvZ3J%GINR;JEF?#O^8dQr+%LII~)|HRFuw6*Zftp)|MD4|0`k*HX|$Bb+yUzGr^ z7tH73`mhQA<%hJWs_A#7tY8lzNXK(GR|%diPea?)%O?X)*oYQ`3TiI!wfV)feyT#Z z^2I_3WcM(86$tsT5RppQv(uDIqO&R3w>F5i`vwhe95q8!oP?}{Bi0GQMBzWx0?${K z$4HRSVB98UsL!9G?Zuluwf;eAw-J@?m4%;3SA>z}l4mDwVKEtPzLo48$*aa;4{=+U zoFUiwxDcq9V+MDXeobz1`mtNcW^xds9_#dg+8LXAVB}TTzrA~g7jlMH`yhAj1cVT4 zGS#Z1Zz69_o2J)G05Y8Tl+t_xBo3NVPj+cAG&#zCb&Av$#S-H z8ZNbfiFN^#DOeO1)w8;xh*3m%SA5&gRzHh(AJ@bLEIMbX7?io(IsMkLMbcWA|xzqH-}(quzWwpmM?M6d4+3e+viac>5S` zzk!Ny{rbmTPw(Fz(N59$L-nW`0__Qc5pR%)Lm39u4RIK?>fG`k1;l4t7 zll9IDw64G2k5#xaF#hmS-!t*4mE?t|_dx&lut@$U5W_+OoMS>WXy(-(&ll zrE_I$d%?5jRA=+!gctkc^L}}~h1n%@>!>^81MjA#`=|7~?(1e1zG2#Wd*4T?5nOq-^YYnwWugoPIjFNVU>wKx2R{ehL==hC zB2V^x;Khafu_)HuhOUK0Of4-a;e}ERd@wN+;^UGB2~akB{RUz>?zA0T4IB)@@^WK0 zU>yy1*%gzD)Q;*&gZBlus~sC!v9CnU88(1-exKlT@f5(j-rvT3ZlvkyTl{`${d`}V zNwfRo6$I{}!vj=q(&7Y#-(8V@uRwL|u=l$k0TcIk0RHCBpO}xnmHU`x*%3v!m|szq z0x6D(0X~fH%Ll_RZ1+p8Lfz&IlY2PVbQ{&v7Q1<1s!EMh3#=nWomuvh2Azvw=#jfy zra$@K8sMj#rv-wTAftYGUnmpDt+p{yC%a5g@M^KY7tPu%wBD+3q?H#;81q|gCQhgy zzuzE7-!L`XTGly6gP=q2?>Bnqw`qBoruMu9N#|1-c4d=@tMUT5HXO)W(s?#f&Q+#X zS}#`GnOyXT>lEl*#iVjyep5*I`Q4{9loBc9;YJxEwffHFBgspPfKt-!UvhR4Ph}lU z#W&0Z#dgh4-^CKlh;f8L6-qDLziugqq^b8;_h-EHNxWjPUUh)Pe<0tDLh%ZOD2rG_ z&a2(WN+;#xh=_toN**;+6J&I<s8TGO zGp4uDz|;VBz5YeIpAs~gh13Aj>N%1lu+L<1Le@$b(v%t`;kKP|P#FSa3JhML&+@a) zPaOq#UK9AR|HavT)y zFz+@CKFi+`x*kwPj$}ELnU@8pA004WWuWedoH4uGRU1>d`|DwS>zl(Sppj~wPNWaR z205>Ll&B4M@KQPA1!)%#Dnzp8e8-}nRP*~odl{G6FKO2}anXfe@}r_uVyUR4G^xze zw)KW2ankl~bpxjl98c&<24-<0(nI;pX~1X`e?u07wwtLZ@;B5aTtH){9$3H;y9QW6 zLl5hfQO=3cvJ#Apim{EEUP9rO@DZeZRxA{kesiY;V6`GDqAYUe=k)K@PI`>*<}`P@ zm+ii10~-7Ax%PUqV{qXyy;9~?dalKVD1(r%<~wxkj_c<*jepLe6;BJthePX*j>E`y zq<7I|k(CXbt?pK1Y{g~#1p4F-v*UXI1n$X2jSsQloGY9Lwj;BBQs}Kb;$DF%J5h2y z;S108P8+_dzpIQ>!)-;ajBU`_XpTYroTm4I&0>EuuW&ip_NCaI)kt2yC?4}mDgM3h z#^19sAEP#lSegPcS33cG%t(f+0c}V-aP(LWf+_l^3+)0B>veo@s-WrV?t9al;3)j= z9sqer+1hW{TbgkZzvOTfP(~j2U2;X--6@4dpr*XA5ITO-VV=I^_mMiIkjEkNs#K}* zP#G8_BFX%hMN~CqN7clyji)`UtEW? zp2tkm){apxPkZ{vA{(ldR9N%p8mAv?1O3)2s#tO_B(YFM6|ISjI+`O_w`HT5DS-e~cR1C~H-|=6ojl`@eba%_{wgz5tj;+`ynAf=N z0nVD9=YlwLGdVSL7c5}Sd5g+AxMufKw=x@j3rPXRI{3s$bysqHzijS=Hpzymg~NlM z7h%hG;hBz(Ujl8ELC2%z6g0{SyH}ecVE*2hCCg~`ihzzjR^b=0HeaDAHg$ttX<5c; zM5{2$L-I&;Os9)8k)#G8E|-6Pds~>X7fwu}G%Lm7-4J)d2+jypHw*>NK>5ZB^)By$z_4s{H+z@N{V~jxO#68%t>}NjL~qa9AYqls(6lbZv_h zg$iqH`!2o=xZ7{ziqb76=LNV{=FlO_pPED;XC8d&@T3OGtpwmczP}w_4F@JN9^W_ zsoA{+i)e|)XnWl+#(hnNJZ^%n@ze?|2xBU26aH;<fEHp%= zpa@T-Hc`N$!>DVP`Xoc1pHHHQB%&M2UCGN7l&#&g86BUZ)Ng;CpiRJ!;5y@+ z#gUzAx@?n|VL5|oX|-&SKI-`8UZ?vIx19oCT3l%ng?u*>`>JR6mZf0)K0G5**7^fo zXnE-C`3q%Wr1dqbB~+T|_-$8>8i=PlV8!{pSe|Zvw3xn8ZD4@&9FGy48Bhf2gKD*U z#+Bv0?+*J(UV#6j(2&?&4P1z4O7zNee75U@(o!a0vi0v)Br=UsmZ$78Dc4YBGq&y`TD@(pehLXh-io{C$`sh#Dp5Y!{gs+ z16E(3K>hRTp1fpl_qlHoPbsb~!o%=oPqBO@UG8E7$g;U2vx~GzZ1e}mHmW}xPDz?t zOhr(V!hMx9l3A>N@VVnGZ{fmZoP-oCGKu@E(I`aZ?RQgJf98Z@RXbsKAPs6sbOzE27 zQN3qaQcWJolV*eur#+_KQM(_ferUqRjhDTV3wn`a=Uv({sdcq%kiKQ+R(7mAlwrzJ z3iL!`glJG!1n*PkQ|8%>F|&!GMbcN9@xWbm2L1Xu=E;*!A<$;rrwS=4L2U4CHCjsW zJT&Psqoc3)g2-q<$9f!n*z^MhKwmU&Ih)Y`K#TZ>g?v{ZQvNWmoF3RsH~;8~ zYKAMj-Y-EhSq(ugo$3Dz*`?f6qT~JKSjX#kohrD6&I_a#pEEa7=Vr^5Rn^X$LwQi4 ztRf3Oqx^y1l`N}tsv=XOh`jLNCZ~|A7&C~Fm*t?tDS6HQ`2F{6Qdt%+%evH&b|Nr=*iE=MM~LSbErSKSdy?}7v&5%+SDQ1 zJZ5VB;S&v*Dq3!SP|4&ALf+Y`BeM;#)q`*)Z>e6y(Z#{UPu*{OZ2Vv&Ko7Hlczr;| z8#BAaVhTbYqx1o9N9rA6EkGVgTR1g0VRAK``R*5e79XHZQOs^8h5BStyF_@~ckCp9 zy2kr80&LHw>Cn8Ow5|blaD>WW&KBZrybn$?nSh#70ClGb6jL&8D}-IPbOz0cDI}Rq zq?=SK4`{g6K&tt^h#@kDWFY5k#|gu^A%5tMCdvM@vE^MB8d6rz(HgZ_sv?1@s!KJ8 zj`g^iVxJti~gBsB)_Vc7}7J2*qE{uH6^l;pJHh47aU#Q7+E=}dd^f)o0 z*D9e?S(t@DNd-JW>=~zuyBCiW<4kj4r8S>LH&SH@a_YDuzZCjSn^GFz{JDgz3}&j+ zKD%7B9pbtmNhy{On_oqnp9TLxhiIrgo(%AfhV_nys}JvGRYYi&(%1u5oqC0xQ{ef2 zQhUwuWmOWDo5+Xx1pf&aqW9Ux;>8qK(u)K2{_F0D$>+8AO8nAesP=vUN7UWn);j0rNDoNn3c$H4gm-#Nfi`P%vjm4<_0-)K5oc!I>0ULNemh~KO zyq;l$k(E(d>KQ0qqz0F~N5SqI~ z3$>y1*VR>Z+qM2t$O;VfIvXW4l>AP{>Nuc}5jHFk*>pIi_4_uu(bCYZ=Pj&vPEf zEeD$w%w)7|Gb}638-bWgiQk;E8HNZO78OH$ny|8J1%<-0NpYF+dG%FK4q_b|)+bF) zS#}b)+2Y;2jjC@gAX@Lm3F&qot)85DfsO8LQV>Q&c#!bvp6*P1wPMn2Q zR4vY2PU=cyK+cB=JsPGA>EwIcRUQm`=>O1kT~@#$yHN1eV$cz$SL!5uM*>+|H_45p zfuD`bw2ktpe~9#D$e)A+`iqb^L}^9`4hIn2=@VH+vqv)rIma{=kry}}Ftla3abznw zQlliG{@U{B5O8XuUufJAKK!m>SiLHhsR_Ql^Q7AuEh3IfD8@oP#R*F`<2s_YE#MB2 zrQ0^tYZ)sJfRj2*w_m1pI3fE`wK|Wuayh@xUVZ`vK1r&)u-B1J1~|a4#bflEqMmjMLbUCQx8=iy-Wwgknu6l_4ALf^RGSEyRfqk#WS3tbjObXkQqL zDosUc`?tSeP6ig)!X%6nMwS7##N4r+eHP5i7j4;@=v7q37I7Z7KJ-9E?n+FG43fQ9;NZ$H z$;}A&`x@0vpO*L!%bB;CYkEBy4lb8N?h|*P;Z#n?pt|cp7X=(#wia~Ox+*iGKcrsrn8H@z*gWup3)xMxjEq(= zkw&NT^F9Y8vR{YWJ0@_wgliox8M<_8=QYTD3M*RU^5F7oae18RkWK~XmRGj7oBgtM zcK35%^4f)(gB#B?F)CCcoEeCuC|8&R_dK;WEB+N8=49v3=BH--i{jpP4Jn6@=$?TQ zFGdUQ3uB+A?CH;r7^t0s8~LgsKp_{;3%p)YR?qJqj@~}Ol0T$Ma+6Vu*EBf57Xy;I zr5tc!jQKYoe*eX%CL^M(Y$KUnW`_NpLF~oPj=a6;V_`#_C2hp0l*61TlFPI7*#Va= zEdL}T+Mrt0&^=}4lZrGEX^nzUGF3l05gJmFPzr;#y)+tPUbt3?MwZnI29ZHJoRe6n zFRHg~73^HXgm7F~S_Yc(K$x9`l5tR|0vcswiz;pWuOMEq5dm_&^I4F!fvIlyYC#ul z%R{*&e6tn!Mi(_o#Tc?eN|_~T$cR(h zL75;?*_g7K8H49c0oGj}WezD(^Xjw%8_$6@={?166ux1%)$eRFa`7nLgaY4#u9EIi z=@;5v15dR-Y56OE(CbCoGX>`c(*)5b&&R)GA`B&T|9Ht{Q*ov4^oOs}?2|B{XONm? zK^JCSw8w?R%nR2?CpTp<53dr4hAp0jZ3<_yNrF%o@E1%NJ~!q<%|*Ma80*Wk$xe}; z4|?%RSwKvNr3Ej5M+HDJ>QD!!^=wi3Tk1Rr`;F^0F5~@3k{O>ViSRqGiD-Pr%swL9 zlA)$8OLs9)Xd4w7(>C3g14j*f9KSQ#Ua;JmCd4% zgGO_A1Z6$IWY3C}h1g_>zrq7$&Z(R3D#KlGiKfRr>n!Xy1A(7wa93u z5CUc?xYirRX_IfxeI;KuEfZ)@1kN|i@c&}`*Q zxPO&n!7?rOR-)d$g;~~8gWGAkVdzFGOn46i9x|lj+RTBxhN}kM=+?^X) zZQsN`QW`mG!jMuXEu`xAc_4R(0Zjq#luBUo?QT@hKL`BIMqDv=a^5g3RW;(Gwu%ol zJU032ubkMFbUNc@ErLPY;rg05g;k4Yx}S93&l7D{E6M%-RO2X4o-ph%7Ii35Mq<6J zw6R6zg8QGOiIMTRn$@7_v-rR&vK28fy6?~;yCSjNdW`MNG%IQYOG8Pbd}3r^opmo+ zZ3`aP>hu7Se(rn8DG8e}bGTgZ{+=nK7|Wu5j?&spvAZ&cgF8vInOMkxz!c-?-xiLk zNTlJ%?aLD=Tbts?mtRPxwe%9pEUnN97Epx}Cj0gBq<>m9WOHIAFbG()1m();fih_- zo+ZQ9!)!D*rNB({;M2@%4;2h3!;fxd081A8<$NY7Y(ns8#*ErKPiSdG%WqC(gkq1F zoW^L=OfGPYlA4?ZYL~`3d&Qr&?>aj(ZTK#e)BvNbEJ55Y_n)CNM_&D7Gg-^5ktt3$ zrgwJF_nV|0{QZj>v#sudN%GhkF)0*$z=2B*tdjwcT82;P5i0sz0raHGA}uA}sm`}Z zc9@NM46e%bNsZ8hYN+Oc?Mp1f1o>}oE+oBt&DyI=D!cow7TYJ;nnv!uIj~=QZk6&aF%^`^SdykkGYi6!|#6`8=*+S?n6I0}7j6-j+}k$N(Q?kXx{+t3#qXzcsj8FhglJzkm8xMLDdCx9j2 zNIb5Io*-4o(mWN)%OJP6tfLjv8QpHL=S!=Jo6R{2;9$C`_-D9tRBKAbFB-!eITr3zlHl&Y1BhI*!t z&L_U=(yp!lrdI!lndASigfspBMs)RKR}J+(zn;E*xwgMPegc0(VPJ;-mi~pO14aJd zKJp)P!2erGoP~q=e>g^>G{Ch{R$8(_UC>Y!Fx3ETZ4H)-gZ{!sh7u_93JCN9mr(ih z6XW%@kL?8ZDchbYL`ac3b@{Cr36-KU(j-Irix@0VzQfuNK6c61d`DfVW^GKawj3v3 zJ8#n>{Fs;uKz{m}0R;uz^55-8IA-uQ2)?dC-^Z5Mq}L|a{_Mhl%D)Mi_6e|U6rxzj zzcmaEOPLrvy5ml>$9`rZ^oq&-JYalTQkkPYEg6G;VAs++^LrSkjj>Fu`5{Z=7BMV| zo{*kGiGYOqLi^GxT_;>URB~0LecN|e=Emt+l z2UD12I|Ny`gv@V^@U8Cm$o#8ah^GSD{G#|KKAIvbAX8E*En8$hS2<^~Bx8w4mzl~t zR(vRZTf|-jI;XKDYzoyB>=L3WN>)%!WHAw1Q>-XsNd!I;?~>{g<50RFN4Ml@@>>_S zDQ=e6D!WRgIugCgby4h~fFDn|FZLqW8;`j!0V?H}l)cJBQKl~{6fBjO6bVw;1JiXTevHRS{N~+9w8q&jD9n$w7lE`FpY4; zd<&Pisb z4-S)(4vmNdodYo6(`ajkWTq%Dhn7Dn1KG~f%LM6ApW#b~jxJ}MGi}DSG$0ooct&$?p*Lc(hSP!6Kty>O8F|OJKf(pE3p_{6ds6;q6 z7}bG**`b}PTk}?`5FeuDU%IhkGJP6)`TQzKv(r zI6J5ZGQ!z?^EU}MIP+c#5P&lxR=E4>c6f4yctT9ND4nYh)%ma-5FU(Sn%wW z0B2V(L~6}@rr>2Z4r+VssWml-IbFg3)?vox*_oYs`^=0DxeKV8KH8M`r+9rXrHTkY zwB^$01y&dX0#ukubccDZ_1qPXt%+a}%4boac{(-%$d@59?Zxe0b;aHnALKdzxX=sV zn2CAm?qsbIDx?{&H_3VQ>vk^iOA+Do6_~#ADo}&!O0E0gYm353Xwm&_Gbtm*dYivE zx7`$?q-$^{ISdL=(Zco|E#gayJY;yYth%WgDvfTLBeMj>-zQhIPGAc+92Yw2!-{IU zKgajV z?ymI)Fkr{U;jNL_45=hh*XAo~qa$SF)X0jKc>*jW`&;{5J&(vJ5Rr+A2%n8%Z+GZ_ zNA_H`tyrDRH2Gt5LR>Q(atjdHLJUg8-IYoXSn9n=PCmuA9u67OIQS6OT zN+?SRuYKpt1pGcXij;edGX#6mH>hX;jkqh8hDjMw5<`d zrnh1>P$vtB>|%R(i6;KQ!bUha3@U)n!*;UB%BG>-rD0fTpLX7xN42VX;cj<%S`WFp z(0*h(n8?uyzSCqfg>UKDao7u^FtBW-F!uJ>wlr~m-w;Qeo>f6@g*|1783SRoT!vu` zHdzlnlUopgIsS9Al!r<$B29UUJ(PuBEivOlp*yxP@~hCwpkw(mby@_R1y#_dBy;w7VHjNI^kc_SiA&ib1Of?=gfaHZ3VH0@2F_XeclW9KUrt)H;2 zp&$d+P}BO~KbU#N{xozIp~Y4|#C>UfwM-)%`5@QUD4)C$M1kY!ryc&PP!J_L>0^Sa;ofoX+dE`}PNE}bW0g*$?wRH- zeG}S&m5Pe3L~*{98a4__e6{QLB1s?QAbS&dU|UB)^V(!vn2oF5jaM$P%6su1?o+g- z)X_UO6HZoEX{eSY@{>?Hw6BaZ%r3hfQvfXw=WKNMTW8=rFNy=mxg*9cRHh-7++4nQ zMoO?7aT<){fnJwySf1zbCqM*%SLSG4FsfpQ$KW@NfATIM4 zzX`vZ=b) zR)Nc8s*cN}n%&~-OG;TaF~C;HLof)ft~8C!IV2JWddCs!1&!y$C_6_YPCQ_kWbmoO zi-}L<68J+GsWd_oERl#>SLBYF-f0N3RV$U6qLZjah$-#q-@$o%EJRdQHX{H<+it5) z9fg&D&ABhx+4nS55)fVPiC2Yj+^itfh2k~-K$aJ7Afd19``!ChSv=!Q`$=^FDnkA$ z(kg)RwNPAOSL5;o2`#ky$Yw#mZlnI4C5L{|*V{AR-Y5BfHWgqtjXJSHl)t_Op6mUt z>*(QmcUp5)SMzT=xCL)#^xT~}FSrT*`Pt}W*88Ch^Od`4jzQDb>PKHGw5r@br?L9UZ3~Iz z{dNud@u9A5YKGJrrHqPhH9zth$y!4lsy#@ZQh zT!e9^jP#FAyNZMmBY|vDWN=!MRV3`BIpAqEn4bz`FkQ&9kevf((3 zyfTNdeD1cwef#G=qtiD-sW}7<6S$z905nC9Gx8*S#W9UAeDxh-BH=_KdK(WsTzZ(o zeL{QCzrZzbeXqk^;GH--wF53_=`a*M3o+5_w)!$*g3yjnfh!loMx3!{7!Nb_(YGGbfQG zY#mJG3DyKACGaqv_n(%hMvphEoSWv~E6267nRiY^zU{az`b)1~I^_zmu`4I2O&=`}X5n%yOD2z#X)JFQ0(uhxh7yZd_rYJNn}TnWH4J#Kb}l zYK>(iMHxK}vu9&`be8OSvt`%=_&Dg!dUH;41kuCGscxh^v4}3AS370gmORGz5jHPr zye(gka0zI=0UbeHa%#Jl_;xsZepoM;m9EK11s0vQe~j>_K?3At8<&*p2JIruLsL>7 zEAreoLFyioMItJ%YPLFjWnPY|4y3N!9Jl=vfTE9hQF114$D-nbL5JH+YDETRFp9k(W&twOp1xd|z4VvLEToii$wpc&PaB((kFQDlt@>!oFsOON>@YClH9 zR8U-59o33#-`L0C)%$*Ke0u9cQ~-V~N$ID^*aPH~>fOyiER>DX%5YkGQ=gC0DnU>6 z`>T3eMx?l;A3lXW&x~sG{`)WL2Qg=II6%tk!Cxpo6!~QYcYcqe=YoJvon7=hw3Qd? zIfvV?L{pDzd{5U4grt5PT#WNuwn$R+u_z?9VLXji3z^mcXifq{-kS*xFd=2{5GNYE zWTc3YB4r`(yr1!bX)$^%P^)oe=lS#Td2e8qlM+qx6)Xo^df87ZM71}QJe8pS-bs}p z{QpDQI|YdnZrhr*%C>FWwr$(CZQHhO+r}!}wq4chzU|Y!`$XKg%$NUv$%vdW#+cs_ zzj$T)y;E`Emj{iUFBW5dMQQ8Y*FC&}r_dZWLD^Exe>my^5m22)ak6_!_%`tSWf}nIY0r8`k?9g8AY#uhmQ3kJt-Tn8V!i2FAUv!3%y|xW#H%_YQ>I{RF!%nRdkNQeE6XWT>(# zWc!;QPNhJ^4tm*bHv!pmg-n;tc86nQQLCZE4_xc*Z@Za|oB~|*()C}4fS!^2XPX>X znexN$(5O=qHXB}2Lc>PKsv0{TXA>0}4Iu|bUrA6)+uqp6;=Jq^N0{)39i+hz5DLW} z#h9E|(S801U!ybNnIk@qrVpMn7ueLURMc$fgQ5;3VKFsty1z)xl) zZg(Qv)`aSgQRdV6DK7)O1-n^U{a%- zS)Y%m8z1zbJ&C09*QKIc?GmfEf=MaqrTKzMe{nwnx%YYL&&w#I@10SaPlTnf7G?sE zCu*I$n4z#otPS|489Akpsgmzg>Qdu~-WU9nUqvrs-wBFl)8jq<(!e3Ky?*am6X+|S z4gWzKleEOybQpuFB`(sEg^3!kDZ~v^$E4{DoEnvHRQ;VCQ6@N06ozy@Iwa4dv;)!e zUdXM~vE9ANkXyBLH5Js!m?cO{11C0X)+5DswGRoyVfaIqd0~EAgg;w|tk6{eV$cgt zNHByC{AWt)5mm(~EbS%!APC&Ztj|?dJ$VBdHTlS`yumf0+Nf+YTgcHv2nY-N17E}} z?SVFBY)MRm%${~W(-CV!qiTankliKs+fQD?Viuv*oNS^BP#2c+T=D<gtB z&<3q=*by-7w!mUmKWtL=#|8zNQi=@35*8dGs-XG z2E-mI(Iim8UFM~>cf8SOPE2|t4ZDNsxQwFYcL{en~-4!o^=7?G3zMfZ~yH50iM!KRv8J>^wT zPFo`-tyDfuW6Ok){(4LGPMFtve)$dmLgk8O%l{Wup7lQv8vp;&KO@I~B9;Fw!NtEl ztiF5{as2kyefIqV0KN170jR}?)cJ2W{KuNz|E=!N$jtUX@Kh=O2jQ8 z1g3!i*i zKilM4K?aFFaN(yr^yrj+!f$9FCEm5}1v)?IqQC}-)WBJ>GyUY&$e$X7IrdG0Hk0$! z3RcmqJu?h^th~Pal1b|Z3sx?yroP@^f#&zw{oGhn)hd;ZG9D||JVnfv87&RdAL^z- z6mspAW`r`Lq(VhXn2Z=oq)DaglSk?-s8mHQ>5kJYYQ;T9)G@2bU0%KTa z=}nDekn*B5dK`o_r6)5}s#uF_BU{#Oq)R6T%UM`UcJyPuL28nuq}ff4;tb{V9oD?B z+|~@OFz~&i)hSa$ZAM)6&(%Roho07Ksnsa!$+4LlG6?eq)c>$jY7m^m zdD55DpE*^CdJ>?+-6S(KCNaYP^7!KRNmvun?zCO^?!4eQMir?>t@#U5;JgHZ+iHn(IHpojG|KEoxT!;!>9N z^6}_EWpxd51XiZU!}ifne?R*k0HroZ#sed4 zcIvY)gzX(T^^^M*yDFr;P+%l=^*L27qVH#s>xk3B{QfZ0G~;G~F0=D0Rwg~Na@r=J zJKE`*`E~O#bj-C731dF%?fiSDEj}p5oi{vWLN3- zEMPd(c1A!Pml=jD4Cnoep8dxR&U;y!F7Ofg4B$s#rsIcC>HGGGy1KNi%iBKbEya6i z0Dg8zWa|LxU2x=19rbG%I9juFp{`lBcF*p9Lv>}-#PHgga|>ALE;{n-hRNEAr(I@= zD@!Fa=p6$f1ibCauit5n$INrR6cqpC@_zeSV($WhB5$y-q`mnqp2*-lmQ3IyDR^7G zbh#C>Ygd%#zTK!zDGTH7c+^S{&HLIE$C>*oV4z*g*#=d+XwUX5$SI{JKmVY;BF56Z z!Uj$slK4!@maOcU_jKH#w^E8A6w-M<{MX7!Pf#;-#umgLLO@iucnXPM3|yG%z;Q;Adf$jg9f0(XpTpp zU$g^#@VwyxYNJm9{{D5+X#KA|7XkuGpIlaPw$mWvBgS1eq?*hucx2h$+^4N?)7Qyze00e4aF`~u=qnLo zMkA0DevH6N;UwM_ea)e-wi=GY1uO2y4#@-LQatoFv>LKBgSest&ADeeH?Gxgah%2rA)!Deh7QFD}*3Lk@4!jK;e z(OtZ!IBNdj9Rp{k9^t^IMopk-5n+7OBob&i6B8;7ugdXLB>R4|5Dz30MT*c>OG{2{W<-eVq-rSZ7Q|p3NdyH*@+$$Ey{ly#F}}QVb&}o#1<_O75S6!8ya=583)hg z8Jb4bdZpRQZE(OXO4a8Y5!tS?L!!w72z{hI29%c!ToX0eu zFsBQAvk`ERdD9D5cS$pZ_bs$2~<_LdQAOn9#tyDUJUi;B8Aybz4W+s3) z{4?cznE0YZX%wO^xUqui(7&7m!aF;tIscsIj$njBtw`~@`6NJQ)<&d5xv}aO8OBMU z*})D8`5S@OR0DhiRFzi`Uk{V#n?(in4Fo?Awo)8n{=T}BGjCe)Y4Fzv25I=_tmy2L%Mf5 z>!)|;rsl$H)^GNG&QDWNLtP#*!npaBGVcs$K!IsXo4cqjEHgDV^5wwYcq9Uw#b!1g4GWcNNWe4QZkrq*RqeX-Hf(sZuir zNdYy5m81Ygg&jq_d>yO?Iwnq`25x19WVpC^4#)P4%}e1~`civ%{T=YKG+Ud-Z0V{8 z<=lBC%77M8QPLq1k@A2-K_$wfN>yo>4iLcU=0~+3j1u$iV zBnugTQW(>*b>LQDB&oh#nzzY`O)1OgGI#%%5fok&>$#&v2DK0?{wEku(2h)-`fTeo zo&gV`$?zD_SadX&39IEn`KfAEwQnnJa@G{oabDbPGeZ+a^ZSNt9ZhRg(o^v5$h=5(`b8Qm(Ax)B*6I=0l)jt^p|K z%!tY4_Y$*yO~~cODfh@F4H~9qzp&2r*)Z|d(ZjCzl70%tc!4BkTHkz@8+iR02YZGM zoDc+fNJdeb+zO?o8v(EOWlv?*s$lVtg@enr39zZxIY?_Mj*TU4p9goz5ZX8@_LXWn z6FwU#*Hfai5l-#&05YnKCky?gj|rcGOJkTZcWbdfd=5U1L?z|1V}JOm(o-#Jy$-(G zT5|v)O;ht2>>mcChL3THl)(}0{a5$6rJ3=T1}#UDIN0vW4PnbGFVk)*`!am+=JrEV z%L6bygDG0jDTChic)drB7)d{?GJMjJaB5$c)2)RM!4(i#S`a#zb z{(!VR&T=}_PqH;Xz%Bdk1cegiTB8});Z(lZ<=g{$>n((WEiz~1Xi7<`4xogeOzq`xNZ@s&@X>GNIb<_B=ut8792{f0@M_BqMmD&fG zh(bANY5?q^gmSq%m}6f2w#(m(aUSc!g4!{^Br39Wf6tFC=Fb8k3B-{Ih@ck(03(pm_r-w@ zDuQf*c8XYFx~D|t64L6sl8~4e)b&?wu{IE$SDuBF?AI7|9>@ljv-U|x`^QnI`Yszz zCfAD>#%NArFm-H@-Gtboq2DF92xV~D4On(NF$De7%Lrm}J3X;ea?DEhE?ldBAFS>E z?SuPa!a{Opp7b)?W#)d^3X>wG&h7O=Y#o)tCmq5;-}IRVxr31mnN2ZuIiFW;+i+!l zMr~tkAdKrvqb(Qc!_|YO%_VFSR&2NT0niSc9@SDW`e#YoV3FabwBdY7hVk+6jvWN zQe$!zE@nykW#iP?#Ob%!>#R!~&c1$k*OT&AMDdIy$Ct3Z4*`F)g5X7#Cvefs$nin` zfwB7BrffRosG@CT*oV@WVMHb%k&DN z0{MVM82Igy;Sa2^^ns5_BXS3M!mOE=a~ z;!2l;Kpdq6rOYhto&-^3?>*Njj>N?r0dcUay=leLQ@cwT6W0qKq#jh?pFI39y05g` z+_@eu8dPJ|F&rmdpfW~AK=Hg;aMaRvb;_wn|BAd0(5uqlc3zz>G}4#+ZcE`;6J68! zeA_v1^LH4@xX6U6j73L>Rf<`em6ewr*#BxYfY4-(FrXQk7GUx4oQ)2JnXjYb77MLJ z*3Un?Q@3s`ZF;>^Ql9DuS3?w=qf`iie(QedUmyt-zubnqSJwkep69K)u}eSdl}Q{q z?l(kxeB4gEpO`=f%uS!elQ}I)S8v2UHgPO>kJW-^*b3} z{`zNapYDYo^D{j27xqXx=Vw5zEgJ8Z7$kNYG78$pGam9H@RtXHvzN{bM zOaO^6!PSr59(f$gwfneyNLtA}aQzNm_gPDX5xv;CrVlQ^h1uKO-NzkEm+gGtmi>g8 zCji!gZZ3+xl?XYaSsTDavoWllMq+_W-t%%VIPj_(-gv>GZ<8YLSf3(V%tg0YAZVZc zTOpNNTdMCS;(AjYig>^^u^MccpMO)I`TOeApWWPyp(n@?Hs)7%7n{SqisADy#N_;o zmuAU!HFYYvD|AUH9`wWUeUx9V~|}9QuF7SWoTE{XWD1YrRWFI>pJP| zILG^Q^2;riGNP!MifPE_52OKf0aUo6|KDeh+^F9JR*b$_8(hwQt@^#HQ~JyyBUnmP zB54CqCh+n)&-qW3nyrY+q~)^pBr>;<)w^Ycal0nR^bp}1`Lqb!=z;~JQZpj0!C6KZ(sA1d< z8F};J9!PqpFRa`-n3;DOIE0edXn1utiWpbjeq`hTG#GC6olpdBSBx(7o}e-Zb%?Tn zlmX?V-f`ty_aFeIXnOum8{<LbkgH61Z5cWu*3H7NzMQY9i)u z1mAd!7A!OFrD1M)8>=IOOL%$^MBD>bhmqTs&c0A-x}i@hlHg?-5a%kMJ{}ya%O0)y zp*{Blme#M5E!~RLuRlTwus_jk{!{m|OCF=-C$1YhMCsA2gO-OT_G<>lFCNe@rj(KL zCYGABxz*aTMLH>6Niu5zv>^}E&(3dCEw=W+5f5?}$iOe|kj2Z*XHlFS)I6@n14gM1 zuWt=7qQ27gL8p*tjqzi<@Z}|0+E|0zZ+@9k?2e)cdMW{uafk(2Qv=_Qb&lz&~qU{{SKbzSG7t z#U5BL2s+sM9E#S}+an?H!?|L{LS84ThrdQ`0H>E z2<#H&+;+5~^mbIy;U4wGOrQ7LUlTc$lvS)1<)g)??26a*F!X(ju-2Oz^^YyIY>mSy zKQ$!T35il>dUA3jb=nFn>9txzz9YS~T4;gvk13!`_E5&wVj4jFLx2HnnMe&+vOES# z&NfEtF@(c~_oqy{mJtm{-1snoHDHYD3^`drBRfq^efarBlFjEyU8>P&2PK}D4Bh%K zs~Dz8>w4`s>Q&E3ad;Dd$(gJz6yInFt0-!>j%i1Y{fK~o$1y|YM>EglEkIi7s##y- z<4=9Yr<1%Sxf&{#ZhgvjKpD~3#tIRGnCnB%{`E#z7fsBD+-tRpXM5o=M1x!BtK;$d zy7?>BCh<@!%1MFHGIo(wdA#ULu87zgX?m=Fq{LtfafH}FYsS)@XFUtrC)gN;eLVFa zF6{B$8M5P3)YD}3N|XI|dCGA~UMi}oxh87%HvpCTyH;uz1`-OE1xL(Q^OSzt=;6JNFJ%id%H=!%YZ*(`Vfn1bW~^5H`7#Cw=|qitnc=ly=!Y5zVj1s z&U7vsgqxPE7&1Z~>Ye9wlas2YOERb(3M|CmU4%RFc~JoMVgy#_aQMc`LBT*VLikB3 zaz?>I8l#QwMhzsC<&uR>L~LbAcFPw}Nh!msEd)&yWrSyGCj(Y__t4oKSmo(%odpG` z7g29qkq!y`n-Jiv?8Um)5n2 z(>Jxw!g8i!Am-KwEmaAG(9iv!eaL$f#&Cst*QB-xeF(>$G0_hA&j5|VPnUt5(H)7SvyAa$Q_@b1QyxBB$jyF#I%p5G{Zm~b8LexE zOpQNLWs=L;d||l6m0Uv$W~wuPM(+Zf#W-1x`Tqz8gT0sG|6$@*#jH#XNRhDm4qg_$ zC*;63XM~?WInZI00e6=Dirr#gnQqzMh$!%O#%?YQQ-J}F7guAyo_FQ1&}Hm`5; z?Pn2!!2jQbssGq{`d>t^|KV}|A9s~Lp1S)@em|E=o9 zz`^oAEZrDY7#6)J@i$45svGYt_-lk*P)* zFB?;#jGaN+^t={)o}6(J>xzl#*tzVSbWW;aLpGF?dJZjK6Kx zk=#k;6Ul*+gkIUwCGkGFvJ8qTPb40<#d3&D!^V#jOevX^{rClu<&VgyJ>-xPH>Akn zBnQ+CWbX|}xl0sTG>3OIBrAR#DjikK$E`gf*D~k@kc2 zpWqhqU@pZ$QGgEtnm%7uF_R+}vDUnI<__&eodC&(Ma-9n`1$Vt7>swmZ8%v_|04a8~_G&{mR-JN<0o8Qtf^c{udI(np1 zdCSh|rMLyI4j%P%!cPX&#^>QH(7G+m#ZF9Vhc%`@K(1@-@`NY3!p(LD)BEuk73sYY z!$lY7z)d$KEBI1rRxwUpye!=~V^`O#gRAD>gSvkRXATy|2!~EGfK7YI3>!`W|;8lm6(jUR%qna*qAlRX4*^J02^5}@Z+M-Cl z13wmBhzm^u`?)uTtL)5sfSJL1s}HH!2=+ToQiEnB#JKnjyveF2O~wB=>TbOy0p z#?Qa0biOIy0_e(bFDUOBRf7X)2C{@LzbEN{vCPZ>z5DnYxVv`>@(Y}Tr?PFvp?kL6 zhnXKDl^wE>dPM>1L2cEp=skIS<2J}w>gCx+yu7N8z4jH;)9QX3D9PEs;BCtBbp^{yR9yvFRTO#*#BFMOaxf6=MLQ%Xq9xq&;vVR^HE#U1 zw~;2rIz`!GjA|g=@XXuY3^Ludi;1j_&fkp*f0r^+QbCL2l0*kO+IX4f>E1ow zvuDg9s%jKkE`V>Y2-AONYFT2f^ZdD#hchj=>^Xya9$@GkLao>^YrfdIIGttc3w~=^ zdG+$!4k*R8$geBP$_siDM#=`~%Gc~sM(w?D2&?dYzK%}Qp?|)&j84SrY{#D_3mpkU2wcMy_xU#nfiVFk&^T*pfa1_*z{K>%U zw}Q9xR?zS3u+@JR&mW&)NuSabR1paZO!%w1ZrJF#!o31=utf$I&y?2_qvVfd;aK(& zfDZ(fJZG*CR)Q=uBRxaz6L<;1NfD`@5K?f#yZjN3qA+dTRFK-qA#*pnJ?1x#!|>wi zK8bqI_I@P_s->Mhb4R@ACz?A1gN%DI!9kqr36#oVkZHJZeg^hYMDX3E-R~YD#9<3k z%f0nm-`8o_?~LDmB}2+@gduDPjl5NG)=lyQG#_;z;(mm zti)xeQ79qngaVGbnfgM}`bN?EN$LYJk-&11kH8dz(?{9P0qi>Qo zQ}y1IqwyJ(l*#48N!9^x>V(sYq-l{$A&fmN1S9w}DUho-dubHl$!3!vb&*OSA0a~m zN1{Li1qSyfr@|4W7*mU#oFLPVqGc$x5kGbg+Gny5(fUyPJg-Y_tc;39 z6a_lf3B{2llSDW|7=8iodfKvv6St1Aqq}g&PW0srnuWO?Mwh0%#&hV6X{aijYZMe{(OKG>+x5ITg=t^!0#U)VrODlA{wYqsNk zU_R}!(it@*##DA1hRBxG0faR*S&JYKniiBH^xRnwJ`X67Y13+&*~xOqj6E+m_fdp`y=V*LsC11;0Lc_bzYXaK;U9l3jhA;*C=im6Zf#f!MDMl7*{ zZ0dJ-1GH_`!iH_snKl=IE|@WD9KM#u;Sr}6%i9mN7A+t-g(2Ar+=mZyB7ixd_7vFlpX=g132B`5;-808Im-|8+*}`6VlGBYJlP%d73=#%1e}e!bFw-*H>@I93$w z1krqj=VbqM72M!XxM#pwb?$Y>#{k{b3t_ambNU&DsZ3%r3W+37**I*DSfW1r1?}PY zv3dIJn=~qumXd}EIq@ZGlg~8o`8LxtrbfgYDTrK%1X!WNf&aY5QJQqYWA&0`osw8wGUV;wQhJ!OhQCGIlG=XUW!JS`~lCgFnFxoJ|!K zjz|9 zjUL{LB@64!_TVH1(~s}_GxwtE&%@u^0JV8&*jsaEx&j6gb$}N*X!`Hp;1|fVle&zW zPndBM-W#9SC;a6_ZEb$B!5p?<`=nPKE$q>s+?az`Q$|XEU;Ji4Ql_S`ijsYB1-J0? zlEno=-@0&$Kjy*nC-!(RjJ%jX{7cVF1=7ec4Lm~jqwscnR&U>{23IgI=)dLVUL)Gq zojsoNsU~pA#KCoBOCZ?x0z8C0lkq0RUcXWNGRnc}%>ObS;TlG^SSTiPDiko}eJ8DSg zfe58ScRqmrW$oC6x;NeQ(ZDR2lplZFufIJsz@kMa_K>%Ng+lK@Z0B_e0bB$KZvG}Sq9iw}*O0#?vr98m3pt!=H6x^% zW27WdgP-xphArO!S~E+JTS(yv_y|=ONi}OSoq*P&?VkpUv9Vah!j$s6hF50$;$%) zM`9X`?yJ2u|G0`dRRQ&reeU{a;R`%-8i#x)&JT4`b8grwr&vXf^K56-`MF{LR3g~R zH(agZank#oBg1d+D{J4^!}=Gu>JzW-O!B>^ z@rr-kBsCvd_39~EHUCitJ=|-vC)&{*d&4%)>J~MkS4~a}OfXN5q>_r^q|vxyWRC%G zB_Pnfa9~ia+_|+m+N(5UfPKFXniZ(kaeL(PbZY=f&We!+T0gLUfbkE7l2MzBAELOP z`1}hc?9s2M>r9v+Iiq48dA<@!Se1~NLM2Igru@V`OP})LjUP29B#c3EqmO-UItBvw zR(njC>?6yvncPTy9z_a66LV;a?rRXrN@2yI(_N=nNvzjBytZ*QQ|qvO+As$bCZk^? zssa0AeuTj|slIQ&+!44O)7x~#7@%z8$;nke zaZ}&9SrxE)f%Twd>(n5iW>U#KZ>6v*47qu^YabK}r^S2QiRnu`@AU$`e70gnLQ-UL zVZ2dJtu{5`lT#SLWuyTyzTcQ-|0DC(9q5+T64ns5pBqnm$xrC;XLf83=|;CS4U4>B zWH_O3AC}I@HU8PMudrUafGuGAjKO<=&ZjX;Mg7B&-ED|gc}^$7dhhSqfna$J>~|_Dm)K#jJ8%wKmKpo+d$g9 zGc(MLp!4+J#vD7{6Fgbs;{fL@)V<-t5t^HXTwYL8UqCk;EweQbyXNpB-ET|4*v-*V zER{@sw!ilZ%dCx-NR+w_^BJ`M_MmW5J7ahG-~6RS&M?X|4%2HMpp#hcAUf=-dxhmj zgq>D-0ip?bZAMJpYx*y)G(W7XL%)vOjZ7a4!wB^36jF_5+ciKP9x_i7y0eT-c^^7jBZLl74_Xma0n zXz)v(zfNE)XK?qXH`aXCDz;;x-C={FG3bm(2lv|AL}^xq`#=bP3B$DP25Yp3mDYyo zUl>=n1et-)6bi8v+h>NCmu9J|yEq4IP^AaQE4%1P}>@W6(nXYHh7uSU;@s z^F2W{Jl~UeYqn_`C_|~>lTX=fiWE$cV?)em$FJU8 zIJM!Fz7}4;WkNt~FlFL<0%g5Jfo5AZY832}r()Zp$9Azix<2i$CG9?LLZJtVP9bCR z=L%3MDSSwFmF*~Aa)@=sYFYIhbwtlfLcNvWUUjWbz_G#c!pvL!zVdqEn(pTztafvN zWF|5vMXr!CV8Xl~WRcY1f6RLE=mDRxvqtwh*nAPzXSye4ebL^Z7XVE-7pu)W$|k5d z%zg>Iq5O_!-l!#OWdvXE#j{eS3)3X$zn3z&R9ZRC`>?bCT`S8JNmw7nt1Vv2!?RUn zOh!UnARl=jdtI9ifo*ht%*nfmQJTawH)xy1$A`dFmVVg2W_WEt=-~ujh7GEdWRLwi z`hN40t({2L-QZhQa&><9uddIvlgptM*%nSsQc6lnD2R1bF`V(Z+UngBGSd;UYG^9K zCkN#Z>N!YZ`Hs6+D2t<7HHt{eCnqQ-h*=%`V+)gX7g**!CIT z^a98NbLsL4IG(`1=mb!;+mph?d3K?ykMbqmBSmVq(Wuda^1V9nM!zyGD=4YnDZyXxsSSK7lQ*1#4gVQW>(aZ09@de|hc`0j42l zewTLDT2$@RcK$m;&sr5?d&eLHeZIcrJrk1~_ zswvli=I!t`95aQzw5kCm#tPMT2h*OttA3@7n&PMfRh@Dxu_I+-(phElbb*?qVeI2` z=XiPlVb6XI^L9xfp1@bzJ_6F=41sv{mz~9?g_l$wW-s{%FDq7Y6--HuPA4V0UzJlJ zk$Ah2f!iXESXLx;BRR~nN4g)P(=saq^J3mW#v)!7hog{3bU>_jK!fKMu51ogj=R&M zSTvtp&5pK^8HM*%9kg~RbwLb>wNYh%DROGqBxMiZ6C(|iX}&v+Jb_?s{hZqqP_~5Q z-C-pG?eC_Nks`bvZe^~kR?ZwK?WfiTkaEjR`C^7-%t*6+s^zDz<9kQ+KyGg5tPsD# zCgpWmY%8c1k8}Q<&wzkvA)4*O+Vj~$Lv74X&#K`zv$tEbN8BwwWG|;Rc4$;+(QW;< zeekZDt8%e&B{H;8a|&S9Ks7_+r1BCQm%_GB`xw*wFHrc-!QJ{L<~ZBmPgk0a2tr4p z09KBw%j>&v_E00lOTlJF1Pc#L4S zI{VtzXER@&ISW|vzhl`_P&GQH44TsUq7&o){$m;B-P$0m<0Ta5OE--_t)&;RV*a%} zBkGoMpLKkeRdweLiMTmpBs6JG%CI@y$j2OK3Br~{PNRP1obozyZ9QSDuAE;wN7t*= zq1lzxrGwN^ssLswRg`hc>5`I<{=M_~OsFAZV9+9*3j&TiVU34jTs~r({keNsCNoPd zJ5fP1PdrX```Q8oNg%p`zU`2cce4vWyc=Gp(J2aGhlL2CCuR1r#XZMAX0J2>dG1&f z^SVc4kGST~ajzH6!J&ZdhtwMZr;=lRcdHFI46uHW5R5n)H1A%3d`ga z$Y{6gyG@s(n-FSlXyUgwEUgOhudvx$esC>af%6IE#-%4)n~pR+0Dml6nY+}V)J>3# zBmy(`bAAI=p`5~dLujwX>V6cFln~4Is^lT*_OB1|3knPHLem*MDYgor&qT;!MRwFXJykTagoRN$;IotI*jtCj;kLNWFSRh z=G}sugC`i~BU9W(EXu7yW3ggbVoAa7dV+>D4UJF3Ay?BXKSH zISqn&ma5gs$kc|r?jTPsXq)C9_k|$*ykU7F3^@pKvwc1$_y#!cIMSh*1~`%MXpa9a zbY#c8-}*qV4ph+J@PWaRQG+BD!L4gh8vY=mht@#zpsxz2EH&P{wolryAn9)$2|Elc zlNx@^H}9VV={lV?W?1FCgoj6&W^E7lv}ArSBfvGtF!`PQvKhj%r2aR_?LVUI|BIma z|8@-b;M=R#bM0Af4-y-{VF75lL7V=+hchzb)8pG2T0(Mj(1~ z<#5=QkPI4^95K;DG65Q*yP+#iu<3T~#MvHxcJYC5MYN&_5`+aTf&VwE+4 zFkzZRkxcSaxKr3Gk33gBLX>2-umQp>ktCBOTS$B=7z#`x$$rG9&_J9YFNV~oS(X@7 zQM789e^N3<-JEL_aSCYwSThAYR-#%ec=$;kVX}QVLl|A%g%tty0k@XZ6cNtDOypqU zw#8oxJJ%@;D!89xEMzofh#NWq94M?^x|rD>9<*c>CoHfTo7XW?brP6X3d{^zsyK`S zs0nugQ~en|7~^~&xte@*qI4i65GZ?pFrFe7DvrGaz&X$unRZ+Pmd0^nO&DU&+JUZE zf;u`r3^s5uYPdiT5XD$n0)(TV7J)`N1rQQeiTsZpITb)|VsZX7Ln$*EJ25RX2wc*J z{4De_@&FS$iy$d1q39!UhZ1Nz*CdSq)L}B=TLJaKOMFv5PUqww`ryzGd@!ECNyF^? z18{K!ReNQRcH1*tU5)ra1yORsP+}zV%s(=)h5pn_Mu;_lDfrgZ&*Fr5(~!mj^7es1 zuF~WKg#47{Eylw@@*>kC$@~Bo%&~|e%pUo}7XH!*ede0unv7M%YtFk4AleQAt zpx}i1*jZ75Q2`s%pD(LL+p$tH&);6C1aOHZw_lzYx~XTFU(;Q~giA$>?Oea-1i|+8 zYHNVC#04WoFT;CYi<(HVe!prFq5N(;LaM&aS>HbBUflapG%alD$D=;lSPVKbHOy{S zW(QaBTGe>=mOgX3&()WUntpO8o6yt06Md z+U*LTPgIa4g2z;zFLB=CUcxe*@iusK-&RDp2m~8c_cQ>UYOse+E!9g4S7!wV(*jhs zjL?M)p0qfDY?T^6*8wwuw=KcUo1^p72+G;FtATXY7GoC0dwakLqF+uacU#r^f?HDa z(J2hLHQ1fb%2Ou35TO|aI7SS(Bae_6ui7li+`0-myQ!-xlZO1cO^~PzvuEIB43wh7 z2qAx0U+=tcd;f`UTyUEtb0rGvo$s%U86SyMud+8ecvU2wo--`NbsL3Sar2x~?bdKy z>vl`tgRC7K^Y$2q)C`y}?16J-xc_dS_&4M%3A$73cyCe8n)qdRCNfXgi!y2zkiyr} zdOJ2Q&%;6{#j_!|!(*j$ji~3Gea6kE5p~g=)srT2HQ24DME%y+kiopnH&^9{AR-E3 zZ!kTiTp!i6RBLBIvTWY>LC{uQCdNtcwHeghtasLV|pzHi;QB~)Wy{M@eKb<^pz}-IvI8$* zWU1-al`j4noxz44*!YW<-f&6jbbjWdKYot)4w?!!4F`K~2h@J~GA`nesouC;VyhOq`4ZeL&R{g_fi?Kz;ZQ8?8s*X$ z@;qzc7YorW(U?TK)1;SYXz|S(y}_=AhL->Y+kG41=9sueT;eT%7S0K39>AAL;2iZSKm)!wYJw2Vmj#3XVuPX9vfz7 z!Q|l39Iq14;?&*k(VM`d3ri0`q5%7g_O+(2uWqo2)o-MGycee2jrB5&rSd4FJA7YB zsNZR6;~uy?T_;k?A-E-zkzrwk0%)vq4_fPd&aCKWJ@3SSp&s&OVqg7OhnzEIg*|g8F{1@ z;FV%!b>5-vM?uH}PA6cnTAAazHg~d8tsMZa{A>mvDJSs@lQVl4PDzl425_ zzqPQjb-dKLv{ka#pez1!8{qg1J7`FA8YAz575uvtR*w|=y$LqBiu6>YZJSSg_kPb; zMFyUA>YN>P#bd;kJ)Qpktgq?g-FnJfQ+pQ`1W2YxRm&=INJB^qD>ZJM<1i;7YiXs! zx4tY)l{2-*try)bxGOB=U?0LODT?xrpMvMHO!kZed>rBPZYZuu1 z6g*z0wP9j=P>WFmPtcg%c>h>u7FhrF!k70SzDlmI@y{}&$@e6TZL$VOGXon9trL{t z*I068J!qhaC!w)EuQ2cKTLGnpPKvnn)VI^sz)D}~*Keh8RPROztXgy}sPWuNENYSJqBdEHz6@yNpCO`}@abeZ_L zSnTgM-&~7x?G-8ohA5Enn)J}c2TvBS93QWau^Pg+jpot{DDy9s-p*9q=C1TcN~j=j zKaAVxOR8I2J6Eu)7w}V)Aw~xY8x_+RN%?~2doKOTQT@DGJd;D?NG|qh zxe$g0v`YEseI$damP{C&OU& z36HtO-_ny;wOzH8&mPa4z%+v+Ebn^jl6#G<6J{LA*Zrr`1HY@SdHekOI3sB2AwEuB z9HA_@DK>vSdVAt2%#&anb)@OvToBK)?v{lTN1c6tO^7P0V7Kf%e)X60%-<6~R_x{p z@M*+f*2rCQK2QI7Ww3;dJCu9u9=U}r6X4NXA1-#MOfBVc-z4F=9{Fhu5OV?eE2 z%mMcTvSazNrd6qlS#ItD=$iSt$Ae|XjF;`r@Ys#QRx`t>8z~R7--kJ=Rcm1Awd+l^ zr7dA`9iEKSRrkH#NgCc#csEu*G9;HIjG-7Y$0;}~>O91A$yozC&%Kj-T?Tr)$u#$` z^hX3s8&Cd>T+aT%(Jc20Z?VV*6|Se3=Jzk(D1%}XowM#;4yn3 zF-*YST4ubVB+2sn1&u_+1KrvL?qqy?LF|^_+mBEmJ`VQ@KnvZ?;e-dD^&(gga!&3J z=%A&9%g#TTG~3vBZjA(|BGP7;xt0!Nv-leqb(cx15W{SvAzizoO!1JyFROfJPtry| zc`4Z9bsTo=DH*HN7{g`k|UR`i6(? z*k$rfgWM_Gpv?CPY+5h-wTS%}FN)&KesEhw(n;%IN9x`ZCAT?|RF_B8spgNl4L+qO z$;Y#FxU+yuoaOGqCFVae%ggme*=XZRUvscm3#Le2ca2HCIA#k(Pdp71cGn;ft-@(V zamNxlaU7N3?X-rbC(N99whccK-Z^13kKhDOH7A5-VS;mc>cD`%zLBDxj`s~z#c*nT zp-+=tETBd6DR*QpGGNA zY1+Y-(wKX;w>iH~mPItfreASS?$0=k)$ML)w9f=jFOK))I)2HSLC30$T22GKRIIF# z&2wve3h+U$F>%>Eifi-93s(8_C&GG^q^NGb2uZV7DS6K=(jOT3Rxk0aikZscjb(2+ zExsE6`CCfo7DoOiJi*!DmaFV|a%~Qd-E$@I$Hn|&9bczvzlHq827xm1d_VdwLk9~& zS4X0AgV;4J+F=*&u3`=^b`agX9)4>yA#DX}v`mX$_R(CJrP40-*fn(LeA&_L2b`(P z*nPz3^J*r6bNl6~%U{6PE)GlQk1fgAdW>KOPbdbYW6dky;D)J`Fv6EnZko)5x%MQ< z32gn17Wipp`aKm9g{uw21F3Z=kCwANyR~?%VQsoqZGAvx$Io#*Q!USw4X&_4M~M`U zQX^^2AfoK_N#)(C#wV+86-Kp(BBURVXHRPngK7&F#&>#s$%r#*Kz}Bx_lUw?V9F;e zRphkIR%A1?F(22O2VG!_!=QmDjG>=rOnlHfJT!u;j0;!U^7sh=cpM@##cgJ znJT%hJY`h2ywKo9UH`SRW&uZ#L^h>6Jg&Q9K&-!ED&zQ+@+zGlFS@D@{|F!gP%G`_ z1DsQfaq8hxR{M#0xXFARB`L11% zd7GbMlw_B|Sq8}?Jg*B@fLSs<^Hqc8Se;-`PraXK21u8!o7eqw@0UzMWHu1T;av%q zge?z_qb>83bb|MiKJyb)U>S7h<=>wx1}j)t_Q22Rczcg=GXsw`;&;cxr(?>w%R7&v z^#VD@r&Pu?3I?8(B+Kjm0=KP@6)M_zs0K#j*9uuw^DwdB>QbgAdTse!`zreF#sr}2 z0y#@hnPUHjzfH$=iGQTyo1sJxZ_-(W}HUH za)yt~yVRxPo6%9Oo_F}~o>2ROkBg*>PwCgdd{Y073P8%>|HTTPnmQt7_3y*g>=oth z6ciy~M@4x@M>%DPvV)R5ND&MHJAmcwksw=*|9^#*tf_|whUwq@vZ<`TJJLhwUov4T z3w8E)6apzjWG&zzA$cJ=tN)8cD1iPah)^8qh7Nl25x2)0rGef1xN8rA4pI@-DA%eJ zQT>~hpExv~-#9qSLm;y@ol_l#_E90Ntr+<>#B3;>K0ol=pkJffKaldHzCVqA!paF7dUq^K}vr8FJ^YC!2~|B4h2RQJxoxTM*-nB&L&B za}emK{xqtC2ddYxesjF%R1$x zziYj+kxaFxD{FmNLU4J8i{56)n|rJlN)O^6vjqtdu1L3O1ZZMPKHi+(!00D zr^mvcCZg`dSv$Ig z%3E&_IQ=JRN Date: Sun, 16 Jun 2024 17:26:21 +0200 Subject: [PATCH 27/83] Add files via upload --- .../HW3/Yasir_Mansour_HW3_VQE.ipynb | 439 ++++++++++++++++++ 1 file changed, 439 insertions(+) create mode 100644 community/QClass_2024/Submissions/HW3/Yasir_Mansour_HW3_VQE.ipynb diff --git a/community/QClass_2024/Submissions/HW3/Yasir_Mansour_HW3_VQE.ipynb b/community/QClass_2024/Submissions/HW3/Yasir_Mansour_HW3_VQE.ipynb new file mode 100644 index 00000000..576ee39e --- /dev/null +++ b/community/QClass_2024/Submissions/HW3/Yasir_Mansour_HW3_VQE.ipynb @@ -0,0 +1,439 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "820da28e", + "metadata": { + "colab_type": "text", + "id": "view-in-github" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "id": "fc72d98f-8993-4bd4-a545-23d122f3df71", + "metadata": { + "id": "fc72d98f-8993-4bd4-a545-23d122f3df71" + }, + "source": [ + "# H₂ Molecule Homework Assignment\n", + "### Quantum Software Development Journey: From Theory to Application with Classiq - Part 3\n", + "\n", + "- Similarly to what we have done in class, in this exercise we will implement the VQE on H2 molecule.\n", + "- This time instead of using the built-in methods and functions (such as `Molecule` and `MoleculeProblem`) to difne and solve the problem, you will be provided with a two qubits Hamiltonian." + ] + }, + { + "cell_type": "markdown", + "id": "56eda6d8-76c4-4862-b914-0c4598d67274", + "metadata": { + "id": "56eda6d8-76c4-4862-b914-0c4598d67274" + }, + "source": [ + "## Submission\n", + "- Submit the completed Jupyter notebook and report via GitHub. Ensure all files are correctly named and organized.\n", + "- Use the Typeform link provided in the submission folder to confirm your submission.\n", + "\n", + "## Additional Resources\n", + "- Classiq Documentation(docs.classiq.io/latest/)\n", + "- The notebook from live session #3\n", + "\n", + "## Important Dates\n", + "- **Assignment Release:** 22.5.2024\n", + "- **Submission Deadline:** 3.6.2024 (7 A.M GMT+3)\n", + "\n", + "---\n", + "\n", + "Happy coding and good luck!" + ] + }, + { + "cell_type": "markdown", + "id": "d41e969d-f6a7-4ff7-9660-19ce6c97ba6b", + "metadata": { + "id": "d41e969d-f6a7-4ff7-9660-19ce6c97ba6b" + }, + "source": [ + "### Part 1" + ] + }, + { + "cell_type": "markdown", + "id": "f710d6f4-d40b-42d5-b524-c6acb8059fe2", + "metadata": { + "id": "f710d6f4-d40b-42d5-b524-c6acb8059fe2" + }, + "source": [ + "Given the following Hamiltonian:" + ] + }, + { + "cell_type": "markdown", + "id": "6ba8a6f1-3259-4492-a1ca-3abde7530cd4", + "metadata": { + "id": "6ba8a6f1-3259-4492-a1ca-3abde7530cd4" + }, + "source": [ + "$$\n", + "\\hat{H} = -1.0523 \\cdot (I \\otimes I) + 0.3979 \\cdot (I \\otimes Z) - 0.3979 \\cdot (Z \\otimes I) - 0.0112 \\cdot (Z \\otimes Z) + 0.1809 \\cdot (X \\otimes X)\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "736d275c-9a5a-4c08-b891-3078430dc6c1", + "metadata": { + "id": "736d275c-9a5a-4c08-b891-3078430dc6c1" + }, + "source": [ + "Complete the following code" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "DQOxbZxjrN5r", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "DQOxbZxjrN5r", + "outputId": "7ffed65a-717f-4f7a-d969-d999a1fa6611" + }, + "outputs": [], + "source": [ + "#!pip install classiq" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "o13wIglSeo7y", + "metadata": { + "id": "o13wIglSeo7y" + }, + "outputs": [], + "source": [ + "#import classiq" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "jLanwByIe4eJ", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "jLanwByIe4eJ", + "outputId": "6dec848a-472c-4dc6-8104-d8d00fbbb8e6" + }, + "outputs": [], + "source": [ + "#classiq.authenticate()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "19266c11-6acc-4edb-910f-2d0dfe80a6c8", + "metadata": { + "id": "19266c11-6acc-4edb-910f-2d0dfe80a6c8" + }, + "outputs": [], + "source": [ + "from typing import List, cast\n", + "from classiq import *\n", + "from classiq import Pauli, PauliTerm\n", + "\n", + "#TODO: Complete Hamiltonian\n", + "HAMILTONIAN = QConstant(\"HAMILTONIAN\", List[PauliTerm], [\n", + " PauliTerm([Pauli.I, Pauli.I], -1.0523),\n", + " PauliTerm([Pauli.I, Pauli.Z], 0.3979),\n", + " PauliTerm([Pauli.Z, Pauli.I], -0.3979),\n", + " PauliTerm([Pauli.Z, Pauli.Z], -0.0112),\n", + " PauliTerm([Pauli.X, Pauli.X], 0.1809),\n", + "])" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "0bb68899-2076-45c0-8868-131f38aa3b78", + "metadata": { + "id": "0bb68899-2076-45c0-8868-131f38aa3b78" + }, + "outputs": [], + "source": [ + "@qfunc\n", + "def main(q: Output[QArray[QBit]], angles: CArray[CReal, 3]) -> None:\n", + " # TODO: Create an ansatz which allows each qubit to have\n", + " # arbitrary rotation\n", + "\n", + " allocate(2, q)\n", + " U(angles[0], angles[1], angles[2], 0, q[0])\n", + " U(angles[0], angles[1], angles[2], 0, q[1])\n", + " #CX(q[0], q[1])\n", + "\n", + "@cfunc\n", + "def cmain() -> None:\n", + " res = vqe(\n", + " hamiltonian=HAMILTONIAN,\n", + " maximize=False,\n", + " initial_point=[],\n", + " optimizer=Optimizer.COBYLA,\n", + " max_iteration=1000,\n", + " tolerance=0.001,\n", + " step_size=0,\n", + " skip_compute_variance=False,\n", + " alpha_cvar=1.0,\n", + " )\n", + " save({\"result\": res})\n", + "\n", + "qmod = create_model(main, classical_execution_function=cmain)\n", + "#TODO: complete the line, use classical_execution_function\n", + "qprog = synthesize(qmod)\n", + "# show(qprog)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "0563c1a8-7aec-4da9-9105-6b16c5c24382", + "metadata": { + "id": "0563c1a8-7aec-4da9-9105-6b16c5c24382" + }, + "outputs": [], + "source": [ + "execution = execute(qprog)\n", + "res = execution.result()\n", + "# execution.open_in_ide()\n", + "vqe_result = res[0].value\n", + " #TODO: complete the line" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "de17cfc0-8e64-4493-b4c2-4a97fc9797a0", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "de17cfc0-8e64-4493-b4c2-4a97fc9797a0", + "outputId": "67a7bccc-f67c-4dfc-aad2-7011fc51905c", + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Optimal energy: -1.0681201171874999\n", + "Optimal parameters: {'angles_0': -3.429491869883728, 'angles_1': -4.962285285210174, 'angles_2': 6.007229196693071}\n", + "Eigenstate: {'10': (0.13621559198564606+0j), '01': (0.13621559198564606+0j), '11': (0.9812699042567239+0j)}\n" + ] + } + ], + "source": [ + "print(f\"Optimal energy: {vqe_result.energy}\")\n", + "print(f\"Optimal parameters: {vqe_result.optimal_parameters}\")\n", + "print(f\"Eigenstate: {vqe_result.eigenstate}\")" + ] + }, + { + "cell_type": "markdown", + "id": "Yy49RbSEytVl", + "metadata": { + "id": "Yy49RbSEytVl" + }, + "source": [ + "Optimal energy: -1.0711231445312501\n", + "Optimal parameters:\n", + "{'angles_0': -3.0914206855935538, 'angles_1': -0.23729943557563232, 'angles_2': -2.5756826635214636}\n", + "Eigenstate:\n", + "{'01': (0.02209708691207961+0j),\n", + "'11': (0.9997558295653994+0j)}" + ] + }, + { + "cell_type": "markdown", + "id": "5df11dfc-3e3a-4191-bd47-d522ca3dcbfa", + "metadata": { + "id": "5df11dfc-3e3a-4191-bd47-d522ca3dcbfa" + }, + "source": [ + "Does it similar to the `optimal energy` we calculated in class? \\\n", + "Does it similar to the `total energy` we calculated in class?" + ] + }, + { + "cell_type": "markdown", + "id": "4f0e0bea-b12f-43ad-94e8-100fedf2b57f", + "metadata": { + "id": "4f0e0bea-b12f-43ad-94e8-100fedf2b57f" + }, + "source": [ + "### Part 2" + ] + }, + { + "cell_type": "markdown", + "id": "66882248-de08-4a6e-b33c-647f015f7d79", + "metadata": { + "id": "66882248-de08-4a6e-b33c-647f015f7d79" + }, + "source": [ + "**Now, we want to have a more interesting ansatz in our `main`.** \n", + "Add **one** line of code to the `main` function you created in Part 1 that creates **entanglement** between the two qubits. \n", + "Which gate should you use?" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "bb39be9e-4994-44e5-84d8-c99bc8b77145", + "metadata": { + "id": "bb39be9e-4994-44e5-84d8-c99bc8b77145" + }, + "outputs": [], + "source": [ + "@qfunc\n", + "def main(q: Output[QArray[QBit]], angles: CArray[CReal, 3]) -> None:\n", + " # TODO: Create an ansatz which allows each qubit to have\n", + " # arbitrary rotation\n", + "\n", + " allocate(2, q)\n", + " U(angles[0], angles[1], angles[2], 0, q[0])\n", + " U(angles[0], angles[1], angles[2], 0, q[1])\n", + " CX(q[0], q[1])\n", + " #H(q[0])\n", + " #X(q[1])\n", + " #CX(q[0], q[1])\n", + "\n", + "\n", + "@cfunc\n", + "def cmain() -> None:\n", + " res = vqe(\n", + " HAMILTONIAN, # TODO: complete the missing argument\n", + " False,\n", + " [],\n", + " optimizer=Optimizer.COBYLA,\n", + " max_iteration=1000,\n", + " tolerance=0.001,\n", + " step_size=0,\n", + " skip_compute_variance=False,\n", + " alpha_cvar=1.0,\n", + " )\n", + " save({\"result\": res})\n", + "\n", + "qmod = create_model(main, classical_execution_function=cmain)\n", + "#TODO: complete the line, use classical_execution_function\n", + "qprog = synthesize(qmod)\n", + "# show(qprog)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "112a1590-283c-4f79-8035-72936561102d", + "metadata": { + "id": "112a1590-283c-4f79-8035-72936561102d" + }, + "outputs": [], + "source": [ + "execution = execute(qprog)\n", + "res = execution.result()\n", + "# execution.open_in_ide()\n", + "vqe_result = res[0].value\n", + "#TODO: complete the line" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "06500e4c-a04b-4cfa-a84d-41f96a0c68eb", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "06500e4c-a04b-4cfa-a84d-41f96a0c68eb", + "outputId": "dcaccb41-a8ff-4e1d-eb1e-8f110ed93820" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Optimal energy: -1.83589755859375\n", + "Optimal parameters: {'angles_0': -3.1968121237616858, 'angles_1': 4.415682206108902, 'angles_2': 5.319096413899962}\n", + "Eigenstate: {'11': (0.02209708691207961+0j), '10': (0.038273277230987154+0j), '01': (0.9990229601966113+0j)}\n" + ] + } + ], + "source": [ + "print(f\"Optimal energy: {vqe_result.energy}\")\n", + "print(f\"Optimal parameters: {vqe_result.optimal_parameters}\")\n", + "print(f\"Eigenstate: {vqe_result.eigenstate}\")" + ] + }, + { + "cell_type": "markdown", + "id": "-7V3qnVRzFmJ", + "metadata": { + "id": "-7V3qnVRzFmJ" + }, + "source": [ + "Optimal energy: -1.8452896484374999\n", + "Optimal parameters:\n", + "{'angles_0': -2.9812026284028255, 'angles_1': 0.8040137892002661, 'angles_2': 5.77426479151465}\n", + "\n", + "Eigenstate:\n", + "{'11': (0.08267972847076846+0j),\n", + "'10': (0.07967217989988726+0j),\n", + "'01': (0.9933863328282708+0j)}\n" + ] + }, + { + "cell_type": "markdown", + "id": "30a635d7-2f15-4c94-a94b-f4270f17aed8", + "metadata": { + "id": "30a635d7-2f15-4c94-a94b-f4270f17aed8" + }, + "source": [ + "Does it similar to the `optimal energy` we calculated in class? \\\n", + "Does it similar to the `total energy` we calculated in class? \\\n", + "What can we learn about the provided form this result Hamiltonian?\n", + "\n", + "With entanglement one gets better results." + ] + } + ], + "metadata": { + "colab": { + "include_colab_link": true, + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3 [Default]", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 2bc5741a26cfe4b9f4e658eda3f68aa71ed36b52 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Sun, 16 Jun 2024 17:27:06 +0200 Subject: [PATCH 28/83] Delete community/QClass_2024/Submissions/HW3/Yasir_Mansour_HW3_VQE.pdf --- .../Submissions/HW3/Yasir_Mansour_HW3_VQE.pdf | Bin 55014 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 community/QClass_2024/Submissions/HW3/Yasir_Mansour_HW3_VQE.pdf diff --git a/community/QClass_2024/Submissions/HW3/Yasir_Mansour_HW3_VQE.pdf b/community/QClass_2024/Submissions/HW3/Yasir_Mansour_HW3_VQE.pdf deleted file mode 100644 index 2d668382f97c1dfbf5b27f62d7d47a8fa40918a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55014 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 From 7926c441501f0c76b935ca040d3a23b54f0f598a Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Sun, 16 Jun 2024 17:28:14 +0200 Subject: [PATCH 29/83] Add files via upload --- ...nsour_molecule_eigensolver_ipynb_txt.ipynb | 717 ++++++++++++++++++ 1 file changed, 717 insertions(+) create mode 100644 community/QClass_2024/Submissions/HW4/Yasir_Mansour_molecule_eigensolver_ipynb_txt.ipynb diff --git a/community/QClass_2024/Submissions/HW4/Yasir_Mansour_molecule_eigensolver_ipynb_txt.ipynb b/community/QClass_2024/Submissions/HW4/Yasir_Mansour_molecule_eigensolver_ipynb_txt.ipynb new file mode 100644 index 00000000..ee235629 --- /dev/null +++ b/community/QClass_2024/Submissions/HW4/Yasir_Mansour_molecule_eigensolver_ipynb_txt.ipynb @@ -0,0 +1,717 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "726d2386", + "metadata": { + "colab_type": "text", + "id": "view-in-github" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "id": "4fbae0f9", + "metadata": { + "id": "4fbae0f9" + }, + "source": [ + "# Molecule Eigensolver (VQE method)\n", + "\n", + "Evaluating the ground state of a molecular Hamiltonian allows us to understand the chemical properties of the molecule. In this demo, we demonstrate the usage of Variational Quantum Eigensolver (VQE) for finding the ground states and energies of several molecules: 𝐻2 , 𝐻2𝑂 and 𝐿𝑖𝐻 .\n", + "\n", + "VQE is a leading method for finding approximate values of ground state wavefuncions and energies for complicated quantum systems, and as such can give solutions for complex molecular structures. The overview of the VQE method is as following: a problem (i.e. a molecule) is defined by a Hamiltonian which ground state is sought. Then, a choice of a parameterized ansatz is made. Using a hybrid quantum-classical algorithm, a solution for the defined parameters which minimize the expectation value for the energy is found. A clever ansatz will lead to an estimated ground state solution.\n", + "\n", + "Within the scope of Classiq's VQE algorithm, the user defines a Molecule which is being translated to a concise Hamiltonian. Then, a choice between several types of well studied ansatz is given, which can be carefully picked to fit your Molecule type. In the last stage, the Hamiltonian and ansatz are sent to a classical optimizer. During this tutorial we will demonstrate the steps and user options in Classiq's VQE algorithm. Furthermore, the demonstration will present the optimization strength Classiq's VQE algorithm holds, and it's state of the art results in term of efficient quantum circuit - with ultimate combination of low depth and high accuracy, while minimizing the number of CX gates." + ] + }, + { + "cell_type": "markdown", + "id": "TWGNYMkUKh6C", + "metadata": { + "id": "TWGNYMkUKh6C" + }, + "source": [ + "` **RESULTS**\n", + "\n", + "Comparison of different molecules in terms of width and depth. The more atoms in a molecule, the more qubits/circuit depth are necessary. System overload when more than 3 atoms.\n", + "\n", + "## **h2**\n", + "\n", + "hw-eff ansatz: width 4/depth34\n", + "\n", + "ucc ansatz: ,\n", + "width 1/depth 6, width 4, depth 3\n", + "\n", + "total en -1.1342995783232035,\n", + "exact result: -1.8572750302023786,\n", + "vqe result: -1.854268572772183\n" + ] + }, + { + "cell_type": "markdown", + "id": "XcbH8UHbKrIU", + "metadata": { + "id": "XcbH8UHbKrIU" + }, + "source": [ + "## **h2o**\n", + "\n", + "hw-eff. ansatz: width 12/depth 375,\n", + "(conn map 0-1..10-11, reps 11)\n", + "\n", + "ucc ansatz: width 8/depth 1218, width 12/depth 1048\n", + "\n", + "total energy -71.7605079203085,\n", + "exact result: -23.544497240443615,\n", + "vqe result: -80.95442108093192" + ] + }, + { + "cell_type": "markdown", + "id": "Br0-chtAKv6D", + "metadata": { + "id": "Br0-chtAKv6D" + }, + "source": [ + "##**co2**\n", + "\n", + "hw-eff ansatz: width 24/depth 175\n", + "\n", + "ucc ansatz: width 20/depth 19767, width 24/depth 16968\n", + "\n", + "Error number 90001 occurred. The resources needed to execute this request are insufficient.\n", + " This may be due to computational limitations, or high load on Classiq's servers." + ] + }, + { + "cell_type": "markdown", + "id": "54d09062-1b3b-4e4b-8351-5e05a633e269", + "metadata": { + "id": "54d09062-1b3b-4e4b-8351-5e05a633e269" + }, + "source": [ + "## 0. Pre-requirments\n", + "\n", + "The model is using several Classiq's libraries." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "C3SemPUxJw4V", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "C3SemPUxJw4V", + "outputId": "b735d9f4-3d88-4b64-f115-4a9725e63811" + }, + "outputs": [], + "source": [ + "#!pip install classiq" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "LHrqCSj2J5PC", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "LHrqCSj2J5PC", + "outputId": "75c65d46-2d6a-4796-92ee-3dc517c54b93" + }, + "outputs": [], + "source": [ + "#import classiq\n", + "#classiq.authenticate()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fc04368f-475c-4e00-9b26-f51dd94a15f0", + "metadata": {}, + "outputs": [], + "source": [ + "from classiq import *" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c6bbe65f-1e6a-475c-a43f-cb4cc04bbdfa", + "metadata": { + "id": "c6bbe65f-1e6a-475c-a43f-cb4cc04bbdfa", + "tags": [] + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "from classiq import QuantumProgram, construct_chemistry_model, execute, show, synthesize\n", + "from classiq.applications.chemistry import (\n", + " ChemistryExecutionParameters,\n", + " HEAParameters,\n", + " Molecule,\n", + " MoleculeProblem,\n", + " UCCParameters,\n", + ")\n", + "from classiq.execution import (\n", + " ClassiqBackendPreferences,\n", + " ClassiqSimulatorBackendNames,\n", + " ExecutionPreferences,\n", + " OptimizerType,\n", + ")\n", + "from classiq.synthesis import set_execution_preferences" + ] + }, + { + "cell_type": "markdown", + "id": "faa3c10f", + "metadata": { + "id": "faa3c10f" + }, + "source": [ + "## 1. Generate Qubit Hamiltonian\n", + "\n", + "The first step is to define the molecule we wish to simulate. We hereby declare the class Molecule and insert a list of atoms and their spacial positions. The algorithm will automatically regard relevant attributes such as the atom's mass, charge and spin.\n", + "\n", + "As mentioned above, during this tutorial, we demonstrate how to define and find the ground state and energies for 3 molecules:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "VN6XdfYfLApS", + "metadata": { + "id": "VN6XdfYfLApS", + "tags": [] + }, + "outputs": [], + "source": [ + "#hydrogen\n", + "molecule_H2 = Molecule(atoms=[(\"H\", (0.0, 0.0, 0)), (\"H\", (0.0, 0.0, 0.735))])\n", + "\n", + "#oxygen\n", + "molecule_O2 = Molecule(atoms=[(\"O\", (0.0, 0.0, 0)), (\"O\", (0.0, 0.0, 1.16))])\n", + "\n", + "#lithium hydride\n", + "molecule_LiH = Molecule(atoms=[(\"H\", (0.0, 0.0, 0.0)), (\"Li\", (0.0, 0.0, 1.596))])\n", + "\n", + "#water\n", + "molecule_H2O = Molecule(\n", + " atoms=[(\"O\", (0.0, 0.0, 0.0)), (\"H\", (0, 0.586, 0.757)), (\"H\", (0, 0.586, -0.757))]\n", + ")\n", + "#beryllium hydride\n", + "molecule_BeH2 = Molecule(\n", + " atoms=[(\"Be\", (0.0, 0.0, 0.0)), (\"H\", (0, 0, 1.334)), (\"H\", (0, 0, -1.334))]\n", + ")\n", + "#carbon dioxide\n", + "molecule_CO2 = Molecule(atoms=[(\"C\", (0.0, 0.0, 0.0)),\n", + " (\"O\", (0, 0, 1.1693)), (\"O\", (0, 0, -1.1693))])\n", + "\n", + "#ethyne, acetylene\n", + "molecule_C2H2 = Molecule(atoms=[(\"C\", (0, 0, -0.5977)), (\"C\", (0, 0, 0.5977)),\n", + " (\"H\", (0, 0, -1.6692)), (\"H\", (0, 0, 1.6692))])\n", + "\n", + "#chloroform\n", + "molecule_CH3Cl = Molecule(atoms=[(\"C\", (0, 0, -1.1401)), (\"Cl\", (0, 0, 0.6645)),\n", + " (\"H\", (0, 1.0343, -1.4855)),\n", + " (\"H\", (0.8957, -0.5171, -1.4855)), (\"H\", (-0.8957, -0.5171, -1.4855))])\n", + "\n", + "#ethylene\n", + "molecule_C2H4 = Molecule(atoms=[(\"C\", (0, 0, 0.6673)), (\"C\", (0, 0, -0.6673)),\n", + " (\"H\", (0, 0.9239, 1.2411)), (\"H\", (0, -0.9239, 1.2411)),\n", + " (\"H\", (0, -0.9239, -1.2411)), (\"H\", (0, 0.9239, -1.2411))])\n" + ] + }, + { + "cell_type": "markdown", + "id": "ab162f48", + "metadata": { + "id": "ab162f48" + }, + "source": [ + "Similarly, the user is able to construct any valid essambly of atoms. The distances are recived in Å ($10^{-10} m$). We will continue this demonstration with a specific molecule. The user can change the `molecule` below to study other cases." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2e77678f", + "metadata": { + "id": "2e77678f", + "tags": [] + }, + "outputs": [], + "source": [ + "molecule = molecule_H2O" + ] + }, + { + "cell_type": "markdown", + "id": "c4a541a5", + "metadata": { + "id": "c4a541a5" + }, + "source": [ + "Next, we define the parameters of the Hamiltonian generation program. The user has a choice over the following options:\n", + "- mapping (str): the mapping between the fermionic Hamiltonian and an qubits Hamiltonian. Supported types:\n", + " - \"jordan_wigner\"\n", + " - \"parity\"\n", + " - \"bravyi_kitaev\"\n", + " - \"fast_bravyi_kitaev\"\n", + "- freeze_core (bool): remove the \"core\" orbitals of the atoms defining the molecule.\n", + "- z2_symmetries (bool): whether to perform z2 symmetries reduction. If symmetries in the molecules exist, this option will decrease the number of qubits used and will efficient the Hamiltonian and thus the calculations.\n", + "\n", + "Finally, the Hamiltonian is generated from `MoleculeProblem`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2e0426d5", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "2e0426d5", + "outputId": "205584a3-ca38-4d54-ca52-dbc3f88b8bbf", + "tags": [] + }, + "outputs": [], + "source": [ + "chemistry_problem = MoleculeProblem(\n", + " molecule=molecule,\n", + " mapping=\"jordan_wigner\", #'bravyi_kitaev'\n", + " z2_symmetries=True,\n", + " freeze_core=True,\n", + ")\n", + "\n", + "operator = chemistry_problem.generate_hamiltonian()\n", + "gs_problem = chemistry_problem.update_problem(operator.num_qubits)\n", + "print(\"Your Hamiltonian is\", operator.show(), sep=\"\\n\")" + ] + }, + { + "cell_type": "markdown", + "id": "67a124c2-33fc-420c-8cb3-0002f18f4e77", + "metadata": { + "id": "67a124c2-33fc-420c-8cb3-0002f18f4e77" + }, + "source": [ + "The output of the above code lines is the Hamiltonian presented as a superposition of Pauli matrices multiplication.\n", + "One can easily confirm that using z2*symmetries=True, the number of qubits are reduced (compered to z2_symmetries=False): for $H_2$ - from 4 to 1, for $LiH$ from 12 to 8, and for $H*{2}O$ from 14 to 10." + ] + }, + { + "cell_type": "markdown", + "id": "8abe3e3d-1b01-4fab-b86a-feaab3851950", + "metadata": { + "id": "8abe3e3d-1b01-4fab-b86a-feaab3851950" + }, + "source": [ + "## 2. Constructing and Synthesizing a Ground State Solver\n", + "\n", + "A ground state solver model consists of a parameterized eigenfunction (\"the ansatz\"), on which we run a VQE. In addition, a post-process of the result allows to return the total energy (combining the ground state energy of the Hamiltonian, the nuclear repulsion and the static nuclear energy).\n", + "\n", + "Once we've specified an Hamiltonian and a desired Ansatz, we send them to the VQE algorithm in order to find the Hamiltonian's ground state. In the process, the algorithm will send requests to a classical server, which task is to minimize the energy expectation value and return the optimized parameters. The simulator and optimizing parameters are defined as part of the VQE part of the model. The user should control the `max_iteration` value in a manner so the solution has reached a stable convergence. In addition, the value `num_shots` sets the number of measurements performed after each iteration, thus influence the accuracy of the solutions.\n", + "\n", + "We demonstrate two different proposal for the wavefunction solution ansatz: (1) Hardware (HW) efficient, and (2) Unitary Coupled Cluster (UCC). For groundstate solvers it is typical to initialize the Ansatz with the Hartree-Fock state." + ] + }, + { + "cell_type": "markdown", + "id": "07ed8f8e-485b-4f0f-93b7-78e7fd6fbe39", + "metadata": { + "id": "07ed8f8e-485b-4f0f-93b7-78e7fd6fbe39" + }, + "source": [ + "### 2.1 HW-Efficient Ansatz\n", + "\n", + "Hardware-efficient ansatz is a suggested solution that is generated to fit a specific hardware [1]. The ansatz creates a state with given number of parameters by user choice (number of qubits, that should fit the Hamiltonian), and creates entanglement between the qubits by the inputed connectivity map. In this example, a 4 qubit map is given, which is specifically made of $H_2$ with z2_symmetries=False.\n", + "\n", + "After constructing the model, we can synthesize it and view the outputted circuit, in charged on creating the state with an interactive interface." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "90b20061-8dbd-4136-adba-28ddacb1f583", + "metadata": { + "id": "90b20061-8dbd-4136-adba-28ddacb1f583", + "tags": [] + }, + "outputs": [], + "source": [ + "chemistry_problem = MoleculeProblem(\n", + " molecule=molecule,\n", + " mapping=\"jordan_wigner\", #'bravyi_kitaev'\n", + " z2_symmetries=False,\n", + " freeze_core=True,\n", + ")\n", + "\n", + "hwea_params = HEAParameters(\n", + " num_qubits=12,\n", + " connectivity_map=[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8),\n", + " (8, 9), (9, 10)],\n", + " reps=3,\n", + " one_qubit_gates=[\"x\", \"ry\"],\n", + " two_qubit_gates=[\"cx\"],\n", + ")\n", + "\n", + "qmod = construct_chemistry_model(\n", + " chemistry_problem=chemistry_problem,\n", + " use_hartree_fock=True,\n", + " ansatz_parameters=hwea_params,\n", + " execution_parameters=ChemistryExecutionParameters(\n", + " optimizer=OptimizerType.COBYLA,\n", + " max_iteration=30,\n", + " initial_point=None,\n", + " ),\n", + ")\n", + "\n", + "backend_preferences = ClassiqBackendPreferences(\n", + " backend_name=ClassiqSimulatorBackendNames.SIMULATOR\n", + ")\n", + "\n", + "qmod = set_execution_preferences(\n", + " qmod,\n", + " execution_preferences=ExecutionPreferences(\n", + " num_shots=1000, backend_preferences=backend_preferences\n", + " ),\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f13599d2-e8e7-4165-aa26-8ae8d4bdafaa", + "metadata": { + "id": "f13599d2-e8e7-4165-aa26-8ae8d4bdafaa", + "tags": [] + }, + "outputs": [], + "source": [ + "from classiq import write_qmod\n", + "\n", + "write_qmod(qmod, name=\"molecule_eigensolver\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "22cd12d1-2c87-400a-a983-b2f24e40fa45", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "22cd12d1-2c87-400a-a983-b2f24e40fa45", + "outputId": "d48d0740-4851-4943-f54b-325303b4838a", + "tags": [] + }, + "outputs": [], + "source": [ + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "7fb92cdc", + "metadata": { + "id": "7fb92cdc" + }, + "source": [ + "### 2.2. UCC Ansatz\n", + "\n", + "Next, we show how to create the commonly used chemistry-inspired UCC ansatz, which is a unitary version of the classical coupled cluster (CC) method [2] .\n", + "\n", + "The parameter that defines the UCC ansatz is:\n", + "- excitations (List[int] or List[str]): list of desired excitations. Allowed excitations:\n", + " - 1 for singles\n", + " - 2 for doubles\n", + " - 3 for triples\n", + " - 4 for quadruples\n", + "\n", + "Once again, after the code lines bellow run, the user is able to view the outputted circuit, in charged on creating the state with an interactive interface. In addition, the depth of the circuit is printed.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1f520673", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "1f520673", + "outputId": "fd4a3467-c48b-483c-b156-0a0cde9e2189", + "tags": [] + }, + "outputs": [], + "source": [ + "chemistry_problem = MoleculeProblem(\n", + " molecule=molecule,\n", + " mapping=\"jordan_wigner\", #'bravyi_kitaev'\n", + " z2_symmetries=True,\n", + " freeze_core=True,\n", + ")\n", + "\n", + "serialized_chemistry_model = construct_chemistry_model(\n", + " chemistry_problem=chemistry_problem,\n", + " use_hartree_fock=True,\n", + " ansatz_parameters=UCCParameters(excitations=[1, 2]),\n", + " execution_parameters=ChemistryExecutionParameters(\n", + " optimizer=OptimizerType.COBYLA,\n", + " max_iteration=30,\n", + " initial_point=None,\n", + " ),\n", + ")\n", + "\n", + "backend_preferences = ClassiqBackendPreferences(\n", + " backend_name=ClassiqSimulatorBackendNames.SIMULATOR\n", + ")\n", + "\n", + "serialized_chemistry_model = set_execution_preferences(\n", + " serialized_chemistry_model,\n", + " execution_preferences=ExecutionPreferences(\n", + " num_shots=1000, backend_preferences=backend_preferences\n", + " ),\n", + ")\n", + "\n", + "qprog = synthesize(serialized_chemistry_model)\n", + "show(qprog)\n", + "\n", + "circuit = QuantumProgram.from_qprog(qprog)\n", + "print(f\"circuit depth: {circuit.transpiled_circuit.depth}\")" + ] + }, + { + "cell_type": "markdown", + "id": "f12c9a32-f271-4892-8515-bd9e6b9fcf8b", + "metadata": { + "id": "f12c9a32-f271-4892-8515-bd9e6b9fcf8b" + }, + "source": [ + "Classiq's UCC algorithm provides an highly efficient solution in aspects of circuit depth and number of CX gates. Those ultimately reduce the gate's time and amount of resources needed for its operation." + ] + }, + { + "cell_type": "markdown", + "id": "ef36661f", + "metadata": { + "id": "ef36661f" + }, + "source": [ + "## 3. Execute to Find Ground State\n", + "\n", + "Once we've synthesized the model we can execute it." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1a66d377", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 477 + }, + "id": "1a66d377", + "outputId": "1c93e68e-1300-4fde-ec56-e6e2d377a96e", + "tags": [] + }, + "outputs": [], + "source": [ + "result = execute(qprog).result()\n", + "chemistry_result_dict = result[1].value" + ] + }, + { + "cell_type": "markdown", + "id": "f72ceeb5-bc71-46d8-a390-31ec874700f3", + "metadata": { + "id": "f72ceeb5-bc71-46d8-a390-31ec874700f3" + }, + "source": [ + "Execution of the quantum program returns several useful outputs:\n", + "- energy : the output of the VQE algorithm - the electronic energy simulated.\n", + "- nuclear_repulsion : the electrostatic energy generated by the atom's nuclei.\n", + "- hartree_fock_energy : the Hartree Fock energy.\n", + "- total_energy : this is the ground state energy of the Hamiltonian (combining the energy, the nuclear repulsion and the static nuclear energy).\n", + "\n", + "It also contains the full VQE result from which we can get, for example:\n", + "- optimal_parameters : gives the results for the anzats parameters minimizing that expectation value.\n", + "- eigenstate : gives the ground state wave function.\n", + "\n", + "Note the all energy are presented in units of Hartree." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "437b3211", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "437b3211", + "outputId": "dbe14152-d540-4cd0-f294-b17824883a4c", + "tags": [] + }, + "outputs": [], + "source": [ + "chemistry_result_dict[\"total_energy\"]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9a537d3c", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "9a537d3c", + "outputId": "bbb38543-5586-41d0-80a4-32ce72e3fa1b" + }, + "outputs": [], + "source": [ + "chemistry_result_dict[\"vqe_result\"][\"optimal_parameters\"]" + ] + }, + { + "cell_type": "markdown", + "id": "2375f3c3", + "metadata": { + "id": "2375f3c3" + }, + "source": [ + "Finally, we can compare the VQE solution to the classical solution by employing exact diagonalization:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5c896576", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "5c896576", + "outputId": "f6ada73d-6bd4-440d-98c1-d17e70b57cde", + "tags": [] + }, + "outputs": [], + "source": [ + "mat = operator.to_matrix()\n", + "w, v = np.linalg.eig(mat)\n", + "print(\"exact result:\", np.real(min(w)))\n", + "print(\"vqe result:\", chemistry_result_dict[\"energy\"])" + ] + }, + { + "cell_type": "markdown", + "id": "TXF-IJT59B7j", + "metadata": { + "id": "TXF-IJT59B7j" + }, + "source": [ + "## **h2**\n", + "\n", + "hw-eff: width 4/depth34\n", + "\n", + "ucc: width 1/depth 6, width 4, depth 3\n", + "\n", + "total en -1.1342995783232035,\n", + "exact result: -1.8572750302023786,\n", + "vqe result: -1.854268572772183\n" + ] + }, + { + "cell_type": "markdown", + "id": "2qTUaxbEX5IF", + "metadata": { + "id": "2qTUaxbEX5IF" + }, + "source": [ + "## **h2o**\n", + "\n", + "hw-eff.: width 12/depth 375,\n", + "(conn map 0-1..10-11, reps 11)\n", + "\n", + "ucc: width 8/depth 1218, width 12/depth 1048\n", + "\n", + "total energy -71.7605079203085,\n", + "exact result: -23.544497240443615,\n", + "vqe result: -80.95442108093192" + ] + }, + { + "cell_type": "markdown", + "id": "bxRq_3-Jb4_0", + "metadata": { + "id": "bxRq_3-Jb4_0" + }, + "source": [ + "##**co2**\n", + "\n", + "hw-eff: width 24/depth 175\n", + "\n", + "ucc: width 20/depth 19767, width 24/depth 16968\n", + "\n", + "Error number 90001 occurred. The resources needed to execute this request are insufficient.\n", + " This may be due to computational limitations, or high load on Classiq's servers." + ] + }, + { + "cell_type": "markdown", + "id": "b998e321", + "metadata": { + "id": "b998e321" + }, + "source": [ + "[1] Abhinav Kandala, Antonio Mezzacapo, Kristan Temme, Maika Takita, Markus Brink, Jerry M. Chow, Jay M. Gambetta Hardware-efficient variational quantum eigensolver for small molecules and quantum magnets. Nature 549, 242 (2017)\n", + "\n", + "[2] Panagiotis Kl. Barkoutsos, Jerome F. Gonthier, Igor Sokolov, Nikolaj Moll, Gian Salis, Andreas Fuhrer, Marc Ganzhorn, Daniel J. Egger, Matthias Troyer, Antonio Mezzacapo, Stefan Filipp, and Ivano Tavernelli Quantum algorithms for electronic structure calculations: Particle-hole Hamiltonian and optimized wave-function expansions Phys. Rev. A 98, 022322 (2018)\n" + ] + } + ], + "metadata": { + "colab": { + "include_colab_link": true, + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3 [Default]", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From c70e9314629872785847e4106d86451626b17416 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Sun, 16 Jun 2024 17:29:07 +0200 Subject: [PATCH 30/83] Delete community/QClass_2024/Submissions/HW4/Yasir_Mansour_HW4_molecule_eigensolver.ipynb --- ...sir_Mansour_HW4_molecule_eigensolver.ipynb | 719 ------------------ 1 file changed, 719 deletions(-) delete mode 100644 community/QClass_2024/Submissions/HW4/Yasir_Mansour_HW4_molecule_eigensolver.ipynb diff --git a/community/QClass_2024/Submissions/HW4/Yasir_Mansour_HW4_molecule_eigensolver.ipynb b/community/QClass_2024/Submissions/HW4/Yasir_Mansour_HW4_molecule_eigensolver.ipynb deleted file mode 100644 index 090647d7..00000000 --- a/community/QClass_2024/Submissions/HW4/Yasir_Mansour_HW4_molecule_eigensolver.ipynb +++ /dev/null @@ -1,719 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "726d2386", - "metadata": { - "colab_type": "text", - "id": "view-in-github" - }, - "source": [ - "\"Open" - ] - }, - { - "cell_type": "markdown", - "id": "4fbae0f9", - "metadata": { - "id": "4fbae0f9" - }, - "source": [ - "# Molecule Eigensolver (VQE method)\n", - "\n", - "Evaluating the ground state of a molecular Hamiltonian allows us to understand the chemical properties of the molecule. In this demo, we demonstrate the usage of Variational Quantum Eigensolver (VQE) for finding the ground states and energies of several molecules: 𝐻2 , 𝐻2𝑂 and 𝐿𝑖𝐻 .\n", - "\n", - "VQE is a leading method for finding approximate values of ground state wavefuncions and energies for complicated quantum systems, and as such can give solutions for complex molecular structures. The overview of the VQE method is as following: a problem (i.e. a molecule) is defined by a Hamiltonian which ground state is sought. Then, a choice of a parameterized ansatz is made. Using a hybrid quantum-classical algorithm, a solution for the defined parameters which minimize the expectation value for the energy is found. A clever ansatz will lead to an estimated ground state solution.\n", - "\n", - "Within the scope of Classiq's VQE algorithm, the user defines a Molecule which is being translated to a concise Hamiltonian. Then, a choice between several types of well studied ansatz is given, which can be carefully picked to fit your Molecule type. In the last stage, the Hamiltonian and ansatz are sent to a classical optimizer. During this tutorial we will demonstrate the steps and user options in Classiq's VQE algorithm. Furthermore, the demonstration will present the optimization strength Classiq's VQE algorithm holds, and it's state of the art results in term of efficient quantum circuit - with ultimate combination of low depth and high accuracy, while minimizing the number of CX gates." - ] - }, - { - "cell_type": "markdown", - "id": "TWGNYMkUKh6C", - "metadata": { - "id": "TWGNYMkUKh6C" - }, - "source": [ - "` **RESULTS**\n", - "\n", - "Comparison of different molecules in terms of width and depth. The more atoms in a molecule, the more qubits/circuit depth are necessary. System overload when more than 3 atoms.\n", - "\n", - "## **h2**\n", - "\n", - "hw-eff ansatz: width 4/depth34\n", - "\n", - "ucc ansatz: ,\n", - "width 1/depth 6, width 4, depth 3\n", - "\n", - "total en -1.1342995783232035,\n", - "exact result: -1.8572750302023786,\n", - "vqe result: -1.854268572772183\n" - ] - }, - { - "cell_type": "markdown", - "id": "XcbH8UHbKrIU", - "metadata": { - "id": "XcbH8UHbKrIU" - }, - "source": [ - "## **h2o**\n", - "\n", - "hw-eff. ansatz: width 12/depth 375,\n", - "(conn map 0-1..10-11, reps 11)\n", - "\n", - "ucc ansatz: width 8/depth 1218, width 12/depth 1048\n", - "\n", - "total energy -71.7605079203085,\n", - "exact result: -23.544497240443615,\n", - "vqe result: -80.95442108093192" - ] - }, - { - "cell_type": "markdown", - "id": "Br0-chtAKv6D", - "metadata": { - "id": "Br0-chtAKv6D" - }, - "source": [ - "##**co2**\n", - "\n", - "hw-eff ansatz: width 24/depth 175\n", - "\n", - "ucc ansatz: width 20/depth 19767, width 24/depth 16968\n", - "\n", - "Error number 90001 occurred. The resources needed to execute this request are insufficient.\n", - " This may be due to computational limitations, or high load on Classiq's servers." - ] - }, - { - "cell_type": "markdown", - "id": "54d09062-1b3b-4e4b-8351-5e05a633e269", - "metadata": { - "id": "54d09062-1b3b-4e4b-8351-5e05a633e269" - }, - "source": [ - "## 0. Pre-requirments\n", - "\n", - "The model is using several Classiq's libraries." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "C3SemPUxJw4V", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "C3SemPUxJw4V", - "outputId": "b735d9f4-3d88-4b64-f115-4a9725e63811" - }, - "outputs": [], - "source": [ - "!pip install classiq" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "zjvfmLnXJ1Kk", - "metadata": { - "id": "zjvfmLnXJ1Kk" - }, - "outputs": [], - "source": [ - "from classiq import *" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "LHrqCSj2J5PC", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "LHrqCSj2J5PC", - "outputId": "75c65d46-2d6a-4796-92ee-3dc517c54b93" - }, - "outputs": [], - "source": [ - "import classiq\n", - "classiq.authenticate()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c6bbe65f-1e6a-475c-a43f-cb4cc04bbdfa", - "metadata": { - "id": "c6bbe65f-1e6a-475c-a43f-cb4cc04bbdfa", - "tags": [] - }, - "outputs": [], - "source": [ - "import numpy as np\n", - "\n", - "from classiq import QuantumProgram, construct_chemistry_model, execute, show, synthesize\n", - "from classiq.applications.chemistry import (\n", - " ChemistryExecutionParameters,\n", - " HEAParameters,\n", - " Molecule,\n", - " MoleculeProblem,\n", - " UCCParameters,\n", - ")\n", - "from classiq.execution import (\n", - " ClassiqBackendPreferences,\n", - " ClassiqSimulatorBackendNames,\n", - " ExecutionPreferences,\n", - " OptimizerType,\n", - ")\n", - "from classiq.synthesis import set_execution_preferences" - ] - }, - { - "cell_type": "markdown", - "id": "faa3c10f", - "metadata": { - "id": "faa3c10f" - }, - "source": [ - "## 1. Generate Qubit Hamiltonian\n", - "\n", - "The first step is to define the molecule we wish to simulate. We hereby declare the class Molecule and insert a list of atoms and their spacial positions. The algorithm will automatically regard relevant attributes such as the atom's mass, charge and spin.\n", - "\n", - "As mentioned above, during this tutorial, we demonstrate how to define and find the ground state and energies for 3 molecules:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "VN6XdfYfLApS", - "metadata": { - "id": "VN6XdfYfLApS", - "tags": [] - }, - "outputs": [], - "source": [ - "#hydrogen\n", - "molecule_H2 = Molecule(atoms=[(\"H\", (0.0, 0.0, 0)), (\"H\", (0.0, 0.0, 0.735))])\n", - "\n", - "#oxygen\n", - "molecule_O2 = Molecule(atoms=[(\"O\", (0.0, 0.0, 0)), (\"O\", (0.0, 0.0, 1.16))])\n", - "\n", - "#lithium hydride\n", - "molecule_LiH = Molecule(atoms=[(\"H\", (0.0, 0.0, 0.0)), (\"Li\", (0.0, 0.0, 1.596))])\n", - "\n", - "#water\n", - "molecule_H2O = Molecule(\n", - " atoms=[(\"O\", (0.0, 0.0, 0.0)), (\"H\", (0, 0.586, 0.757)), (\"H\", (0, 0.586, -0.757))]\n", - ")\n", - "#beryllium hydride\n", - "molecule_BeH2 = Molecule(\n", - " atoms=[(\"Be\", (0.0, 0.0, 0.0)), (\"H\", (0, 0, 1.334)), (\"H\", (0, 0, -1.334))]\n", - ")\n", - "#carbon dioxide\n", - "molecule_CO2 = Molecule(atoms=[(\"C\", (0.0, 0.0, 0.0)),\n", - " (\"O\", (0, 0, 1.1693)), (\"O\", (0, 0, -1.1693))])\n", - "\n", - "#ethyne, acetylene\n", - "molecule_C2H2 = Molecule(atoms=[(\"C\", (0, 0, -0.5977)), (\"C\", (0, 0, 0.5977)),\n", - " (\"H\", (0, 0, -1.6692)), (\"H\", (0, 0, 1.6692))])\n", - "\n", - "#chloroform\n", - "molecule_CH3Cl = Molecule(atoms=[(\"C\", (0, 0, -1.1401)), (\"Cl\", (0, 0, 0.6645)),\n", - " (\"H\", (0, 1.0343, -1.4855)),\n", - " (\"H\", (0.8957, -0.5171, -1.4855)), (\"H\", (-0.8957, -0.5171, -1.4855))])\n", - "\n", - "#ethylene\n", - "molecule_C2H4 = Molecule(atoms=[(\"C\", (0, 0, 0.6673)), (\"C\", (0, 0, -0.6673)),\n", - " (\"H\", (0, 0.9239, 1.2411)), (\"H\", (0, -0.9239, 1.2411)),\n", - " (\"H\", (0, -0.9239, -1.2411)), (\"H\", (0, 0.9239, -1.2411))])\n" - ] - }, - { - "cell_type": "markdown", - "id": "ab162f48", - "metadata": { - "id": "ab162f48" - }, - "source": [ - "Similarly, the user is able to construct any valid essambly of atoms. The distances are recived in Å ($10^{-10} m$). We will continue this demonstration with a specific molecule. The user can change the `molecule` below to study other cases." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2e77678f", - "metadata": { - "id": "2e77678f", - "tags": [] - }, - "outputs": [], - "source": [ - "molecule = molecule_H2O" - ] - }, - { - "cell_type": "markdown", - "id": "c4a541a5", - "metadata": { - "id": "c4a541a5" - }, - "source": [ - "Next, we define the parameters of the Hamiltonian generation program. The user has a choice over the following options:\n", - "- mapping (str): the mapping between the fermionic Hamiltonian and an qubits Hamiltonian. Supported types:\n", - " - \"jordan_wigner\"\n", - " - \"parity\"\n", - " - \"bravyi_kitaev\"\n", - " - \"fast_bravyi_kitaev\"\n", - "- freeze_core (bool): remove the \"core\" orbitals of the atoms defining the molecule.\n", - "- z2_symmetries (bool): whether to perform z2 symmetries reduction. If symmetries in the molecules exist, this option will decrease the number of qubits used and will efficient the Hamiltonian and thus the calculations.\n", - "\n", - "Finally, the Hamiltonian is generated from `MoleculeProblem`." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2e0426d5", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "id": "2e0426d5", - "outputId": "205584a3-ca38-4d54-ca52-dbc3f88b8bbf", - "tags": [] - }, - "outputs": [], - "source": [ - "chemistry_problem = MoleculeProblem(\n", - " molecule=molecule,\n", - " mapping=\"jordan_wigner\", #'bravyi_kitaev'\n", - " z2_symmetries=True,\n", - " freeze_core=True,\n", - ")\n", - "\n", - "operator = chemistry_problem.generate_hamiltonian()\n", - "gs_problem = chemistry_problem.update_problem(operator.num_qubits)\n", - "print(\"Your Hamiltonian is\", operator.show(), sep=\"\\n\")" - ] - }, - { - "cell_type": "markdown", - "id": "67a124c2-33fc-420c-8cb3-0002f18f4e77", - "metadata": { - "id": "67a124c2-33fc-420c-8cb3-0002f18f4e77" - }, - "source": [ - "The output of the above code lines is the Hamiltonian presented as a superposition of Pauli matrices multiplication.\n", - "One can easily confirm that using z2*symmetries=True, the number of qubits are reduced (compered to z2_symmetries=False): for $H_2$ - from 4 to 1, for $LiH$ from 12 to 8, and for $H*{2}O$ from 14 to 10." - ] - }, - { - "cell_type": "markdown", - "id": "8abe3e3d-1b01-4fab-b86a-feaab3851950", - "metadata": { - "id": "8abe3e3d-1b01-4fab-b86a-feaab3851950" - }, - "source": [ - "## 2. Constructing and Synthesizing a Ground State Solver\n", - "\n", - "A ground state solver model consists of a parameterized eigenfunction (\"the ansatz\"), on which we run a VQE. In addition, a post-process of the result allows to return the total energy (combining the ground state energy of the Hamiltonian, the nuclear repulsion and the static nuclear energy).\n", - "\n", - "Once we've specified an Hamiltonian and a desired Ansatz, we send them to the VQE algorithm in order to find the Hamiltonian's ground state. In the process, the algorithm will send requests to a classical server, which task is to minimize the energy expectation value and return the optimized parameters. The simulator and optimizing parameters are defined as part of the VQE part of the model. The user should control the `max_iteration` value in a manner so the solution has reached a stable convergence. In addition, the value `num_shots` sets the number of measurements performed after each iteration, thus influence the accuracy of the solutions.\n", - "\n", - "We demonstrate two different proposal for the wavefunction solution ansatz: (1) Hardware (HW) efficient, and (2) Unitary Coupled Cluster (UCC). For groundstate solvers it is typical to initialize the Ansatz with the Hartree-Fock state." - ] - }, - { - "cell_type": "markdown", - "id": "07ed8f8e-485b-4f0f-93b7-78e7fd6fbe39", - "metadata": { - "id": "07ed8f8e-485b-4f0f-93b7-78e7fd6fbe39" - }, - "source": [ - "### 2.1 HW-Efficient Ansatz\n", - "\n", - "Hardware-efficient ansatz is a suggested solution that is generated to fit a specific hardware [1]. The ansatz creates a state with given number of parameters by user choice (number of qubits, that should fit the Hamiltonian), and creates entanglement between the qubits by the inputed connectivity map. In this example, a 4 qubit map is given, which is specifically made of $H_2$ with z2_symmetries=False.\n", - "\n", - "After constructing the model, we can synthesize it and view the outputted circuit, in charged on creating the state with an interactive interface." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "90b20061-8dbd-4136-adba-28ddacb1f583", - "metadata": { - "id": "90b20061-8dbd-4136-adba-28ddacb1f583", - "tags": [] - }, - "outputs": [], - "source": [ - "chemistry_problem = MoleculeProblem(\n", - " molecule=molecule,\n", - " mapping=\"jordan_wigner\", #'bravyi_kitaev'\n", - " z2_symmetries=False,\n", - " freeze_core=True,\n", - ")\n", - "\n", - "hwea_params = HEAParameters(\n", - " num_qubits=12,\n", - " connectivity_map=[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8),\n", - " (8, 9), (9, 10)],\n", - " reps=3,\n", - " one_qubit_gates=[\"x\", \"ry\"],\n", - " two_qubit_gates=[\"cx\"],\n", - ")\n", - "\n", - "qmod = construct_chemistry_model(\n", - " chemistry_problem=chemistry_problem,\n", - " use_hartree_fock=True,\n", - " ansatz_parameters=hwea_params,\n", - " execution_parameters=ChemistryExecutionParameters(\n", - " optimizer=OptimizerType.COBYLA,\n", - " max_iteration=30,\n", - " initial_point=None,\n", - " ),\n", - ")\n", - "\n", - "backend_preferences = ClassiqBackendPreferences(\n", - " backend_name=ClassiqSimulatorBackendNames.SIMULATOR\n", - ")\n", - "\n", - "qmod = set_execution_preferences(\n", - " qmod,\n", - " execution_preferences=ExecutionPreferences(\n", - " num_shots=1000, backend_preferences=backend_preferences\n", - " ),\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f13599d2-e8e7-4165-aa26-8ae8d4bdafaa", - "metadata": { - "id": "f13599d2-e8e7-4165-aa26-8ae8d4bdafaa", - "tags": [] - }, - "outputs": [], - "source": [ - "from classiq import write_qmod\n", - "\n", - "write_qmod(qmod, name=\"molecule_eigensolver\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "22cd12d1-2c87-400a-a983-b2f24e40fa45", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "id": "22cd12d1-2c87-400a-a983-b2f24e40fa45", - "outputId": "d48d0740-4851-4943-f54b-325303b4838a", - "tags": [] - }, - "outputs": [], - "source": [ - "qprog = synthesize(qmod)\n", - "show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "7fb92cdc", - "metadata": { - "id": "7fb92cdc" - }, - "source": [ - "### 2.2. UCC Ansatz\n", - "\n", - "Next, we show how to create the commonly used chemistry-inspired UCC ansatz, which is a unitary version of the classical coupled cluster (CC) method [2] .\n", - "\n", - "The parameter that defines the UCC ansatz is:\n", - "- excitations (List[int] or List[str]): list of desired excitations. Allowed excitations:\n", - " - 1 for singles\n", - " - 2 for doubles\n", - " - 3 for triples\n", - " - 4 for quadruples\n", - "\n", - "Once again, after the code lines bellow run, the user is able to view the outputted circuit, in charged on creating the state with an interactive interface. In addition, the depth of the circuit is printed.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1f520673", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "id": "1f520673", - "outputId": "fd4a3467-c48b-483c-b156-0a0cde9e2189", - "tags": [] - }, - "outputs": [], - "source": [ - "chemistry_problem = MoleculeProblem(\n", - " molecule=molecule,\n", - " mapping=\"jordan_wigner\", #'bravyi_kitaev'\n", - " z2_symmetries=True,\n", - " freeze_core=True,\n", - ")\n", - "\n", - "serialized_chemistry_model = construct_chemistry_model(\n", - " chemistry_problem=chemistry_problem,\n", - " use_hartree_fock=True,\n", - " ansatz_parameters=UCCParameters(excitations=[1, 2]),\n", - " execution_parameters=ChemistryExecutionParameters(\n", - " optimizer=OptimizerType.COBYLA,\n", - " max_iteration=30,\n", - " initial_point=None,\n", - " ),\n", - ")\n", - "\n", - "backend_preferences = ClassiqBackendPreferences(\n", - " backend_name=ClassiqSimulatorBackendNames.SIMULATOR\n", - ")\n", - "\n", - "serialized_chemistry_model = set_execution_preferences(\n", - " serialized_chemistry_model,\n", - " execution_preferences=ExecutionPreferences(\n", - " num_shots=1000, backend_preferences=backend_preferences\n", - " ),\n", - ")\n", - "\n", - "qprog = synthesize(serialized_chemistry_model)\n", - "show(qprog)\n", - "\n", - "circuit = QuantumProgram.from_qprog(qprog)\n", - "print(f\"circuit depth: {circuit.transpiled_circuit.depth}\")" - ] - }, - { - "cell_type": "markdown", - "id": "f12c9a32-f271-4892-8515-bd9e6b9fcf8b", - "metadata": { - "id": "f12c9a32-f271-4892-8515-bd9e6b9fcf8b" - }, - "source": [ - "Classiq's UCC algorithm provides an highly efficient solution in aspects of circuit depth and number of CX gates. Those ultimately reduce the gate's time and amount of resources needed for its operation." - ] - }, - { - "cell_type": "markdown", - "id": "ef36661f", - "metadata": { - "id": "ef36661f" - }, - "source": [ - "## 3. Execute to Find Ground State\n", - "\n", - "Once we've synthesized the model we can execute it." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1a66d377", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 477 - }, - "id": "1a66d377", - "outputId": "1c93e68e-1300-4fde-ec56-e6e2d377a96e", - "tags": [] - }, - "outputs": [], - "source": [ - "result = execute(qprog).result()\n", - "chemistry_result_dict = result[1].value" - ] - }, - { - "cell_type": "markdown", - "id": "f72ceeb5-bc71-46d8-a390-31ec874700f3", - "metadata": { - "id": "f72ceeb5-bc71-46d8-a390-31ec874700f3" - }, - "source": [ - "Execution of the quantum program returns several useful outputs:\n", - "- energy : the output of the VQE algorithm - the electronic energy simulated.\n", - "- nuclear_repulsion : the electrostatic energy generated by the atom's nuclei.\n", - "- hartree_fock_energy : the Hartree Fock energy.\n", - "- total_energy : this is the ground state energy of the Hamiltonian (combining the energy, the nuclear repulsion and the static nuclear energy).\n", - "\n", - "It also contains the full VQE result from which we can get, for example:\n", - "- optimal_parameters : gives the results for the anzats parameters minimizing that expectation value.\n", - "- eigenstate : gives the ground state wave function.\n", - "\n", - "Note the all energy are presented in units of Hartree." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "437b3211", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "id": "437b3211", - "outputId": "dbe14152-d540-4cd0-f294-b17824883a4c", - "tags": [] - }, - "outputs": [], - "source": [ - "chemistry_result_dict[\"total_energy\"]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "9a537d3c", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "id": "9a537d3c", - "outputId": "bbb38543-5586-41d0-80a4-32ce72e3fa1b" - }, - "outputs": [], - "source": [ - "chemistry_result_dict[\"vqe_result\"][\"optimal_parameters\"]" - ] - }, - { - "cell_type": "markdown", - "id": "2375f3c3", - "metadata": { - "id": "2375f3c3" - }, - "source": [ - "Finally, we can compare the VQE solution to the classical solution by employing exact diagonalization:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5c896576", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "id": "5c896576", - "outputId": "f6ada73d-6bd4-440d-98c1-d17e70b57cde", - "tags": [] - }, - "outputs": [], - "source": [ - "mat = operator.to_matrix()\n", - "w, v = np.linalg.eig(mat)\n", - "print(\"exact result:\", np.real(min(w)))\n", - "print(\"vqe result:\", chemistry_result_dict[\"energy\"])" - ] - }, - { - "cell_type": "markdown", - "id": "TXF-IJT59B7j", - "metadata": { - "id": "TXF-IJT59B7j" - }, - "source": [ - "## **h2**\n", - "\n", - "hw-eff: width 4/depth34\n", - "\n", - "ucc: width 1/depth 6, width 4, depth 3\n", - "\n", - "total en -1.1342995783232035,\n", - "exact result: -1.8572750302023786,\n", - "vqe result: -1.854268572772183\n" - ] - }, - { - "cell_type": "markdown", - "id": "2qTUaxbEX5IF", - "metadata": { - "id": "2qTUaxbEX5IF" - }, - "source": [ - "## **h2o**\n", - "\n", - "hw-eff.: width 12/depth 375,\n", - "(conn map 0-1..10-11, reps 11)\n", - "\n", - "ucc: width 8/depth 1218, width 12/depth 1048\n", - "\n", - "total energy -71.7605079203085,\n", - "exact result: -23.544497240443615,\n", - "vqe result: -80.95442108093192" - ] - }, - { - "cell_type": "markdown", - "id": "bxRq_3-Jb4_0", - "metadata": { - "id": "bxRq_3-Jb4_0" - }, - "source": [ - "##**co2**\n", - "\n", - "hw-eff: width 24/depth 175\n", - "\n", - "ucc: width 20/depth 19767, width 24/depth 16968\n", - "\n", - "Error number 90001 occurred. The resources needed to execute this request are insufficient.\n", - " This may be due to computational limitations, or high load on Classiq's servers." - ] - }, - { - "cell_type": "markdown", - "id": "b998e321", - "metadata": { - "id": "b998e321" - }, - "source": [ - "[1] Abhinav Kandala, Antonio Mezzacapo, Kristan Temme, Maika Takita, Markus Brink, Jerry M. Chow, Jay M. Gambetta Hardware-efficient variational quantum eigensolver for small molecules and quantum magnets. Nature 549, 242 (2017)\n", - "\n", - "[2] Panagiotis Kl. Barkoutsos, Jerome F. Gonthier, Igor Sokolov, Nikolaj Moll, Gian Salis, Andreas Fuhrer, Marc Ganzhorn, Daniel J. Egger, Matthias Troyer, Antonio Mezzacapo, Stefan Filipp, and Ivano Tavernelli Quantum algorithms for electronic structure calculations: Particle-hole Hamiltonian and optimized wave-function expansions Phys. Rev. A 98, 022322 (2018)\n" - ] - } - ], - "metadata": { - "colab": { - "include_colab_link": true, - "provenance": [] - }, - "kernelspec": { - "display_name": "Python 3 [Default]", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} From 31f48102a9d69eb5039be2b90ab5de60c3609619 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Sun, 16 Jun 2024 17:30:11 +0200 Subject: [PATCH 31/83] Rename Yasir_Mansour_molecule_eigensolver_ipynb_txt.ipynb to Yasir_Mansour_HW4_molecule_eigensolver.ipynb --- ...ynb_txt.ipynb => Yasir_Mansour_HW4_molecule_eigensolver.ipynb} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename community/QClass_2024/Submissions/HW4/{Yasir_Mansour_molecule_eigensolver_ipynb_txt.ipynb => Yasir_Mansour_HW4_molecule_eigensolver.ipynb} (100%) diff --git a/community/QClass_2024/Submissions/HW4/Yasir_Mansour_molecule_eigensolver_ipynb_txt.ipynb b/community/QClass_2024/Submissions/HW4/Yasir_Mansour_HW4_molecule_eigensolver.ipynb similarity index 100% rename from community/QClass_2024/Submissions/HW4/Yasir_Mansour_molecule_eigensolver_ipynb_txt.ipynb rename to community/QClass_2024/Submissions/HW4/Yasir_Mansour_HW4_molecule_eigensolver.ipynb From 80adfb54c7f8bd4022fcfeed8392b05d98642ad9 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Sat, 22 Jun 2024 18:01:58 +0200 Subject: [PATCH 32/83] Update Yasir_Mansour_HW1_QClass2024.ipynb --- .../HW1/Yasir_Mansour_HW1_QClass2024.ipynb | 35 ------------------- 1 file changed, 35 deletions(-) diff --git a/community/QClass_2024/Submissions/HW1/Yasir_Mansour_HW1_QClass2024.ipynb b/community/QClass_2024/Submissions/HW1/Yasir_Mansour_HW1_QClass2024.ipynb index 4ef2740f..725ecf86 100644 --- a/community/QClass_2024/Submissions/HW1/Yasir_Mansour_HW1_QClass2024.ipynb +++ b/community/QClass_2024/Submissions/HW1/Yasir_Mansour_HW1_QClass2024.ipynb @@ -49,41 +49,6 @@ "The following model defines a function that applies X and H gates on a single qubit, and subsequently calls it:" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "id": "156317w1BFqw", - "outputId": "2bf3654e-05de-4dd1-f7cb-08c9b1d49011", - "tags": [] - }, - "outputs": [], - "source": [ - "#!pip install -U -q classiq" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "id": "EaDN5EkVC58C", - "outputId": "c2446774-718c-4d7c-eb0b-e8e1f676d27d", - "tags": [] - }, - "outputs": [], - "source": [ - "#import classiq\n", - "#classiq.authenticate()" - ] - }, { "cell_type": "code", "execution_count": null, From 3386074b3972e11659de1cac59ad29dfeedaa9e7 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Sat, 22 Jun 2024 18:05:08 +0200 Subject: [PATCH 33/83] Update Yasir_Mansour_HW4_molecule_eigensolver.ipynb --- ...sir_Mansour_HW4_molecule_eigensolver.ipynb | 33 ------------------- 1 file changed, 33 deletions(-) diff --git a/community/QClass_2024/Submissions/HW4/Yasir_Mansour_HW4_molecule_eigensolver.ipynb b/community/QClass_2024/Submissions/HW4/Yasir_Mansour_HW4_molecule_eigensolver.ipynb index ee235629..3a40ab6d 100644 --- a/community/QClass_2024/Submissions/HW4/Yasir_Mansour_HW4_molecule_eigensolver.ipynb +++ b/community/QClass_2024/Submissions/HW4/Yasir_Mansour_HW4_molecule_eigensolver.ipynb @@ -98,39 +98,6 @@ "The model is using several Classiq's libraries." ] }, - { - "cell_type": "code", - "execution_count": null, - "id": "C3SemPUxJw4V", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "C3SemPUxJw4V", - "outputId": "b735d9f4-3d88-4b64-f115-4a9725e63811" - }, - "outputs": [], - "source": [ - "#!pip install classiq" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "LHrqCSj2J5PC", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "LHrqCSj2J5PC", - "outputId": "75c65d46-2d6a-4796-92ee-3dc517c54b93" - }, - "outputs": [], - "source": [ - "#import classiq\n", - "#classiq.authenticate()" - ] - }, { "cell_type": "code", "execution_count": null, From 77c92c56a8167fde66a7b4e5a5c7036e8f5e91fc Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Sat, 22 Jun 2024 23:12:41 +0200 Subject: [PATCH 34/83] Add files via upload From fa54194bdeaf17837b7c80ac49e77293646aef81 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Sat, 22 Jun 2024 23:14:25 +0200 Subject: [PATCH 35/83] Add files via upload --- .../HW2/Yasir_Mansour_HW2_QClass2024.ipynb | 34 ------------------- 1 file changed, 34 deletions(-) diff --git a/community/QClass_2024/Submissions/HW2/Yasir_Mansour_HW2_QClass2024.ipynb b/community/QClass_2024/Submissions/HW2/Yasir_Mansour_HW2_QClass2024.ipynb index cd1dd4f6..43768e29 100644 --- a/community/QClass_2024/Submissions/HW2/Yasir_Mansour_HW2_QClass2024.ipynb +++ b/community/QClass_2024/Submissions/HW2/Yasir_Mansour_HW2_QClass2024.ipynb @@ -21,40 +21,6 @@ "This is the second part of the Qmod workshop, covering exercises 6 through 10. Make sure to go through Part 1 before continuing with this notebook." ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "id": "CSoLXYc-P-zb", - "outputId": "32e4c151-5e82-4ff8-df53-e9ac710f2507", - "tags": [] - }, - "outputs": [], - "source": [ - "#!pip install classiq" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "id": "Js5S3AMtP6LJ", - "outputId": "d3f334a9-6dcf-4e2a-f547-b68342d126ea" - }, - "outputs": [], - "source": [ - "#import classiq\n", - "#classiq.authenticate()" - ] - }, { "cell_type": "code", "execution_count": null, From ce1a1e93ebe021729858e9f30b29a069a35d1e83 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Sat, 22 Jun 2024 23:16:01 +0200 Subject: [PATCH 36/83] Add files via upload --- .../HW3/Yasir_Mansour_HW3_VQE.ipynb | 44 ------------------- 1 file changed, 44 deletions(-) diff --git a/community/QClass_2024/Submissions/HW3/Yasir_Mansour_HW3_VQE.ipynb b/community/QClass_2024/Submissions/HW3/Yasir_Mansour_HW3_VQE.ipynb index 576ee39e..b53d8080 100644 --- a/community/QClass_2024/Submissions/HW3/Yasir_Mansour_HW3_VQE.ipynb +++ b/community/QClass_2024/Submissions/HW3/Yasir_Mansour_HW3_VQE.ipynb @@ -91,50 +91,6 @@ "Complete the following code" ] }, - { - "cell_type": "code", - "execution_count": null, - "id": "DQOxbZxjrN5r", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "DQOxbZxjrN5r", - "outputId": "7ffed65a-717f-4f7a-d969-d999a1fa6611" - }, - "outputs": [], - "source": [ - "#!pip install classiq" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "o13wIglSeo7y", - "metadata": { - "id": "o13wIglSeo7y" - }, - "outputs": [], - "source": [ - "#import classiq" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "jLanwByIe4eJ", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "jLanwByIe4eJ", - "outputId": "6dec848a-472c-4dc6-8104-d8d00fbbb8e6" - }, - "outputs": [], - "source": [ - "#classiq.authenticate()" - ] - }, { "cell_type": "code", "execution_count": 2, From 1f7b05a5442b9a28a43bae7a0290c332343f21ff Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Sat, 22 Jun 2024 23:17:32 +0200 Subject: [PATCH 37/83] Add files via upload --- ...r_HW4_molecule_eigensolver_ipynb_txt.ipynb | 684 ++++++++++++++++++ 1 file changed, 684 insertions(+) create mode 100644 community/QClass_2024/Submissions/HW4/Yasir_Mansour_HW4_molecule_eigensolver_ipynb_txt.ipynb diff --git a/community/QClass_2024/Submissions/HW4/Yasir_Mansour_HW4_molecule_eigensolver_ipynb_txt.ipynb b/community/QClass_2024/Submissions/HW4/Yasir_Mansour_HW4_molecule_eigensolver_ipynb_txt.ipynb new file mode 100644 index 00000000..3a40ab6d --- /dev/null +++ b/community/QClass_2024/Submissions/HW4/Yasir_Mansour_HW4_molecule_eigensolver_ipynb_txt.ipynb @@ -0,0 +1,684 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "726d2386", + "metadata": { + "colab_type": "text", + "id": "view-in-github" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "id": "4fbae0f9", + "metadata": { + "id": "4fbae0f9" + }, + "source": [ + "# Molecule Eigensolver (VQE method)\n", + "\n", + "Evaluating the ground state of a molecular Hamiltonian allows us to understand the chemical properties of the molecule. In this demo, we demonstrate the usage of Variational Quantum Eigensolver (VQE) for finding the ground states and energies of several molecules: 𝐻2 , 𝐻2𝑂 and 𝐿𝑖𝐻 .\n", + "\n", + "VQE is a leading method for finding approximate values of ground state wavefuncions and energies for complicated quantum systems, and as such can give solutions for complex molecular structures. The overview of the VQE method is as following: a problem (i.e. a molecule) is defined by a Hamiltonian which ground state is sought. Then, a choice of a parameterized ansatz is made. Using a hybrid quantum-classical algorithm, a solution for the defined parameters which minimize the expectation value for the energy is found. A clever ansatz will lead to an estimated ground state solution.\n", + "\n", + "Within the scope of Classiq's VQE algorithm, the user defines a Molecule which is being translated to a concise Hamiltonian. Then, a choice between several types of well studied ansatz is given, which can be carefully picked to fit your Molecule type. In the last stage, the Hamiltonian and ansatz are sent to a classical optimizer. During this tutorial we will demonstrate the steps and user options in Classiq's VQE algorithm. Furthermore, the demonstration will present the optimization strength Classiq's VQE algorithm holds, and it's state of the art results in term of efficient quantum circuit - with ultimate combination of low depth and high accuracy, while minimizing the number of CX gates." + ] + }, + { + "cell_type": "markdown", + "id": "TWGNYMkUKh6C", + "metadata": { + "id": "TWGNYMkUKh6C" + }, + "source": [ + "` **RESULTS**\n", + "\n", + "Comparison of different molecules in terms of width and depth. The more atoms in a molecule, the more qubits/circuit depth are necessary. System overload when more than 3 atoms.\n", + "\n", + "## **h2**\n", + "\n", + "hw-eff ansatz: width 4/depth34\n", + "\n", + "ucc ansatz: ,\n", + "width 1/depth 6, width 4, depth 3\n", + "\n", + "total en -1.1342995783232035,\n", + "exact result: -1.8572750302023786,\n", + "vqe result: -1.854268572772183\n" + ] + }, + { + "cell_type": "markdown", + "id": "XcbH8UHbKrIU", + "metadata": { + "id": "XcbH8UHbKrIU" + }, + "source": [ + "## **h2o**\n", + "\n", + "hw-eff. ansatz: width 12/depth 375,\n", + "(conn map 0-1..10-11, reps 11)\n", + "\n", + "ucc ansatz: width 8/depth 1218, width 12/depth 1048\n", + "\n", + "total energy -71.7605079203085,\n", + "exact result: -23.544497240443615,\n", + "vqe result: -80.95442108093192" + ] + }, + { + "cell_type": "markdown", + "id": "Br0-chtAKv6D", + "metadata": { + "id": "Br0-chtAKv6D" + }, + "source": [ + "##**co2**\n", + "\n", + "hw-eff ansatz: width 24/depth 175\n", + "\n", + "ucc ansatz: width 20/depth 19767, width 24/depth 16968\n", + "\n", + "Error number 90001 occurred. The resources needed to execute this request are insufficient.\n", + " This may be due to computational limitations, or high load on Classiq's servers." + ] + }, + { + "cell_type": "markdown", + "id": "54d09062-1b3b-4e4b-8351-5e05a633e269", + "metadata": { + "id": "54d09062-1b3b-4e4b-8351-5e05a633e269" + }, + "source": [ + "## 0. Pre-requirments\n", + "\n", + "The model is using several Classiq's libraries." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fc04368f-475c-4e00-9b26-f51dd94a15f0", + "metadata": {}, + "outputs": [], + "source": [ + "from classiq import *" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c6bbe65f-1e6a-475c-a43f-cb4cc04bbdfa", + "metadata": { + "id": "c6bbe65f-1e6a-475c-a43f-cb4cc04bbdfa", + "tags": [] + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "from classiq import QuantumProgram, construct_chemistry_model, execute, show, synthesize\n", + "from classiq.applications.chemistry import (\n", + " ChemistryExecutionParameters,\n", + " HEAParameters,\n", + " Molecule,\n", + " MoleculeProblem,\n", + " UCCParameters,\n", + ")\n", + "from classiq.execution import (\n", + " ClassiqBackendPreferences,\n", + " ClassiqSimulatorBackendNames,\n", + " ExecutionPreferences,\n", + " OptimizerType,\n", + ")\n", + "from classiq.synthesis import set_execution_preferences" + ] + }, + { + "cell_type": "markdown", + "id": "faa3c10f", + "metadata": { + "id": "faa3c10f" + }, + "source": [ + "## 1. Generate Qubit Hamiltonian\n", + "\n", + "The first step is to define the molecule we wish to simulate. We hereby declare the class Molecule and insert a list of atoms and their spacial positions. The algorithm will automatically regard relevant attributes such as the atom's mass, charge and spin.\n", + "\n", + "As mentioned above, during this tutorial, we demonstrate how to define and find the ground state and energies for 3 molecules:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "VN6XdfYfLApS", + "metadata": { + "id": "VN6XdfYfLApS", + "tags": [] + }, + "outputs": [], + "source": [ + "#hydrogen\n", + "molecule_H2 = Molecule(atoms=[(\"H\", (0.0, 0.0, 0)), (\"H\", (0.0, 0.0, 0.735))])\n", + "\n", + "#oxygen\n", + "molecule_O2 = Molecule(atoms=[(\"O\", (0.0, 0.0, 0)), (\"O\", (0.0, 0.0, 1.16))])\n", + "\n", + "#lithium hydride\n", + "molecule_LiH = Molecule(atoms=[(\"H\", (0.0, 0.0, 0.0)), (\"Li\", (0.0, 0.0, 1.596))])\n", + "\n", + "#water\n", + "molecule_H2O = Molecule(\n", + " atoms=[(\"O\", (0.0, 0.0, 0.0)), (\"H\", (0, 0.586, 0.757)), (\"H\", (0, 0.586, -0.757))]\n", + ")\n", + "#beryllium hydride\n", + "molecule_BeH2 = Molecule(\n", + " atoms=[(\"Be\", (0.0, 0.0, 0.0)), (\"H\", (0, 0, 1.334)), (\"H\", (0, 0, -1.334))]\n", + ")\n", + "#carbon dioxide\n", + "molecule_CO2 = Molecule(atoms=[(\"C\", (0.0, 0.0, 0.0)),\n", + " (\"O\", (0, 0, 1.1693)), (\"O\", (0, 0, -1.1693))])\n", + "\n", + "#ethyne, acetylene\n", + "molecule_C2H2 = Molecule(atoms=[(\"C\", (0, 0, -0.5977)), (\"C\", (0, 0, 0.5977)),\n", + " (\"H\", (0, 0, -1.6692)), (\"H\", (0, 0, 1.6692))])\n", + "\n", + "#chloroform\n", + "molecule_CH3Cl = Molecule(atoms=[(\"C\", (0, 0, -1.1401)), (\"Cl\", (0, 0, 0.6645)),\n", + " (\"H\", (0, 1.0343, -1.4855)),\n", + " (\"H\", (0.8957, -0.5171, -1.4855)), (\"H\", (-0.8957, -0.5171, -1.4855))])\n", + "\n", + "#ethylene\n", + "molecule_C2H4 = Molecule(atoms=[(\"C\", (0, 0, 0.6673)), (\"C\", (0, 0, -0.6673)),\n", + " (\"H\", (0, 0.9239, 1.2411)), (\"H\", (0, -0.9239, 1.2411)),\n", + " (\"H\", (0, -0.9239, -1.2411)), (\"H\", (0, 0.9239, -1.2411))])\n" + ] + }, + { + "cell_type": "markdown", + "id": "ab162f48", + "metadata": { + "id": "ab162f48" + }, + "source": [ + "Similarly, the user is able to construct any valid essambly of atoms. The distances are recived in Å ($10^{-10} m$). We will continue this demonstration with a specific molecule. The user can change the `molecule` below to study other cases." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2e77678f", + "metadata": { + "id": "2e77678f", + "tags": [] + }, + "outputs": [], + "source": [ + "molecule = molecule_H2O" + ] + }, + { + "cell_type": "markdown", + "id": "c4a541a5", + "metadata": { + "id": "c4a541a5" + }, + "source": [ + "Next, we define the parameters of the Hamiltonian generation program. The user has a choice over the following options:\n", + "- mapping (str): the mapping between the fermionic Hamiltonian and an qubits Hamiltonian. Supported types:\n", + " - \"jordan_wigner\"\n", + " - \"parity\"\n", + " - \"bravyi_kitaev\"\n", + " - \"fast_bravyi_kitaev\"\n", + "- freeze_core (bool): remove the \"core\" orbitals of the atoms defining the molecule.\n", + "- z2_symmetries (bool): whether to perform z2 symmetries reduction. If symmetries in the molecules exist, this option will decrease the number of qubits used and will efficient the Hamiltonian and thus the calculations.\n", + "\n", + "Finally, the Hamiltonian is generated from `MoleculeProblem`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2e0426d5", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "2e0426d5", + "outputId": "205584a3-ca38-4d54-ca52-dbc3f88b8bbf", + "tags": [] + }, + "outputs": [], + "source": [ + "chemistry_problem = MoleculeProblem(\n", + " molecule=molecule,\n", + " mapping=\"jordan_wigner\", #'bravyi_kitaev'\n", + " z2_symmetries=True,\n", + " freeze_core=True,\n", + ")\n", + "\n", + "operator = chemistry_problem.generate_hamiltonian()\n", + "gs_problem = chemistry_problem.update_problem(operator.num_qubits)\n", + "print(\"Your Hamiltonian is\", operator.show(), sep=\"\\n\")" + ] + }, + { + "cell_type": "markdown", + "id": "67a124c2-33fc-420c-8cb3-0002f18f4e77", + "metadata": { + "id": "67a124c2-33fc-420c-8cb3-0002f18f4e77" + }, + "source": [ + "The output of the above code lines is the Hamiltonian presented as a superposition of Pauli matrices multiplication.\n", + "One can easily confirm that using z2*symmetries=True, the number of qubits are reduced (compered to z2_symmetries=False): for $H_2$ - from 4 to 1, for $LiH$ from 12 to 8, and for $H*{2}O$ from 14 to 10." + ] + }, + { + "cell_type": "markdown", + "id": "8abe3e3d-1b01-4fab-b86a-feaab3851950", + "metadata": { + "id": "8abe3e3d-1b01-4fab-b86a-feaab3851950" + }, + "source": [ + "## 2. Constructing and Synthesizing a Ground State Solver\n", + "\n", + "A ground state solver model consists of a parameterized eigenfunction (\"the ansatz\"), on which we run a VQE. In addition, a post-process of the result allows to return the total energy (combining the ground state energy of the Hamiltonian, the nuclear repulsion and the static nuclear energy).\n", + "\n", + "Once we've specified an Hamiltonian and a desired Ansatz, we send them to the VQE algorithm in order to find the Hamiltonian's ground state. In the process, the algorithm will send requests to a classical server, which task is to minimize the energy expectation value and return the optimized parameters. The simulator and optimizing parameters are defined as part of the VQE part of the model. The user should control the `max_iteration` value in a manner so the solution has reached a stable convergence. In addition, the value `num_shots` sets the number of measurements performed after each iteration, thus influence the accuracy of the solutions.\n", + "\n", + "We demonstrate two different proposal for the wavefunction solution ansatz: (1) Hardware (HW) efficient, and (2) Unitary Coupled Cluster (UCC). For groundstate solvers it is typical to initialize the Ansatz with the Hartree-Fock state." + ] + }, + { + "cell_type": "markdown", + "id": "07ed8f8e-485b-4f0f-93b7-78e7fd6fbe39", + "metadata": { + "id": "07ed8f8e-485b-4f0f-93b7-78e7fd6fbe39" + }, + "source": [ + "### 2.1 HW-Efficient Ansatz\n", + "\n", + "Hardware-efficient ansatz is a suggested solution that is generated to fit a specific hardware [1]. The ansatz creates a state with given number of parameters by user choice (number of qubits, that should fit the Hamiltonian), and creates entanglement between the qubits by the inputed connectivity map. In this example, a 4 qubit map is given, which is specifically made of $H_2$ with z2_symmetries=False.\n", + "\n", + "After constructing the model, we can synthesize it and view the outputted circuit, in charged on creating the state with an interactive interface." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "90b20061-8dbd-4136-adba-28ddacb1f583", + "metadata": { + "id": "90b20061-8dbd-4136-adba-28ddacb1f583", + "tags": [] + }, + "outputs": [], + "source": [ + "chemistry_problem = MoleculeProblem(\n", + " molecule=molecule,\n", + " mapping=\"jordan_wigner\", #'bravyi_kitaev'\n", + " z2_symmetries=False,\n", + " freeze_core=True,\n", + ")\n", + "\n", + "hwea_params = HEAParameters(\n", + " num_qubits=12,\n", + " connectivity_map=[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8),\n", + " (8, 9), (9, 10)],\n", + " reps=3,\n", + " one_qubit_gates=[\"x\", \"ry\"],\n", + " two_qubit_gates=[\"cx\"],\n", + ")\n", + "\n", + "qmod = construct_chemistry_model(\n", + " chemistry_problem=chemistry_problem,\n", + " use_hartree_fock=True,\n", + " ansatz_parameters=hwea_params,\n", + " execution_parameters=ChemistryExecutionParameters(\n", + " optimizer=OptimizerType.COBYLA,\n", + " max_iteration=30,\n", + " initial_point=None,\n", + " ),\n", + ")\n", + "\n", + "backend_preferences = ClassiqBackendPreferences(\n", + " backend_name=ClassiqSimulatorBackendNames.SIMULATOR\n", + ")\n", + "\n", + "qmod = set_execution_preferences(\n", + " qmod,\n", + " execution_preferences=ExecutionPreferences(\n", + " num_shots=1000, backend_preferences=backend_preferences\n", + " ),\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f13599d2-e8e7-4165-aa26-8ae8d4bdafaa", + "metadata": { + "id": "f13599d2-e8e7-4165-aa26-8ae8d4bdafaa", + "tags": [] + }, + "outputs": [], + "source": [ + "from classiq import write_qmod\n", + "\n", + "write_qmod(qmod, name=\"molecule_eigensolver\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "22cd12d1-2c87-400a-a983-b2f24e40fa45", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "22cd12d1-2c87-400a-a983-b2f24e40fa45", + "outputId": "d48d0740-4851-4943-f54b-325303b4838a", + "tags": [] + }, + "outputs": [], + "source": [ + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "7fb92cdc", + "metadata": { + "id": "7fb92cdc" + }, + "source": [ + "### 2.2. UCC Ansatz\n", + "\n", + "Next, we show how to create the commonly used chemistry-inspired UCC ansatz, which is a unitary version of the classical coupled cluster (CC) method [2] .\n", + "\n", + "The parameter that defines the UCC ansatz is:\n", + "- excitations (List[int] or List[str]): list of desired excitations. Allowed excitations:\n", + " - 1 for singles\n", + " - 2 for doubles\n", + " - 3 for triples\n", + " - 4 for quadruples\n", + "\n", + "Once again, after the code lines bellow run, the user is able to view the outputted circuit, in charged on creating the state with an interactive interface. In addition, the depth of the circuit is printed.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1f520673", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "1f520673", + "outputId": "fd4a3467-c48b-483c-b156-0a0cde9e2189", + "tags": [] + }, + "outputs": [], + "source": [ + "chemistry_problem = MoleculeProblem(\n", + " molecule=molecule,\n", + " mapping=\"jordan_wigner\", #'bravyi_kitaev'\n", + " z2_symmetries=True,\n", + " freeze_core=True,\n", + ")\n", + "\n", + "serialized_chemistry_model = construct_chemistry_model(\n", + " chemistry_problem=chemistry_problem,\n", + " use_hartree_fock=True,\n", + " ansatz_parameters=UCCParameters(excitations=[1, 2]),\n", + " execution_parameters=ChemistryExecutionParameters(\n", + " optimizer=OptimizerType.COBYLA,\n", + " max_iteration=30,\n", + " initial_point=None,\n", + " ),\n", + ")\n", + "\n", + "backend_preferences = ClassiqBackendPreferences(\n", + " backend_name=ClassiqSimulatorBackendNames.SIMULATOR\n", + ")\n", + "\n", + "serialized_chemistry_model = set_execution_preferences(\n", + " serialized_chemistry_model,\n", + " execution_preferences=ExecutionPreferences(\n", + " num_shots=1000, backend_preferences=backend_preferences\n", + " ),\n", + ")\n", + "\n", + "qprog = synthesize(serialized_chemistry_model)\n", + "show(qprog)\n", + "\n", + "circuit = QuantumProgram.from_qprog(qprog)\n", + "print(f\"circuit depth: {circuit.transpiled_circuit.depth}\")" + ] + }, + { + "cell_type": "markdown", + "id": "f12c9a32-f271-4892-8515-bd9e6b9fcf8b", + "metadata": { + "id": "f12c9a32-f271-4892-8515-bd9e6b9fcf8b" + }, + "source": [ + "Classiq's UCC algorithm provides an highly efficient solution in aspects of circuit depth and number of CX gates. Those ultimately reduce the gate's time and amount of resources needed for its operation." + ] + }, + { + "cell_type": "markdown", + "id": "ef36661f", + "metadata": { + "id": "ef36661f" + }, + "source": [ + "## 3. Execute to Find Ground State\n", + "\n", + "Once we've synthesized the model we can execute it." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1a66d377", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 477 + }, + "id": "1a66d377", + "outputId": "1c93e68e-1300-4fde-ec56-e6e2d377a96e", + "tags": [] + }, + "outputs": [], + "source": [ + "result = execute(qprog).result()\n", + "chemistry_result_dict = result[1].value" + ] + }, + { + "cell_type": "markdown", + "id": "f72ceeb5-bc71-46d8-a390-31ec874700f3", + "metadata": { + "id": "f72ceeb5-bc71-46d8-a390-31ec874700f3" + }, + "source": [ + "Execution of the quantum program returns several useful outputs:\n", + "- energy : the output of the VQE algorithm - the electronic energy simulated.\n", + "- nuclear_repulsion : the electrostatic energy generated by the atom's nuclei.\n", + "- hartree_fock_energy : the Hartree Fock energy.\n", + "- total_energy : this is the ground state energy of the Hamiltonian (combining the energy, the nuclear repulsion and the static nuclear energy).\n", + "\n", + "It also contains the full VQE result from which we can get, for example:\n", + "- optimal_parameters : gives the results for the anzats parameters minimizing that expectation value.\n", + "- eigenstate : gives the ground state wave function.\n", + "\n", + "Note the all energy are presented in units of Hartree." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "437b3211", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "437b3211", + "outputId": "dbe14152-d540-4cd0-f294-b17824883a4c", + "tags": [] + }, + "outputs": [], + "source": [ + "chemistry_result_dict[\"total_energy\"]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9a537d3c", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "9a537d3c", + "outputId": "bbb38543-5586-41d0-80a4-32ce72e3fa1b" + }, + "outputs": [], + "source": [ + "chemistry_result_dict[\"vqe_result\"][\"optimal_parameters\"]" + ] + }, + { + "cell_type": "markdown", + "id": "2375f3c3", + "metadata": { + "id": "2375f3c3" + }, + "source": [ + "Finally, we can compare the VQE solution to the classical solution by employing exact diagonalization:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5c896576", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "5c896576", + "outputId": "f6ada73d-6bd4-440d-98c1-d17e70b57cde", + "tags": [] + }, + "outputs": [], + "source": [ + "mat = operator.to_matrix()\n", + "w, v = np.linalg.eig(mat)\n", + "print(\"exact result:\", np.real(min(w)))\n", + "print(\"vqe result:\", chemistry_result_dict[\"energy\"])" + ] + }, + { + "cell_type": "markdown", + "id": "TXF-IJT59B7j", + "metadata": { + "id": "TXF-IJT59B7j" + }, + "source": [ + "## **h2**\n", + "\n", + "hw-eff: width 4/depth34\n", + "\n", + "ucc: width 1/depth 6, width 4, depth 3\n", + "\n", + "total en -1.1342995783232035,\n", + "exact result: -1.8572750302023786,\n", + "vqe result: -1.854268572772183\n" + ] + }, + { + "cell_type": "markdown", + "id": "2qTUaxbEX5IF", + "metadata": { + "id": "2qTUaxbEX5IF" + }, + "source": [ + "## **h2o**\n", + "\n", + "hw-eff.: width 12/depth 375,\n", + "(conn map 0-1..10-11, reps 11)\n", + "\n", + "ucc: width 8/depth 1218, width 12/depth 1048\n", + "\n", + "total energy -71.7605079203085,\n", + "exact result: -23.544497240443615,\n", + "vqe result: -80.95442108093192" + ] + }, + { + "cell_type": "markdown", + "id": "bxRq_3-Jb4_0", + "metadata": { + "id": "bxRq_3-Jb4_0" + }, + "source": [ + "##**co2**\n", + "\n", + "hw-eff: width 24/depth 175\n", + "\n", + "ucc: width 20/depth 19767, width 24/depth 16968\n", + "\n", + "Error number 90001 occurred. The resources needed to execute this request are insufficient.\n", + " This may be due to computational limitations, or high load on Classiq's servers." + ] + }, + { + "cell_type": "markdown", + "id": "b998e321", + "metadata": { + "id": "b998e321" + }, + "source": [ + "[1] Abhinav Kandala, Antonio Mezzacapo, Kristan Temme, Maika Takita, Markus Brink, Jerry M. Chow, Jay M. Gambetta Hardware-efficient variational quantum eigensolver for small molecules and quantum magnets. Nature 549, 242 (2017)\n", + "\n", + "[2] Panagiotis Kl. Barkoutsos, Jerome F. Gonthier, Igor Sokolov, Nikolaj Moll, Gian Salis, Andreas Fuhrer, Marc Ganzhorn, Daniel J. Egger, Matthias Troyer, Antonio Mezzacapo, Stefan Filipp, and Ivano Tavernelli Quantum algorithms for electronic structure calculations: Particle-hole Hamiltonian and optimized wave-function expansions Phys. Rev. A 98, 022322 (2018)\n" + ] + } + ], + "metadata": { + "colab": { + "include_colab_link": true, + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3 [Default]", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 35ab772b1c8a904c8b6b5a64b4e9e1163902f0f3 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Sat, 22 Jun 2024 23:18:35 +0200 Subject: [PATCH 38/83] Delete community/QClass_2024/Submissions/HW4/Yasir_Mansour_HW4_molecule_eigensolver.ipynb --- ...sir_Mansour_HW4_molecule_eigensolver.ipynb | 684 ------------------ 1 file changed, 684 deletions(-) delete mode 100644 community/QClass_2024/Submissions/HW4/Yasir_Mansour_HW4_molecule_eigensolver.ipynb diff --git a/community/QClass_2024/Submissions/HW4/Yasir_Mansour_HW4_molecule_eigensolver.ipynb b/community/QClass_2024/Submissions/HW4/Yasir_Mansour_HW4_molecule_eigensolver.ipynb deleted file mode 100644 index 3a40ab6d..00000000 --- a/community/QClass_2024/Submissions/HW4/Yasir_Mansour_HW4_molecule_eigensolver.ipynb +++ /dev/null @@ -1,684 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "726d2386", - "metadata": { - "colab_type": "text", - "id": "view-in-github" - }, - "source": [ - "\"Open" - ] - }, - { - "cell_type": "markdown", - "id": "4fbae0f9", - "metadata": { - "id": "4fbae0f9" - }, - "source": [ - "# Molecule Eigensolver (VQE method)\n", - "\n", - "Evaluating the ground state of a molecular Hamiltonian allows us to understand the chemical properties of the molecule. In this demo, we demonstrate the usage of Variational Quantum Eigensolver (VQE) for finding the ground states and energies of several molecules: 𝐻2 , 𝐻2𝑂 and 𝐿𝑖𝐻 .\n", - "\n", - "VQE is a leading method for finding approximate values of ground state wavefuncions and energies for complicated quantum systems, and as such can give solutions for complex molecular structures. The overview of the VQE method is as following: a problem (i.e. a molecule) is defined by a Hamiltonian which ground state is sought. Then, a choice of a parameterized ansatz is made. Using a hybrid quantum-classical algorithm, a solution for the defined parameters which minimize the expectation value for the energy is found. A clever ansatz will lead to an estimated ground state solution.\n", - "\n", - "Within the scope of Classiq's VQE algorithm, the user defines a Molecule which is being translated to a concise Hamiltonian. Then, a choice between several types of well studied ansatz is given, which can be carefully picked to fit your Molecule type. In the last stage, the Hamiltonian and ansatz are sent to a classical optimizer. During this tutorial we will demonstrate the steps and user options in Classiq's VQE algorithm. Furthermore, the demonstration will present the optimization strength Classiq's VQE algorithm holds, and it's state of the art results in term of efficient quantum circuit - with ultimate combination of low depth and high accuracy, while minimizing the number of CX gates." - ] - }, - { - "cell_type": "markdown", - "id": "TWGNYMkUKh6C", - "metadata": { - "id": "TWGNYMkUKh6C" - }, - "source": [ - "` **RESULTS**\n", - "\n", - "Comparison of different molecules in terms of width and depth. The more atoms in a molecule, the more qubits/circuit depth are necessary. System overload when more than 3 atoms.\n", - "\n", - "## **h2**\n", - "\n", - "hw-eff ansatz: width 4/depth34\n", - "\n", - "ucc ansatz: ,\n", - "width 1/depth 6, width 4, depth 3\n", - "\n", - "total en -1.1342995783232035,\n", - "exact result: -1.8572750302023786,\n", - "vqe result: -1.854268572772183\n" - ] - }, - { - "cell_type": "markdown", - "id": "XcbH8UHbKrIU", - "metadata": { - "id": "XcbH8UHbKrIU" - }, - "source": [ - "## **h2o**\n", - "\n", - "hw-eff. ansatz: width 12/depth 375,\n", - "(conn map 0-1..10-11, reps 11)\n", - "\n", - "ucc ansatz: width 8/depth 1218, width 12/depth 1048\n", - "\n", - "total energy -71.7605079203085,\n", - "exact result: -23.544497240443615,\n", - "vqe result: -80.95442108093192" - ] - }, - { - "cell_type": "markdown", - "id": "Br0-chtAKv6D", - "metadata": { - "id": "Br0-chtAKv6D" - }, - "source": [ - "##**co2**\n", - "\n", - "hw-eff ansatz: width 24/depth 175\n", - "\n", - "ucc ansatz: width 20/depth 19767, width 24/depth 16968\n", - "\n", - "Error number 90001 occurred. The resources needed to execute this request are insufficient.\n", - " This may be due to computational limitations, or high load on Classiq's servers." - ] - }, - { - "cell_type": "markdown", - "id": "54d09062-1b3b-4e4b-8351-5e05a633e269", - "metadata": { - "id": "54d09062-1b3b-4e4b-8351-5e05a633e269" - }, - "source": [ - "## 0. Pre-requirments\n", - "\n", - "The model is using several Classiq's libraries." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "fc04368f-475c-4e00-9b26-f51dd94a15f0", - "metadata": {}, - "outputs": [], - "source": [ - "from classiq import *" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c6bbe65f-1e6a-475c-a43f-cb4cc04bbdfa", - "metadata": { - "id": "c6bbe65f-1e6a-475c-a43f-cb4cc04bbdfa", - "tags": [] - }, - "outputs": [], - "source": [ - "import numpy as np\n", - "\n", - "from classiq import QuantumProgram, construct_chemistry_model, execute, show, synthesize\n", - "from classiq.applications.chemistry import (\n", - " ChemistryExecutionParameters,\n", - " HEAParameters,\n", - " Molecule,\n", - " MoleculeProblem,\n", - " UCCParameters,\n", - ")\n", - "from classiq.execution import (\n", - " ClassiqBackendPreferences,\n", - " ClassiqSimulatorBackendNames,\n", - " ExecutionPreferences,\n", - " OptimizerType,\n", - ")\n", - "from classiq.synthesis import set_execution_preferences" - ] - }, - { - "cell_type": "markdown", - "id": "faa3c10f", - "metadata": { - "id": "faa3c10f" - }, - "source": [ - "## 1. Generate Qubit Hamiltonian\n", - "\n", - "The first step is to define the molecule we wish to simulate. We hereby declare the class Molecule and insert a list of atoms and their spacial positions. The algorithm will automatically regard relevant attributes such as the atom's mass, charge and spin.\n", - "\n", - "As mentioned above, during this tutorial, we demonstrate how to define and find the ground state and energies for 3 molecules:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "VN6XdfYfLApS", - "metadata": { - "id": "VN6XdfYfLApS", - "tags": [] - }, - "outputs": [], - "source": [ - "#hydrogen\n", - "molecule_H2 = Molecule(atoms=[(\"H\", (0.0, 0.0, 0)), (\"H\", (0.0, 0.0, 0.735))])\n", - "\n", - "#oxygen\n", - "molecule_O2 = Molecule(atoms=[(\"O\", (0.0, 0.0, 0)), (\"O\", (0.0, 0.0, 1.16))])\n", - "\n", - "#lithium hydride\n", - "molecule_LiH = Molecule(atoms=[(\"H\", (0.0, 0.0, 0.0)), (\"Li\", (0.0, 0.0, 1.596))])\n", - "\n", - "#water\n", - "molecule_H2O = Molecule(\n", - " atoms=[(\"O\", (0.0, 0.0, 0.0)), (\"H\", (0, 0.586, 0.757)), (\"H\", (0, 0.586, -0.757))]\n", - ")\n", - "#beryllium hydride\n", - "molecule_BeH2 = Molecule(\n", - " atoms=[(\"Be\", (0.0, 0.0, 0.0)), (\"H\", (0, 0, 1.334)), (\"H\", (0, 0, -1.334))]\n", - ")\n", - "#carbon dioxide\n", - "molecule_CO2 = Molecule(atoms=[(\"C\", (0.0, 0.0, 0.0)),\n", - " (\"O\", (0, 0, 1.1693)), (\"O\", (0, 0, -1.1693))])\n", - "\n", - "#ethyne, acetylene\n", - "molecule_C2H2 = Molecule(atoms=[(\"C\", (0, 0, -0.5977)), (\"C\", (0, 0, 0.5977)),\n", - " (\"H\", (0, 0, -1.6692)), (\"H\", (0, 0, 1.6692))])\n", - "\n", - "#chloroform\n", - "molecule_CH3Cl = Molecule(atoms=[(\"C\", (0, 0, -1.1401)), (\"Cl\", (0, 0, 0.6645)),\n", - " (\"H\", (0, 1.0343, -1.4855)),\n", - " (\"H\", (0.8957, -0.5171, -1.4855)), (\"H\", (-0.8957, -0.5171, -1.4855))])\n", - "\n", - "#ethylene\n", - "molecule_C2H4 = Molecule(atoms=[(\"C\", (0, 0, 0.6673)), (\"C\", (0, 0, -0.6673)),\n", - " (\"H\", (0, 0.9239, 1.2411)), (\"H\", (0, -0.9239, 1.2411)),\n", - " (\"H\", (0, -0.9239, -1.2411)), (\"H\", (0, 0.9239, -1.2411))])\n" - ] - }, - { - "cell_type": "markdown", - "id": "ab162f48", - "metadata": { - "id": "ab162f48" - }, - "source": [ - "Similarly, the user is able to construct any valid essambly of atoms. The distances are recived in Å ($10^{-10} m$). We will continue this demonstration with a specific molecule. The user can change the `molecule` below to study other cases." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2e77678f", - "metadata": { - "id": "2e77678f", - "tags": [] - }, - "outputs": [], - "source": [ - "molecule = molecule_H2O" - ] - }, - { - "cell_type": "markdown", - "id": "c4a541a5", - "metadata": { - "id": "c4a541a5" - }, - "source": [ - "Next, we define the parameters of the Hamiltonian generation program. The user has a choice over the following options:\n", - "- mapping (str): the mapping between the fermionic Hamiltonian and an qubits Hamiltonian. Supported types:\n", - " - \"jordan_wigner\"\n", - " - \"parity\"\n", - " - \"bravyi_kitaev\"\n", - " - \"fast_bravyi_kitaev\"\n", - "- freeze_core (bool): remove the \"core\" orbitals of the atoms defining the molecule.\n", - "- z2_symmetries (bool): whether to perform z2 symmetries reduction. If symmetries in the molecules exist, this option will decrease the number of qubits used and will efficient the Hamiltonian and thus the calculations.\n", - "\n", - "Finally, the Hamiltonian is generated from `MoleculeProblem`." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2e0426d5", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "id": "2e0426d5", - "outputId": "205584a3-ca38-4d54-ca52-dbc3f88b8bbf", - "tags": [] - }, - "outputs": [], - "source": [ - "chemistry_problem = MoleculeProblem(\n", - " molecule=molecule,\n", - " mapping=\"jordan_wigner\", #'bravyi_kitaev'\n", - " z2_symmetries=True,\n", - " freeze_core=True,\n", - ")\n", - "\n", - "operator = chemistry_problem.generate_hamiltonian()\n", - "gs_problem = chemistry_problem.update_problem(operator.num_qubits)\n", - "print(\"Your Hamiltonian is\", operator.show(), sep=\"\\n\")" - ] - }, - { - "cell_type": "markdown", - "id": "67a124c2-33fc-420c-8cb3-0002f18f4e77", - "metadata": { - "id": "67a124c2-33fc-420c-8cb3-0002f18f4e77" - }, - "source": [ - "The output of the above code lines is the Hamiltonian presented as a superposition of Pauli matrices multiplication.\n", - "One can easily confirm that using z2*symmetries=True, the number of qubits are reduced (compered to z2_symmetries=False): for $H_2$ - from 4 to 1, for $LiH$ from 12 to 8, and for $H*{2}O$ from 14 to 10." - ] - }, - { - "cell_type": "markdown", - "id": "8abe3e3d-1b01-4fab-b86a-feaab3851950", - "metadata": { - "id": "8abe3e3d-1b01-4fab-b86a-feaab3851950" - }, - "source": [ - "## 2. Constructing and Synthesizing a Ground State Solver\n", - "\n", - "A ground state solver model consists of a parameterized eigenfunction (\"the ansatz\"), on which we run a VQE. In addition, a post-process of the result allows to return the total energy (combining the ground state energy of the Hamiltonian, the nuclear repulsion and the static nuclear energy).\n", - "\n", - "Once we've specified an Hamiltonian and a desired Ansatz, we send them to the VQE algorithm in order to find the Hamiltonian's ground state. In the process, the algorithm will send requests to a classical server, which task is to minimize the energy expectation value and return the optimized parameters. The simulator and optimizing parameters are defined as part of the VQE part of the model. The user should control the `max_iteration` value in a manner so the solution has reached a stable convergence. In addition, the value `num_shots` sets the number of measurements performed after each iteration, thus influence the accuracy of the solutions.\n", - "\n", - "We demonstrate two different proposal for the wavefunction solution ansatz: (1) Hardware (HW) efficient, and (2) Unitary Coupled Cluster (UCC). For groundstate solvers it is typical to initialize the Ansatz with the Hartree-Fock state." - ] - }, - { - "cell_type": "markdown", - "id": "07ed8f8e-485b-4f0f-93b7-78e7fd6fbe39", - "metadata": { - "id": "07ed8f8e-485b-4f0f-93b7-78e7fd6fbe39" - }, - "source": [ - "### 2.1 HW-Efficient Ansatz\n", - "\n", - "Hardware-efficient ansatz is a suggested solution that is generated to fit a specific hardware [1]. The ansatz creates a state with given number of parameters by user choice (number of qubits, that should fit the Hamiltonian), and creates entanglement between the qubits by the inputed connectivity map. In this example, a 4 qubit map is given, which is specifically made of $H_2$ with z2_symmetries=False.\n", - "\n", - "After constructing the model, we can synthesize it and view the outputted circuit, in charged on creating the state with an interactive interface." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "90b20061-8dbd-4136-adba-28ddacb1f583", - "metadata": { - "id": "90b20061-8dbd-4136-adba-28ddacb1f583", - "tags": [] - }, - "outputs": [], - "source": [ - "chemistry_problem = MoleculeProblem(\n", - " molecule=molecule,\n", - " mapping=\"jordan_wigner\", #'bravyi_kitaev'\n", - " z2_symmetries=False,\n", - " freeze_core=True,\n", - ")\n", - "\n", - "hwea_params = HEAParameters(\n", - " num_qubits=12,\n", - " connectivity_map=[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8),\n", - " (8, 9), (9, 10)],\n", - " reps=3,\n", - " one_qubit_gates=[\"x\", \"ry\"],\n", - " two_qubit_gates=[\"cx\"],\n", - ")\n", - "\n", - "qmod = construct_chemistry_model(\n", - " chemistry_problem=chemistry_problem,\n", - " use_hartree_fock=True,\n", - " ansatz_parameters=hwea_params,\n", - " execution_parameters=ChemistryExecutionParameters(\n", - " optimizer=OptimizerType.COBYLA,\n", - " max_iteration=30,\n", - " initial_point=None,\n", - " ),\n", - ")\n", - "\n", - "backend_preferences = ClassiqBackendPreferences(\n", - " backend_name=ClassiqSimulatorBackendNames.SIMULATOR\n", - ")\n", - "\n", - "qmod = set_execution_preferences(\n", - " qmod,\n", - " execution_preferences=ExecutionPreferences(\n", - " num_shots=1000, backend_preferences=backend_preferences\n", - " ),\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f13599d2-e8e7-4165-aa26-8ae8d4bdafaa", - "metadata": { - "id": "f13599d2-e8e7-4165-aa26-8ae8d4bdafaa", - "tags": [] - }, - "outputs": [], - "source": [ - "from classiq import write_qmod\n", - "\n", - "write_qmod(qmod, name=\"molecule_eigensolver\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "22cd12d1-2c87-400a-a983-b2f24e40fa45", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "id": "22cd12d1-2c87-400a-a983-b2f24e40fa45", - "outputId": "d48d0740-4851-4943-f54b-325303b4838a", - "tags": [] - }, - "outputs": [], - "source": [ - "qprog = synthesize(qmod)\n", - "show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "7fb92cdc", - "metadata": { - "id": "7fb92cdc" - }, - "source": [ - "### 2.2. UCC Ansatz\n", - "\n", - "Next, we show how to create the commonly used chemistry-inspired UCC ansatz, which is a unitary version of the classical coupled cluster (CC) method [2] .\n", - "\n", - "The parameter that defines the UCC ansatz is:\n", - "- excitations (List[int] or List[str]): list of desired excitations. Allowed excitations:\n", - " - 1 for singles\n", - " - 2 for doubles\n", - " - 3 for triples\n", - " - 4 for quadruples\n", - "\n", - "Once again, after the code lines bellow run, the user is able to view the outputted circuit, in charged on creating the state with an interactive interface. In addition, the depth of the circuit is printed.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1f520673", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "id": "1f520673", - "outputId": "fd4a3467-c48b-483c-b156-0a0cde9e2189", - "tags": [] - }, - "outputs": [], - "source": [ - "chemistry_problem = MoleculeProblem(\n", - " molecule=molecule,\n", - " mapping=\"jordan_wigner\", #'bravyi_kitaev'\n", - " z2_symmetries=True,\n", - " freeze_core=True,\n", - ")\n", - "\n", - "serialized_chemistry_model = construct_chemistry_model(\n", - " chemistry_problem=chemistry_problem,\n", - " use_hartree_fock=True,\n", - " ansatz_parameters=UCCParameters(excitations=[1, 2]),\n", - " execution_parameters=ChemistryExecutionParameters(\n", - " optimizer=OptimizerType.COBYLA,\n", - " max_iteration=30,\n", - " initial_point=None,\n", - " ),\n", - ")\n", - "\n", - "backend_preferences = ClassiqBackendPreferences(\n", - " backend_name=ClassiqSimulatorBackendNames.SIMULATOR\n", - ")\n", - "\n", - "serialized_chemistry_model = set_execution_preferences(\n", - " serialized_chemistry_model,\n", - " execution_preferences=ExecutionPreferences(\n", - " num_shots=1000, backend_preferences=backend_preferences\n", - " ),\n", - ")\n", - "\n", - "qprog = synthesize(serialized_chemistry_model)\n", - "show(qprog)\n", - "\n", - "circuit = QuantumProgram.from_qprog(qprog)\n", - "print(f\"circuit depth: {circuit.transpiled_circuit.depth}\")" - ] - }, - { - "cell_type": "markdown", - "id": "f12c9a32-f271-4892-8515-bd9e6b9fcf8b", - "metadata": { - "id": "f12c9a32-f271-4892-8515-bd9e6b9fcf8b" - }, - "source": [ - "Classiq's UCC algorithm provides an highly efficient solution in aspects of circuit depth and number of CX gates. Those ultimately reduce the gate's time and amount of resources needed for its operation." - ] - }, - { - "cell_type": "markdown", - "id": "ef36661f", - "metadata": { - "id": "ef36661f" - }, - "source": [ - "## 3. Execute to Find Ground State\n", - "\n", - "Once we've synthesized the model we can execute it." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1a66d377", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 477 - }, - "id": "1a66d377", - "outputId": "1c93e68e-1300-4fde-ec56-e6e2d377a96e", - "tags": [] - }, - "outputs": [], - "source": [ - "result = execute(qprog).result()\n", - "chemistry_result_dict = result[1].value" - ] - }, - { - "cell_type": "markdown", - "id": "f72ceeb5-bc71-46d8-a390-31ec874700f3", - "metadata": { - "id": "f72ceeb5-bc71-46d8-a390-31ec874700f3" - }, - "source": [ - "Execution of the quantum program returns several useful outputs:\n", - "- energy : the output of the VQE algorithm - the electronic energy simulated.\n", - "- nuclear_repulsion : the electrostatic energy generated by the atom's nuclei.\n", - "- hartree_fock_energy : the Hartree Fock energy.\n", - "- total_energy : this is the ground state energy of the Hamiltonian (combining the energy, the nuclear repulsion and the static nuclear energy).\n", - "\n", - "It also contains the full VQE result from which we can get, for example:\n", - "- optimal_parameters : gives the results for the anzats parameters minimizing that expectation value.\n", - "- eigenstate : gives the ground state wave function.\n", - "\n", - "Note the all energy are presented in units of Hartree." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "437b3211", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "id": "437b3211", - "outputId": "dbe14152-d540-4cd0-f294-b17824883a4c", - "tags": [] - }, - "outputs": [], - "source": [ - "chemistry_result_dict[\"total_energy\"]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "9a537d3c", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "id": "9a537d3c", - "outputId": "bbb38543-5586-41d0-80a4-32ce72e3fa1b" - }, - "outputs": [], - "source": [ - "chemistry_result_dict[\"vqe_result\"][\"optimal_parameters\"]" - ] - }, - { - "cell_type": "markdown", - "id": "2375f3c3", - "metadata": { - "id": "2375f3c3" - }, - "source": [ - "Finally, we can compare the VQE solution to the classical solution by employing exact diagonalization:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5c896576", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 0 - }, - "id": "5c896576", - "outputId": "f6ada73d-6bd4-440d-98c1-d17e70b57cde", - "tags": [] - }, - "outputs": [], - "source": [ - "mat = operator.to_matrix()\n", - "w, v = np.linalg.eig(mat)\n", - "print(\"exact result:\", np.real(min(w)))\n", - "print(\"vqe result:\", chemistry_result_dict[\"energy\"])" - ] - }, - { - "cell_type": "markdown", - "id": "TXF-IJT59B7j", - "metadata": { - "id": "TXF-IJT59B7j" - }, - "source": [ - "## **h2**\n", - "\n", - "hw-eff: width 4/depth34\n", - "\n", - "ucc: width 1/depth 6, width 4, depth 3\n", - "\n", - "total en -1.1342995783232035,\n", - "exact result: -1.8572750302023786,\n", - "vqe result: -1.854268572772183\n" - ] - }, - { - "cell_type": "markdown", - "id": "2qTUaxbEX5IF", - "metadata": { - "id": "2qTUaxbEX5IF" - }, - "source": [ - "## **h2o**\n", - "\n", - "hw-eff.: width 12/depth 375,\n", - "(conn map 0-1..10-11, reps 11)\n", - "\n", - "ucc: width 8/depth 1218, width 12/depth 1048\n", - "\n", - "total energy -71.7605079203085,\n", - "exact result: -23.544497240443615,\n", - "vqe result: -80.95442108093192" - ] - }, - { - "cell_type": "markdown", - "id": "bxRq_3-Jb4_0", - "metadata": { - "id": "bxRq_3-Jb4_0" - }, - "source": [ - "##**co2**\n", - "\n", - "hw-eff: width 24/depth 175\n", - "\n", - "ucc: width 20/depth 19767, width 24/depth 16968\n", - "\n", - "Error number 90001 occurred. The resources needed to execute this request are insufficient.\n", - " This may be due to computational limitations, or high load on Classiq's servers." - ] - }, - { - "cell_type": "markdown", - "id": "b998e321", - "metadata": { - "id": "b998e321" - }, - "source": [ - "[1] Abhinav Kandala, Antonio Mezzacapo, Kristan Temme, Maika Takita, Markus Brink, Jerry M. Chow, Jay M. Gambetta Hardware-efficient variational quantum eigensolver for small molecules and quantum magnets. Nature 549, 242 (2017)\n", - "\n", - "[2] Panagiotis Kl. Barkoutsos, Jerome F. Gonthier, Igor Sokolov, Nikolaj Moll, Gian Salis, Andreas Fuhrer, Marc Ganzhorn, Daniel J. Egger, Matthias Troyer, Antonio Mezzacapo, Stefan Filipp, and Ivano Tavernelli Quantum algorithms for electronic structure calculations: Particle-hole Hamiltonian and optimized wave-function expansions Phys. Rev. A 98, 022322 (2018)\n" - ] - } - ], - "metadata": { - "colab": { - "include_colab_link": true, - "provenance": [] - }, - "kernelspec": { - "display_name": "Python 3 [Default]", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} From 2447ead42368217399eebe3ffed1847a0ec7afed Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Sat, 22 Jun 2024 23:19:45 +0200 Subject: [PATCH 39/83] Add files via upload From 6f50b1d97ee717a948504674e652986a7b7dab50 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Thu, 25 Jul 2024 12:37:08 +0200 Subject: [PATCH 40/83] Create womanium --- community/womanium | 1 + 1 file changed, 1 insertion(+) create mode 100644 community/womanium diff --git a/community/womanium b/community/womanium new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/community/womanium @@ -0,0 +1 @@ + From 385a377521c808580596e1992016bfceadcf6b11 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Thu, 25 Jul 2024 12:39:57 +0200 Subject: [PATCH 41/83] Create .womanium --- community/.womanium | 1 + 1 file changed, 1 insertion(+) create mode 100644 community/.womanium diff --git a/community/.womanium b/community/.womanium new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/community/.womanium @@ -0,0 +1 @@ + From 8a8b7e1bc3ea6903ef31157c273e1282089eeb6b Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Thu, 25 Jul 2024 12:42:39 +0200 Subject: [PATCH 42/83] Delete community/.womanium --- community/.womanium | 1 - 1 file changed, 1 deletion(-) delete mode 100644 community/.womanium diff --git a/community/.womanium b/community/.womanium deleted file mode 100644 index 8b137891..00000000 --- a/community/.womanium +++ /dev/null @@ -1 +0,0 @@ - From ffe5cf198074fa0e9e2681827cb5a5efd0776b8a Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Thu, 25 Jul 2024 12:42:51 +0200 Subject: [PATCH 43/83] Delete community/womanium --- community/womanium | 1 - 1 file changed, 1 deletion(-) delete mode 100644 community/womanium diff --git a/community/womanium b/community/womanium deleted file mode 100644 index 8b137891..00000000 --- a/community/womanium +++ /dev/null @@ -1 +0,0 @@ - From d2c31afe03fd45c30f8fc9346d56d1f9ecbf3cd5 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Thu, 25 Jul 2024 12:43:23 +0200 Subject: [PATCH 44/83] Create test.md --- community/womanium/assignments/test.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 community/womanium/assignments/test.md diff --git a/community/womanium/assignments/test.md b/community/womanium/assignments/test.md new file mode 100644 index 00000000..9daeafb9 --- /dev/null +++ b/community/womanium/assignments/test.md @@ -0,0 +1 @@ +test From 3bc5517f73aa930dc7612f27b80b2a6a97420745 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Thu, 25 Jul 2024 23:31:21 +0200 Subject: [PATCH 45/83] Add files via upload --- .../assignments/Yasir_Mansour_hw4.ipynb | 1001 +++++++++++++++++ 1 file changed, 1001 insertions(+) create mode 100644 community/womanium/assignments/Yasir_Mansour_hw4.ipynb diff --git a/community/womanium/assignments/Yasir_Mansour_hw4.ipynb b/community/womanium/assignments/Yasir_Mansour_hw4.ipynb new file mode 100644 index 00000000..2ec40eb4 --- /dev/null +++ b/community/womanium/assignments/Yasir_Mansour_hw4.ipynb @@ -0,0 +1,1001 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "b7f74e3a-7dae-4939-a2ef-0ff82d8eadd0", + "metadata": {}, + "source": [ + "\n", + "# Assignment 6.12 - womanium 2024\n" + ] + }, + { + "cell_type": "markdown", + "id": "adc17ffc-b892-4a94-bebb-4ba74d208a9e", + "metadata": { + "tags": [] + }, + "source": [ + "## Assignment: Advanced Algorithms Design\n", + "## _Quantum random walk_\n", + "**Instructions - Final assignment**\n", + "\n", + "Follow the example from Bootcamp 4 for creating the quantum walk operator for the case of a circle with 4 nodes, and design the quantum walk operator for the case of a line with 16 nodes:\n", + "\n", + "**Tasks:**\n", + "\n", + "- A. Create a well-detailed Python Jupyter notebook that explains your algorithm, including the code parts covered in class, and pictures/figures where relevant. Utilize the Python code from class: quantum_walk_circle_example.py. It can be found directly also in the Classiq Git Library in the community/womanium/assignments folder. Feel free to extend the example beyond the requirements here and what was covered in class.\n", + "\n", + "- B. Contribute your notebook to the Classiq Git Library to the folder community/womanium/assignments. Follow the contribution guidelines in order to contribute - NO need to open an issue for this, you can directly open a PR. The PR title should be: `Womanium Final Assignment - `. The file name should be in the following format: `__hw4.ipynb`." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "7e598bf6-4515-44da-9766-8c845fa57c96", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", + "qiskit-ibm-runtime 0.25.0 requires pydantic>=2.5.0, but you have pydantic 1.10.17 which is incompatible.\n", + "qc-grader 0.19.7 requires networkx==3.2.1, but you have networkx 2.8.8 which is incompatible.\u001b[0m\u001b[31m\n", + "\u001b[0mNote: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "pip install -U -q classiq" + ] + }, + { + "cell_type": "markdown", + "id": "b93714d4-7048-476b-a904-b27a655bc922", + "metadata": { + "tags": [] + }, + "source": [ + "pip install -U -q classiq" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "202628d6-3fe3-47fa-8a15-04b7fd9716f4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "from classiq import *" + ] + }, + { + "cell_type": "markdown", + "id": "9f608bac-c3eb-495e-9015-3e6396c7543c", + "metadata": { + "tags": [] + }, + "source": [ + "# Implementation\n", + "\n", + "Implementation of a quantum random walk on a circle/one-dimensional line graph with size num_nodes. The core components are:\n", + "\n", + "1. **Initialization**:\n", + " - Setting the number of nodes and the size of the register.\n", + "\n", + "2. **Quantum State Preparation**:\n", + " - The `prepare_minus` function prepares a quantum state by applying an X gate (bit-flip) followed by a Hadamard gate (superposition) to a qubit `x`.\n", + " - The `diffuzer_oracle` function modifies an auxiliary qubit based on whether `x` is non-zero.\n", + " - The `zero_diffuzer` function allocates an auxiliary qubit, prepares it in the minus state, and applies the `diffuzer_oracle`.\n", + "\n", + "3. **W Operator**:\n", + " - The `W_iteration` function computes probabilities for transitioning between adjacent vertices in a graph.\n", + " - It uses a control structure to apply a quantum operation to the `adjacent_vertices` qubit based on the value of `vertices`.\n", + " - The probabilities are set to create a quantum walk behavior.\n", + "\n", + "4. **Edge Oracle**:\n", + " - The `edge_oracle` function checks whether `vertices` and `adjacent_vertices` are adjacent and sets the result in the output qubit `res`.\n", + "\n", + "5. **Bitwise Swap**:\n", + " - The `bitwise_swap` function swaps corresponding qubits between two arrays `x` and `y`.\n", + "\n", + "6. **S Operator**:\n", + " - The `S_operator` function applies the edge oracle and swaps qubits if the result is 1.\n", + "\n", + "7. **Main Function**:\n", + " - The `main` function allocates qubits for `vertices` and `adjacent_vertices`.\n", + " - It applies the W operator and S operator sequentially.\n", + "\n", + "8. **Model Synthesis and Display**:\n", + " - The program creates a quantum model (`qmod`) and synthesizes it into a quantum program (`qprog`).\n", + " - The `show(qprog)` command displays the resulting quantum program.\n", + "\n", + "In summary, this program simulates a quantum random walk on a graph, where the walker's position is represented by quantum states. \n", + "\n", + "The W operator updates the probabilities for transitioning between adjacent vertices, and the S operator performs a random step by applying an edge oracle to ensure vertex adjacency and swaps qubits accordingly.\n" + ] + }, + { + "cell_type": "markdown", + "id": "bbe3dfa3-2265-44af-b708-9a0ad189f5bf", + "metadata": {}, + "source": [ + "## Common functions for circles or lines" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "425c8fd2-f8f5-409b-a569-d923819437c4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "# Prepares the minus state for the diffuzer oracle\n", + "@qfunc\n", + "def prepare_minus(x: QBit):\n", + " X(x)\n", + " H(x)\n", + "\n", + "# x: node to check\n", + "@qfunc\n", + "def diffuzer_oracle(aux: Output[QNum],x:QNum):\n", + " aux^=(x!=0)\n", + "\n", + "# Zero diffuser using Grover's algorithm technique\n", + "# x: current node \n", + "@qfunc\n", + "def zero_diffuzer(x: QNum):\n", + " aux = QNum('aux')\n", + " allocate(1,aux)\n", + " within_apply(compute=lambda: prepare_minus(aux),\n", + " action=lambda: diffuzer_oracle)\n", + "\n", + "# probability distribution defined by prob for each node\n", + "# \n", + "# @qfunc\n", + "# def W_iteration\n", + "\n", + "# Iterates over all possible positions and applies \n", + "# the W_iteration for each position.\n", + "@qfunc \n", + "def W_operator(vertices:QNum, adjacent_vertices: QNum):\n", + " for i in range(num_nodes):\n", + " W_iteration(i,vertices,adjacent_vertices)\n", + "\n", + "# Edge oracle for checking adjacency of 2 vertices\n", + "#\n", + "#@qfunc\n", + "#def edge_oracle\n", + "\n", + "# Swaps the contents of two quantum registers \n", + "@qfunc \n", + "def bitwise_swap(x: QArray[QBit], y:QArray[QBit]):\n", + " repeat(count= x.len,\n", + " iteration= lambda i: SWAP(x[i],y[i]))\n", + "\n", + "# shift operator moving the walker if vertices adjacent\n", + "@qfunc \n", + "def S_operator(vertices:QNum, adjacent_vertices: QNum):\n", + " res = QNum('res')\n", + " edge_oracle(res,vertices,adjacent_vertices)\n", + " control(ctrl= res==1,\n", + " operand= lambda: bitwise_swap(vertices,adjacent_vertices))\n" + ] + }, + { + "cell_type": "markdown", + "id": "9761696b-cefe-4ea0-9c91-ebd33af62e22", + "metadata": {}, + "source": [ + "## Circle-specific functions\n", + "\n", + "Here we have the function W_iteration with the probability of 0.5 going in either direction.\n", + "\n", + "What is special about a random walk on a circle is that the node (0) and the node (num_nodes-1) are adjacent. This fact is taken care of in the function edge_oracle." + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "5ab73e30-56fd-4028-bb13-e2f883a4e3ae", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "#\n", + "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", + " prob = [0] * num_nodes\n", + " prob[(i+1)% num_nodes]=0.5\n", + " prob[(i-1)% num_nodes]=0.5\n", + " print(f'State={i}, prob vec ={prob}')\n", + " \n", + " control(ctrl=vertices==i,\n", + " operand=lambda: within_apply(\n", + " compute= lambda: \n", + " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", + " action= lambda: \n", + " zero_diffuzer(adjacent_vertices)))\n", + " \n", + "# Edge oracle for checking adjacency of two \n", + "@qfunc\n", + "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", + " diff = vertices - adjacent_vertices\n", + " mod = diff%num_nodes\n", + " res |= (mod == 1) | (mod == num_nodes-1)\n" + ] + }, + { + "cell_type": "markdown", + "id": "423cf377-1bc7-4637-855c-b82ced39cca9", + "metadata": {}, + "source": [ + "## Circle with 4 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "e39e695c-cc7d-4983-ba7b-2d076262a66b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Circle with 4 Nodes \n", + "\n", + "# Size of the register required for the number of nodes\n", + "size = 2\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "a863aa31-dc65-4ad4-9985-4fca062ab269", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk operator function\n", + "# applies the W and S operators after initializing\n", + "# vertices\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "1427b784-9701-4338-aec2-5cb5566a6d32", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 0.5, 0, 0.5]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5]\n", + "State=3, prob vec =[0.5, 0, 0.5, 0]\n", + "Opening: https://platform.classiq.io/circuit/a285c49b-b33e-4c1e-ab82-62011fb2f008?version=0.43.3\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "22cec3d3-aef0-46c6-9de2-74ee40d81b96", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "write_qmod(qmod,\"random4\")" + ] + }, + { + "cell_type": "markdown", + "id": "0c9a5e9c-ed50-44d1-b9ed-665f96274a92", + "metadata": {}, + "source": [ + "## Circle with 8 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "a5063b48-425c-4d73-8d6e-8b575cc61be3", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Circle with 8 Nodes \n", + "\n", + "# Size of the register required for the number of nodes\n", + "size = 3\n", + "num_nodes = 8\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "d137cf61-e92b-46d4-870e-4d1fc021650c", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk operator function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "94168a88-cdb4-411c-a162-52adf0c622bb", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0.5]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=7, prob vec =[0.5, 0, 0, 0, 0, 0, 0.5, 0]\n", + "Opening: https://platform.classiq.io/circuit/471e56b8-c366-4c74-9a8b-8010c35ebb5d?version=0.43.3\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "7458e3ac-0e87-49e2-9139-59ee31fc27f4", + "metadata": {}, + "source": [ + "## Circle with 16 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "7e7ad59c-80ca-4452-af10-883711c9b104", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Circle with 16 Nodes \n", + "\n", + "# Size of the register required for the number of nodes\n", + "size = 4\n", + "num_nodes = 16\n" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "d3444344-5117-4021-9d15-1476582bf61d", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "d30601d3-5b4f-4b23-af9d-f93d0a4f6777", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", + "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", + "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=15, prob vec =[0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0]\n", + "Opening: https://platform.classiq.io/circuit/e65b9cf2-3330-4af0-b561-beacef62e3e1?version=0.43.3\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "ccfdf941-9d91-402f-a200-ccc266f73e99", + "metadata": {}, + "source": [ + "## Line-specific functions\n", + "The function W_iteration defines the transition probabilities for a line. At the beginning and at the end of the line the walker can go only in one direction (probability = 1). For all other nodes the probability going in either direction is 0.5.\n", + "\n", + "Here the function edge_oracle just has to check whether the vertices are adjacent (distance = 1)." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "47e777d7-6527-4901-a034-951c624037e4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# \n", + "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", + " prob = [0] * (num_nodes)\n", + " if i == 0:\n", + " prob[i + 1] = 1.0\n", + " elif i == (num_nodes) -1:\n", + " prob[i - 1] = 1.0\n", + " else:\n", + " prob[i - 1] = 0.5\n", + " prob[i + 1] = 0.5\n", + " print(f'State={i}, prob vec ={prob}')\n", + " \n", + " control(ctrl=vertices==i,\n", + " operand=lambda: within_apply(\n", + " compute= lambda: \n", + " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", + " action= lambda: \n", + " zero_diffuzer(adjacent_vertices)))\n", + "\n", + "\n", + "# Edge oracle for checking adjacency of two vertices\n", + "@qfunc\n", + "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", + " diff = vertices - adjacent_vertices\n", + " res |= (diff == 1) | (diff == -1)\n" + ] + }, + { + "cell_type": "markdown", + "id": "07488d17-7cac-4e36-8335-e3303cff8efe", + "metadata": {}, + "source": [ + "## Line with 4 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "92d3f78c-ee23-45bf-acba-6d0ff0608847", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Line with 4 Nodes\n", + "\n", + "# Register size to accomodate the number of vertices\n", + "size = 2\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "613c61cc-10ea-4950-a262-3dd572c8701c", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "46fca7f3-3106-416d-a3f8-379f7095f8fa", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 1.0, 0, 0]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5]\n", + "State=3, prob vec =[0, 0, 1.0, 0]\n", + "Opening: https://platform.classiq.io/circuit/c4d4c900-fa62-4e83-b507-74837c228399?version=0.43.3\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "9dd17d8c-83dd-463d-b155-9b8c949f97d1", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "write_qmod(qmod,\"random4\")" + ] + }, + { + "cell_type": "markdown", + "id": "cfbc239f-2bfb-496a-a752-1a84f657ac3f", + "metadata": {}, + "source": [ + "## Line with 8 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "08283335-a49f-4d6e-a702-fb76ab01724b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Line with 8 Nodes\n", + "\n", + "# Register size to accomodate the number of vertices\n", + "size = 3\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "07a57ceb-c1da-47d7-8d6b-45e18667d747", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "fb711141-eadd-4ac5-bb1d-fbd31bb71f8f", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 1.0, 0]\n", + "Opening: https://platform.classiq.io/circuit/47b7f084-71e8-4984-8b58-b6c87f328209?version=0.43.3\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "7b486184-7850-4c58-baac-9e89a942e059", + "metadata": { + "tags": [] + }, + "source": [ + "## Line with 16 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "52ccbff2-f15f-4fe2-86fd-6e1d0128f428", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Line with 16 Nodes\n", + "\n", + "# Register size to accomodate the number of vertices\n", + "size = 4\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "e773bbb1-e532-477e-8891-c47f8f4f1f8d", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "c3833a55-49af-4214-be22-5b52eaa22ba6", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", + "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", + "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=15, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0, 0]\n", + "Opening: https://platform.classiq.io/circuit/89a4226c-20e4-4a24-93a2-1b3d3d6eac27?version=0.43.3\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "4b28d548-febf-43b3-9271-6cab28fd2cbb", + "metadata": {}, + "source": [ + "# Results" + ] + }, + { + "cell_type": "markdown", + "id": "b7d6c2a8-063f-4ffe-bf3c-18212aa1d57f", + "metadata": { + "jp-MarkdownHeadingCollapsed": true, + "tags": [] + }, + "source": [ + "## Number of qubits vs. nodes\n", + "\n", + "| random walk | num_nodes | transpiled qubits |\n", + "| :- | :-: | :-: |\n", + "| circle | 4 | 13 |\n", + "| circle | 8 | 22|\n", + "| circle | 16 | 33 |\n", + "| line | 4 | 17 |\n", + "| line | 8 | 25 |\n", + "| line | 16 | 37 |\n", + "\n", + "Here we see that the more nodes we have, the more transpiled qubits are going to be used. Lines need more qubits than circles." + ] + }, + { + "cell_type": "markdown", + "id": "2d8f26a8-18aa-4dda-a3ed-a3974e0184b9", + "metadata": {}, + "source": [ + "## Circle 4 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "da46948a-5d28-4b8e-8139-27d363b7286c", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXUAAAGFCAYAAAACb2PRAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAABtU0lEQVR4nO3dd3hc133g/e+dPpiK3kmCBAkSJEES7L2LFEWZqlaLN145sa3NZp848b7ZJ9ns7rub18m+8ZuN7ThO4li2Y8WyZHWSkth77wUgwAKCRO/AANNn7n3/gHAFEKCEMuAUnM/zyJYGd+785tx7f3PuOeeeIymKoiAIgiAkBE20AxAEQRAiRyR1QRCEBCKSuiAIQgIRSV0QBCGBiKQuCIKQQERSFwRBSCAiqQuCICQQkdQFQRASiG64G+bk5IxnHIIgCMKXqK+v/9JtRE1dEAQhgYikLgiCkEBEUhcEQUggIqkLgiAkEJHUBUEQEohI6oIgCAlEJHVBEIQEIpK6IAhCAhFJXRAEIYGIpC4IgpBARFIXBEFIICKpC4IgJBCR1AVBEBKISOqCIAgJZNhT7yYKRVEG/LckSVGKRBAEIfImTFLvS+Y6nQ6tVgtAOBwmFAoBIrkLgpAYJkRSVxQFo9HIypUree6555g1axZarZYbN27w3nvvceTIEXw+HyCSuyAI8U1SHmyPeIh4XflIURRMJhOvvfYa3/rWt7Db7WriVhSFnp4eXn/9dX74wx/i8XhEUhcEIWaJlY/orXlv2bKF1157bUBC7/ubzWbj93//99mxYweSJA1qcxcEQYgnCd38oigKFouFV155BavV+tBauNls5uWXX+bQoUO0tLQgyzIAFosFo9EIgCzLdHZ2qu+x2+3odL3FFwwG6e7uBnp/KOx2u9pu7/F4BjTtOJ1ONY7u7m6CwSCKoqDVaklKSlL37/V6CYVCSJKE2WzGbDar36mzs1P98bFarRgMBqC3j8Dlcql/s9ls6PV6AHw+Hx6PR92/0+lEo+n9TXe73fj9fgA0Gg12u139W1+MAEajEYvFou6jq6uLcDislmFfjLIs43K5hixHv9+P2+0eshz7x/hgOfaPUa/XY7PZ1H08LEZFUXC5XEPG2P+Y9S9HRVHw+XxqjH1x9JWj1+vF6/UCoNVqB1QURhPjg8csKSkJk8kEQCgUwuVyDYrxwXJ88Jg9GKPD4VD30T9Gg8GA1Wod8pj1j/HBc99sNqPX65FlmVAopH5WXxx9xywQCNDT06OWY/9zv3+MOp0Om82mVqr6H7P+5fjguW8ymdRr5ovO/QfLsf+5/7ByfPD8iCcJndSh90KYOXMmoVCI+/fvEwgEBvxdp9MxdepUpk2bxvr169m1axc9PT1IksScOXOYOnUqAE1NTRw+fFg96ZcsWUJ6ejoAd+/e5cyZMyiKgsFgYMWKFTidTgAuXrxIZWUlAMnJyWzcuFFNYkeOHKGurg6r1crmzZt58sknSU5OpqmpiXfeeYdjx47h9/uZPn06s2fPBnoT6f79+9XvUVJSwuTJk9UYjxw5QjgcRqvVsnjxYjIzMwG4ceMGly9fVstk/fr1avI4d+4ct2/fVmPcsGEDOp0OWZY5ceIEtbW1AOTn57N48WKg96Lct2+fekE8GOO+ffuQZRlJkpg7dy4FBQUAVFdXc/r0abWfY/Xq1djt9kExWiwWNm7cqP4YXLhwgZs3bwKQkZHBqlWr1IvvwIEDdHR0AJCXl8eSJUvUGPfs2aMmjxkzZlBcXDyorHQ6HcuWLSMtLY3k5GSys7OxWq2Ew2Fu3LhBMBgkGAwiSRLl5eVcuXIF6E0O69evR6/XEw6HOXbsGA0NDQCkpaWxbt06oDep7Nu3T02MkydPZuHChWpZHThwAL/fj0ajYcGCBUyaNAmA1tZW9u3bB/QmnOXLl5OWljbonEtKSmLdunWYzWYUReHcuXPcuXMH6E1ujz32mJowDx8+TGNjo1qOK1euRKPR4PF4OHDggJqEi4uLmTlzJgA9PT3s3r2bcDiMRqNh06ZNrF27lvz8fHw+H4cPH+bAgQM0NzezcuVK9UekrKyMq1evAr0JeOPGjWqiPX36NHfv3lXLcd26dej1egKBAIcOHaK9vR2AqVOnUlpaCvT+SOzatUv9UZo9ezYzZswAoLOzk4MHD+L3+9HpdCxZsoSMjAwAqqqqOHPmDND7I7dmzRr1B+vq1auUlZWp51xfOXq9Xs6fP6+e+/EkodvUFUUhJyeHI0eOIEkSP//5z2lpaRmwjdVq5Q//8A/xeDw8//zzlJeXP7J2dUVRmDRpEn/+53/O5s2b1SQLvTW73/72t3z/+9+nq6vrkcQzkWm1Wnbs2MGf/MmfMHnyZPUckGWZO3fu8Jd/+ZccPHhQ/VGfaPruJrdu3cqf/umfMnXqVLW2K8syd+/e5a//+q/Zs2ePWssWIm84beoJn9SdTifvvfeeWut4mKqqKp555hmam5sfSVJXFAWr1crf/u3f8sQTT6DRaPD7/Xz88cds27YNo9FIMBjkpz/9KX/1V3+lNsUIkacoCqtXr+bHP/6xWhO+cuUKwWCQxYsXoygKtbW1fPOb31TvJCbasVAUhaVLl/KTn/yErKwsJEmirKwMn8/HwoULURSFxsZGvv3tb3P27NmEKh+HwxEzFasJ3VGanp7O6tWrMZlM7NmzB0VRkCRpyH9kWebAgQO0trY+0hjXrVvHli1b1BpPIBDg4MGD6th5vV7PCy+8QHFxMVqtFo1Gk5D/RFNf88W3v/1t0tLS1GaKc+fOqc1mkiSRl5fHq6++il6vj8qxiHYZmUwmvvnNb6oJHaCyspJbt24BvWWUlZXFN7/5TYxG4yMtm/H+AfnKV76iNpnGg/iJdBhycnIoLi7G5XIxf/587t69y5NPPsm//du/sXDhQlauXKkm8j6yLHPx4kV+9rOfqW3Aj4KiKCxbtgy9Xk8wGCQcDuP3+5FlGb/fj1arRa/Xk5KSwu9/+3do7biNwTBOh0sChnO/9uB2o31f/9eBG9fqOHv6OrduVg1jZ5GXkpLCnDlzANRjEAqFCIVC+Hw+JEnCYDCwevUq/uRPv47VoedR1kMV4Mb1Os6dvsatm3cf4Sd/zul0UlJSgqIoBAIBFEUhFAoRDAYHlNGSJYv54z/9Ohab9pGUkSRJ1NW2cuLINa5fuzkuTT/9BzDEg4RK6jt27ODy5cts3LgRn89HeXk5xcXFNDU18d3vfpf/9J/+E5s3b8bpdKq97AcPHuSHP/wh9+/ff+Tx9nVifvLJJ+zbt49wOExFRQX/9b/+V7RaLV//+tcpLS2loEhHYeZ9kiz6Rx7jo7DqGQNP3nqMv/0fpzh7+soj//ykpCT1FvsHP/gBra2t1NfXI8syFy5cICUlhT//8z8nyaJn3rousqc++ucZ1jxr5Kk7W/n+fzsZlTIymUzY7Xa1jNra2mhqaiIUCnH27FkcDgff+c53MCcZmLfGRVZBN5LmEZWRouXZVx/j/V8s4B9/9LZ6pxsp8daPklBJXZIktaYVCATIz8/H7/ejKAr379/nz/7sz3j77bdZsmQJlZWV3Lt3j3v37qm96Y/6Qu1rH3vsscdYu3Ytbreb//W//hd/8Rd/QVJSklpD8MttJGm8yAQfaXyPjOQhY7qHb39nI9f//U08Hu8j/fienh46OjrIyMjgj//4jwmHw7zxxhsYjUa++tWvotFo0Ov19Hh8KBoXMgGkR1pXByQP6dPcfPe/PcnvvViFy/Voh9t5vV46OzvJy8vjT/7kT5Blmd27d+P3+3nmmWeQJAmLxYKrpxlZciHjfXRlJIFkvcb235nJwX2TKb9+J6K7P378eFx1/iZUm/ru3bvJz89HkiQ+/vhj0tLS+PjjjwmHw0iSRCAQ4Nq1a3z44Yfs27ePmzdv4vf7BzXJPAqSJHHixAl8Ph8mkwmHw4HNZkOn02G323E4HOj1elw9rfiUSvT6hDpUg0kB8qYHychIf+Qf3dHRwaVLl9SH0ex2O0ajEbPZrB4XUKhvvYLZ/mh/cPpTpADJOa3k5GY88s/u7OzkwoULahk5HA5MJpNaRn3ju5vayzBae3jUv3lIYHTUsnb9oojv+saNG3H1UGJC1dTv3btHTU0Nt2/fprq6Wh0H20eSJHw+H7W1tTHRO3/s2DF27tzJs88+i1arxWQy8eKLL6oPmIRCAW7VfooltRWNNsGTOqAz+siflEt19aNrCpMkCa/Xyz/+4z9SUlJCTk4OkiSxevVq9SEaRVFo66yl2bOH9MzoHgfJ0EF6RjIVNx7hZ352B/zP//zPLFy4UK04LViwQG2aUBSFru5G6rs/Jn1KlMpIE8DpzIvOZ8eQMZV+RkYGkiSRm5tLYWEhRqOR0tJSsrOzIxXfiMmyTFlZWcz/svYlk+9973u89dZbuFwudDodK1euRKfT0d3TxpVbb+MxfIrNoeHRV32iQSFav7UXLlzgv/yX/0JFRQXhcJiZM2cyffp0QqEgdU3lXLv/E5w5zeh0EtE9FkrUKiRXr17lu9/9LtevXycYDFJQUMC0adMIhYI0ttzk8t0f48iuR6d/9He+fcbjc/s/txAPRl1T1+l0fO1rX2PXrl184xvfoK2tjZqaGjo6Opg9eza/+tWvIhlnxBiNRpKSktQnEKOtqamJP/uzP+O3v/0tv/etV8gt0OAPteKWy0hKaSbNqUHSELVkNxFIkkQ4HGb//v1cu3aN7duf4OkXViHpOnGHqgnrK0nO92M0az/bPsoBR0Hf0N9jx47xyiuvsHnzJp5/ZR2GJA+e4D2C+gqc+T5Mn5VRItmyZQuvv/56xDtgx8uYauqSJFFYWMi5c+f46U9/ypw5c7h8+TJz5syJ2WFAOTk5rFixItphAJ/XKvx+P+fPn6epvQw55UMM2QfJLGjBkdKX0CdgFnnE+sq4qamJkydPICedQ0n7AMekq2RMCmI0awZsNxH1ffeWlhYOHjyAT3cCJfV97JMukzkpgClByyjevs+YG7/65msIhUJoNBo6Ojpobm7+0ic4hV79H4IymQxYbDrMSTq0Ok1UOnAnsr7y1mg1JFmNWGx6DEYtGo0kjsVn1PNVoyHJYpgQZRRvQxrHnNT9fj9Wq5WkpCRCoRBarRar1TpgVrdYoihK3B0kQRCi55133ombpheIwOiX8vJyXnvtNYqKijh9+rQ6R8y9e/fGHNx4qK2tHTAFrSAIwheJlf634Rp1Uu+b5Kimpobvfe97GAwGOjo6eOaZZzh8+HDMDtYPhUI0NzdHOwxBEIRxMeqkHg6Heffdd9XJ9ft8+umng+YsFwRBiFdz5syhvLw8bpptx9Sm3reSS3/d3d3qY/exKDU1lSlTpkQ7DEEQ4sSKFSuiPlPmSMRPpBFit9vV1W8EQRC+TLyN6JlwSR3i7yAJghA9/dfUjQcTLqmHQiEx+kUQhGH78MMPJ9aQxnhTX18/aJ1SQRCEh+nufrTTHI/VhKuph8NhfD5ftMMYFllWqLzW8YWTk7W3+GhtGtt0sF3tfprqPr976X1Aa+QTovm8IcovtxPwx+ZwVmF89a6GJBMMyBGbUK/vXIz1CfpiyYRL6vEkHFbY8/59/L4woZCMIiv4vCH1ovH7wtwq7+T2jS7CIRmvJ4QcVggGZHzeEAF/GJ83RCjYu33ve8PIcu97g0GZgD9M9e1uyq+0A70XUY8ryKlDjYRCcu9nB3v/3+/rfW/ffmVZUT83HJa5eq6Nhlp37xTHn8UZDn/2WYHe9/fF5feFxYWaYDra/Lzz89u8+8s7lF1qV1/vS/Z950woKKvnoqIo6vmgnpcBmUCg91wJhxTOHG7E6w6p75NlRT2flFFUPkZqyZIlcTX6ZcI1v2RkZJCcnKwuKhzrXB0BPnnnPgajhqI5Ti6daUWrlViyJpNDu2vpcQWZvzSdw5/U0dLoY8p0G3X33OgNGhpq3OROtqLRwOwFKZw52oQkSSxamcGn791j0coMKq914vWEmDbToX7m3ZsuPn33Ho5kAyf2NbBkTSZ3KroIBGQWrcrgxL4GbA49s0tTaKjx0FzvYVKhjcprndjsem7f6OTahXb0eg1Ti+xcONnC9GIHdyq60Ok0GM1awiGF9dtyycyNzYnfhJHraOldcGb9E7l0d30+3DkUlNn/YS3uniBTpttpa/bhcQeRwworNmZz4kAD4ZDColUZfPx2Ncs2ZNFw30Nnh585C1LY+0ENNqeBqkoXfm+YwlkObpV3YrHq2fiV/HGfGXLBggVcvHhxYoxTHwmtVsuiRYtIT08nKyuLBQsWoNfrmTdvHrm5uSQnJ7N48WKMRiOzZs2ioKAAi8XC0qVLsVgsTJs2jZkzZ2IymVi0aBFOp5P8/HxKSkowGAyUlpaSnp5Oeno6paWlGI1GSkpKyM3Nxel0smjRIkwmE3PmzGHJkiVYLBYWL16s7nvWrFmYTCYWL16M0+kkNzd3wL4zMzPJyMigtLQUvV5PSUkJkyZNwul0snjxYkwmE0VFRUybNo2kpCSWLl2K1WqloKCA4uJiDAYDixYtIiUlhdzcXObPn49Op2PBggWkpKRgs9lITk4ZVG52p4HHn5tM9a1uDCYtyalGbpd3UXmtgwXL0lm4sncVHGeKEYtNx/ULbWg0Eis2ZmG16Vn9WA7N9V4MRi0paSYaaz24OgNMmW5Hb9BQPD+ZZeuykD47EyRJYsp0O7MXpGC1G5g2y8HUmXZSM0x0dwVoqvOQlZfE4tUZNNZ60OkkLDY96ZlmiuY4mb8sjesX2tn8lXzMFh3Vt1zMLHGSnZfE1CI7JYtTycm3MLnQRn3NwFEFGo2GWcXFJCcnk5eXx7x589Dr9SxYsIDMzEzS09NZuHAhRqOROXPmkJ+fj91uZ8mSJZjNZoqKiigsLCQpKYnFixdjs9mYOnUqxcXFGI1GFi1aRHJyMjk5OcybNw+j0ajuOy0tjfnz56PVasnJyUGvj836jkajZdasWaSmppKdnc38+fPR6/XMnz+fnJwcUlNTWbx4MQaDgeLiYiZPnozVamXp0qUkJSVRWFjIjBkzMJvNLF68GIfDweTJk5k7dy56vZ6FCxeSlpZGZmYmCxYswGg0Mm/ePHJyckhOTlbLKD8vD4PROCC2vAIrcxamcvJAI+2tnz+r0tURoLPDz9ZnJ3OnootwWGbZuiwsdj3H9zVQf89Nd1eQ6lsusvIsFM9LITnNiM8Txt0TYk5pCiazFr1ew5ZnJlF920U4pLB8QxZG08AUlpubq16DS5YswWazUVBQwOzZszEYDCxcuFC9BufNm4fBYFDPgdTU1AHn16RJk7Db7eTk5KjX94wZMwacX5MnT2b27Nnq+ZWSkkJWVhbz58/HYDAMOC4LFy7EYDAwe/ZspkyZgs1mY+nSpZjN5gHHZcmSJdjtdiZNmsScOXPUHNS7AteXe2RnrqIoeDweQqEQsizj9XpRFAWv10swGCQcDuPxeHqbCXw+da1Rt9uNLMv4/X7C4TCyLOPxeAiHwwSDQXU/ffsG8Hg86mf033ff2qV9MfTftyzL6r77Vknvv+9gMKj+e1/cffvq27fP51Nj7L/v/t//YXEbDAYUZXBNQNJI6HQSiqJw/UI7SVYdpiQtdqeBe3e6CfhlUtKNXL/UxtyFqTTXe5Ek0EgSOr0GjQZkReHm9U4kCSxWHYoCWq2EPdnItXOtGIxajKbPazsajYTH3dtMotVK1H120TmcBhRZQauTkDQSsqJg0GvJyDFz/WIb6dm9te7kNCNVN7vocQVIzTCj1fZOCK/RSGi1Elqd9FmZDD5P+sowEAgMOEf6jln/sg4EAoTD4SHPEbfbTTgc/sLy73+O9O1bURS0Gm0MNw0pahn1P4/6vkcoFMLtdqvXUSAQGHQ+ajSaAddR/7LuOx/7/v3B68jr7e2/kSRpUBnVVvfQXO9hapGdimsdLF7VW+EwmXXIYYW7N12YLToCfpn7Vd10tgWYMt2GwahhynQ7NoeervZW2lp8VN9ykZphAkBWes8VV2eAuzddGIxaAn5ZnRmyv0AgMCB39H2/vnj7vt9Q37nvWu5/fYfDYe7du6eec30TAvbPJw/uR6PRDDq/+u/7Ycelb876/nH7fL4BnzcckjLMs7dvoq541/dLfvTo0WiHMoBOp+Ov/+41Fm67jUJvIpLl3mQ8Y46Tm9c7ycwx9zZxOPQUFDm4VdZJOKyQN8VKV4ef7s4A9mQjBoOGzNwktfnl3m0X6dlmyi934Eg2kJWbhM8bJjPHzI0rHQQCMkkWHZdOtyCHFUoWp6EoCunZZiR67wKunm/DYtWRmmlGDis4kg24ugKg9DbXFM1NJhyWMZl16A0arl9oIyXdRGqGiVBAxmDS4vWEMBq1BIO9J6dGI6kXLgDeqfyP/1DG0SOnIlauTqcTv9+vJqPhKJ49kx+8sQWt41rE4ogU2ZfG//wPdzl6+FzE9pmcnIzX6x3RAIKs7Ez+8e3t2HM/XzIyFJSpvNZJZ7ufKTNsnD3SjLsnyIzZTnImWai718OseSkc31ePwahl0lQb02bauXWjix5XkKI5Ttpb/WTnJ1F2oR2NViJnkgV3dxCdXoMsKzTUeJi9IIXWJi85kywYjJ9XRiQM7PvFNL73P388ou+v1WpJSUl56Ki4vh/BWNC3WP0Xic17zHFUV1c3rIIZrr6mnlOnRpeIXnrpJfbu3UtXV9egv2k0EjNLkgHU/1+2Pkv9+7wlaeq/Z2SbB71/ynQ7AIXFTgCW93tvnzkLU4HemmxhsUP9XI1mYA1oyZrMQe+12PQAZOdbBv1t8erB29udhkGvjQdJkti+fTtXrlwhKyuLhoYGampqHslnx5MNGzbQ0NCAw+GgpqaGurq6Me1Pp9cwu7S3CVFRFL7y0hQUeu8aJQ3kTbECkJJmYvpsp/qDPnNusroPm6P3HFmw/PMFyNOzPj+3J03tbYKw2vVjihV6f8y2bt3Krl27WLBgAXv37h1yu1hJ6MOVsEl95syZbNiwgddff31QDSRSt9Y2m40XX3wRk8lEfX09Tz/9NGazmXfffZdVq1aRlZXF7t272bZtG7IsU1tby7lz53j66acJBAKcPXuWl19+GVmWeffddyMS02hJkvTZ+puxbcWKFciyTHt7O7NmzaKzs5NVq1ZRU1NDeXk5Tz75JNXV1WzevJkpU6Zw//59enp62LZtG6Wlpdy+fZt9+/bx4osv4nA4ePfdd0lNTWX9+vU0NTXF7DKMI1FaWorT6aSiooJ169bR0NDAypUrqa6u5vLly3z1q1/l7t27rFmzhqqqKsrKyujo6GD79u3Mnz+fmzdvsmfPHp5//nkyMzP55JNPsFgsrF27loaGhmGVkSR93sz2oKXrBv/gR5LZbObll1/m17/+NU8//TTnzp1j48aNpKWlsXv3blavXo3RaMTtdrN161aqqqrIz88nOTmZr3/965hMJj744AMcDgcbNmygqamJ9957jxdffJGUlBT27t3LuXORu1OKtIRK6mvXrqW4uJhAIMCePXuwWq3qivDjobu7m6NHj5KUlISiKLS2tpKVlcWWLVtIT09n9+7dzJ8/n1u3btHa2sqaNWuYOXMmjY2NTJ06latXr3LlypVR1/InotbWVrZv305nZydNTU288sorHDp0iI0bN6LVauns7OTtt98mOTmZo0ePsmLFCsLhMKtXr+b//J//w5o1a3jiiSfIz8+nrq6Op59+GlmWqampwePxYDYPvuOJN/X19TzxxBOkpqai0Wh4+eWXOXDgAJs3b1abWd5++220Wi03b96kpKQEn8/HqlWr+Lu/+zvWrl2rXkvl5eU8//zzdHd3U11djc/nG3MZjfc0HX6/H7PZzNKlSykqKsLn81FYWEh1dTU7duzA4XDwk5/8BK/XS05ODnV1dTz11FNs2rSJ+vp6rl+/zrRp09i2bRunTp1i/fr11NXVMXv2bHbv3h2zS3X2iZ/Bl8Mwf/58du3ahcVioaWlZcg5G/pGnkRKONw71nbq1KlkZmZSU1ODyWQiFArR1taGxWKhrq6O1tZWoLd2397ezv79+7l58yaKIh6sGIn79++TlpbG9OnTqaysRKfT0dXVxXvvvUdbWxsdHR1qh1RfuRqNRoLBIC0tLZw5cwadTofL5eLmzZvs37+fI0eOEAwG1ZEP8a6trY1QKMTChQspKytDq9Xicrl455136OjooLOzU+2M619GgUCAlpYWTp8+jVarpaenh5qaGnbt2sXBgweRZZnS0lIMhkfTjDZasixz9uxZtm/fzq1bt7BYLHR2dnLr1i327dtHIBCgtbVVnWW2rwwcDgd1dXVUV1dz8+ZNDAYDXV1dtLW1cevWLfbu3UtxcXHMz/KaUEm9ubmZDRs2qEN/hpoa2GAwkJubG7HP7OzspLS0FK1WS25uLqWlperIBFmWOXHiBM899xwvvfQSiqJw8OBBZs+ezdy5c9FoNLhcLpYvXx6xeBKdz+ejvLycpqYm7t+/z6VLl5g3bx5FRUXIsqyO3GhtbWXlypXIskxjYyPt7e185zvf4cUXX+TSpUskJyczd+5cHA4Hs2fPJjc3F41GkxA/sMFgkKtXrxIKhbhx4wZXr16lpKRkQBlB74o+K1asQFEUGhoacLlcfOc73+GrX/0q5eXlmEwm5s6dS1paGnPnziU7O3tc73wjqbKyEofDwfnz5zl+/DhOp5M5c+aoHeeKouD3+3E4HBQUFBAIBDh+/Djbtm3jj/7ojygoKODMmTPqOWI0GlmyZAkGgyHmJwRMqNEvRqOR1NRUvvKVr/DTn/4Us9msDu/q0zdufPfu3RH5TJ1OR0pKCh0dHSQnJw8YNuZ2u8nKyqK0tJT8/HxcLhdvvvkmKSkpyLKs1uT1ej3d3d2DRr9MOMMc/WIymdBoNHg8HoxGIykpKXg8Hvx+P1qtFrfbjdlsJikpSR3iptVqcTqddHd309PTQ0pKCnq9nvb2djQaDcnJyfh8Pjo7OxNi9IvBYMBoNNLd3Y3JZCI5ORmPx4PX68VgMNDT04PRaMRut6tDiPvKyOVy4Xa7cTqdmEwmtYycTqdaRkONfom2/qNfJEnC4XDgcrmQZZnk5GSMRiPt7e0kJSXhcrlQFIWUlBR8Ph96vZ6uri5SUlLQarW0tbWpo2IWLVrEp59+is1mw2g00tHREbU1I6Iy+sVgMKhjih81v99PfX09v/zlLwmHw/T09AzapqOjY8y9/P31Xx5vqGXyXC4XWq2WpqYmDhw4MGg5vb4YdbqE6t4YV/07vv1+Pw0NDYO28Xq9g4Yx9v/v9vb2AX9rbGyMcJTRFQgE1BXIfD7fgDLqe93v9w8axte/jB5cPD6eykhRlAHx919ntP/KbG1tbQPe1/+/w+EwjY2NfPzxx8iyHDdrlY46k2g0GtauXcvp06fZtm0bTqeTvXv3UlpaSk1NDRcvXoxknCPyRWOSOzs7uXLlyiOLxeVy8f777z+yzxMEIbLibUjjqNvUNRoNCxcupLS0lIKCAu7cucPLL79MTU0NGzdujOl2p0RoNxUE4dEwmUxfvlEMGXNHaWpqKrdv3+bSpUs4nU6qqqpwOp1kZQ1+0CUWaLXahBjhIAjCo/Hkk0/GVfPomJO6JA2cf8Hr9dLc3Ex+fv5Ydz0usrOzxWgTQRCGLSVl8ER7sWzMSb2zs5PJkydTVFRET08PFouF7Oxsbt26FYn4Ik6v12OxDH6sXRAEIRGMKakrisLFixdxuVysWbOG3/72t8yaNYv79+/HTU+xIAjCF7ly5UpcdZaOuqEoHA5z+PBhenp6eP3119XX8/Ly2LdvX0SCGw+tra1UVVVFOwxBEOLE6dOnox3CiIw6qSuKwoULFwa9fujQoTEFNN66u7u5ceNGtMMQBEEYFxGfJkDMZTJ64bACxO5Q0PGmEH9jgie22JtlRB5ioZmxSk1Njfg+x1PsHZVxptPpYnLcqSzLNNd7kJSxzxMdr4I+HdXV96MdhjAMHreHcMAa7TAGUMJGGhtrI77fHTt2TKwhjfEmLy+PdevWRTuMQWRZ5uzp68juKb1V1olGNlB320hnhyvakQjD4Ha7uX6+G8LDWzdz3Cnga5/MuVORX1Ber4+vilb8/PxEiCRJMTvT3KkTF3njH7J48VuFGO3tIIWjHdK4k9BA2ErtjUy+/3+/Q0/P4OmShdgTDsv84w8/JCVjByWr7KAdPM/SI6MY8HVk8PO/q6Dixu3oxREjJlxSj2WhUIhf/sturpyfy9z5BaRnOIdcnDmRBPwhqqsaOHH8I9paxTDYeNJQ18L//Z/fZ+68mcycnYPFMrrmmJkzZ1JTUzPk+gdfJhAIUHu/letXz3Oz8s6oPv/LfPLJJ4TD8VPBmnBJvaGhIaY748KhMBfOX+bC+cvRDkUQvlRraxuHDpzg0IHRvV+SJL761a9y4MABdSGZWHP/fnz180y4NnWfz8e9e/eiHYYgCMK4mHBJXRCE2KEoCnV1dVFbdGI48vPzY3rW2QdNuKRut9vJyMiIdhiCIHzm5MmTdHd3RzuMh9qyZUvMDq4YyoRL6qmpqZSWlkY7DEEQPhPLfVxAXCV0mIBJHeLvIAlCIov1xZz7L38XDxI2qSclJZGbm4vZbB7wuizLcXeQBCFRSZLE+vXrcTgc0Q7loT7++GMxpDFaLBYLmZmZ+Hw+Vq9ejV6vR5Zl3nzzTXU+moaGBjEtsCDEEKfTGdOP4Tc1NUU7hBGJ3ZIcheeffx6Px8PUqVP5+c9/Tn5+Pnl5eQO26b/KuiAIQqJJqOYXu93OmTNn8Hq9WCwWFixYwIEDB8SskYIQoxRF4caNG3g8nmiH8lBFRUUx3eb/oIRK6qdPn2br1q04HA6WLl2KyWRixYoVaDSff82UlJRBtXdBEKLn6tWrMZ3U161bF1eDKxKq+eXs2bNcuHCBDRs2cODAgSGHSjkcDoqLi6mtjfwUnYIgCNE2ppp635SURqMRs9mMJEnk5+djt9sjEtxohMNh9u3bF/NjXwVB6GWxWAbcTccalyu+poMedU1dq9Xy6quvsnPnTr797W8jSRKHDh3C6XQSCATYtWtXJOOMGDGkURBihyRJbN68maNHj9Le3h7tcIb0/vvvEwqFoh3GsI3651GSJGw2G3PnzuXWrVv80z/9E+vXr+fSpUssX748ZieWr6mp4fDhw9EOQxCEzxiNxpiuqft8vmiHMCJjblM3mUy4XC5cLhd6vZ6mpiZ6enqYPn065eXlA7a12+1x1YssTEw2mw1NjJ6nkiRhsVhj+mGdkdBoNCQlJWG32wkGg9EOJ6YN9wGoMSf1cDiM2WxGp9Mhy7K68PSDv7w6nY6NGzeSlJQ01o8UhHGVnZOF3qAlFm+4NVotS5cuJcWZE+1QIsZisbB69eqYbeIoLi6moqIi6v10zc3Nw9puzEm9urqa3/md3yEzM5Nbt26RmpqK3W7n5s2bA7YLhUJ88MEHY/24McvMzMTpdFJZGfm1DIXEUDx7JltffgxN7K1PTjgU4tChgxw9fC7aoUwY3/rWt3jrrbfi5k5i1EldURTcbjcVFRX8/Oc/x263U1ZWxtatWzl79uyQnZGx8BCQ2Wxm2rRpVFRURDsUIUYpihLTa3/33Q0Lj4aiKGorRDwYdVIPh8O8+eabhEKhAbXe8+fP09XVFZHgBEFIfOnp6XR0dMRs80tTU1PcJHQY4zj1zs7OQa/dv38/ppO62+2O2aFTgjDRSJLE2rVrY7rjd9euXWKWxljW3NwskrogxBCtVhvTo+Ji9Q7iYWJ3cOg4ireDJAiJLBwOx3TzRjzN+wITMKlLkhR3B0kQEpWiKBw5ciSmm2wfe+yxuMoZEy6pZ2VlsXjx4miHIQjCZ1paWmL67nnSpEkx3Tz0oAmX1E0mE6mpqdEOQxAEYVxMuKQuCEJsmTZtGiZTDD7p9Zm7d+/GdJv/gyZcUu/s7KSxsTHaYQiCQG8f16JFi7BardEO5aH27t0bV0MaJ1xS7+jo4MKFC9EOQxAEYVxMuKQuCEJs8fl8UZ8s64vE2ySEEy6pS5IU03M3C8JEoigK+/btG/Lp9Fjx9NNPo9PFz3OaEy675eXlsXbt2miHIQjCZzweT0zX1GO5vX8o8fPzM0IzZ86kuLiYy5cvU1VVpb6u0+ni7nZKEGKZRqPBYDBE7Q44EAwQCsbuOPdHLaGS+syZM5k/fz5dXV00NzfT1dXFqlWr4m5IkiDEA0mSmFFUwI5n1zKl0InRNMqkLkkw2utTgqYGF8cO3OTooXO43Z7R7ecLnDp1KqbvJB6UUEl98+bN7N+/n61bt3Lq1Cm2bNkyaGL71tbWATV3QRBGZ+HiOfy372/BnnsLWaqDKM1CX4DEqidmsPTdIv7qf/wCvz+yC8tfvXo1ovsbbwnVpu7z+cjLy8NsNrNlyxZaW1sxGo0DHvHt7u7mxo0bUYxSEOKfTqfjD/74SWy5ZchSNxACwlH6J0RId4dVTyiULCga/y8f4xIqqb/33nu43W6CwSBHjx6lp6eHDz/8MK5unQQhHjgcdpzZLhTJH+1QVFpLPctXlER8v8nJyRHf53hKqOaXtrY2Tp06xb1792hoaKChoWHQNn2LZHd3d0chQkFIDHqDHknjjXYYA0lhrFZnxHe7Y8cO3njjjZiedKy/UdfUJUli+vTpaDQaSkpKWLVqFVarlbVr1zJ16tRIxjgiiqJQV1f30L9nZWWxbNmyRxiRIAjxzGg0RjuEERl1UtdqtezYsYOSkhKef/55ZsyYwSuvvIIkSWzevDmSMUacwWCIdgiCIMSJeGu+HXOben5+PpcvX+a9995j8uTJlJeXU1BQELNrDvatDC4IgjAchw8fnlgTemk0GnU5Ko1GQ1dXF42NjcyYMSMS8UVcc3MzFy9ejHYYgiDEiVu3bsXVcy5j7ij1eDxMmjSJ1NRU/H4/RqORtLQ06uvrIxFfxHk8HjyeyD+gIAiCEAvGXFO/evUqubm5fOMb32Dfvn1MmTKF7u7uIUeeCIIgxJucnJy4Ws5u1DV1WZYpLy+npaWF733ve0iSRCgU4qmnnuLAgQMx225ts9nQ6/W0t7dHOxRBEOLAE088wc9//vPEH9IoyzIff/wxsiwTCoUIBoMoisKuXbu4dOlSJGOMqLS0NDGkURCEYYu3qboj/vDRg3OtxKJ4upUSBCG6/P7YeWp2OOLrJyhC4qknWxCE6Prwww/jpukFEmyagOGoq6ujtbU12mEIghAnOjo6oh3CiEy4pB4IBAgEIjs1pyAIQqyYkM0vgiAIwzV//vy46iyNn0gjJDk5mby8vGiHIcQZvz9MMCgTDITxeUOEwzI+T2TaWRVZIRSMzSHAI6EoCj2uAB2tPsKhyHwfRVEIBuWo9oMtXbo0rpL6hGt+cTqdzJw5k9ra2miHIsSRiisdhMMKPm+IxloPpcvTqbnbw+rHcoDe5NPZHkCRFZypRjrb/YRDCjaHAb1Bor3FT5JFh1Yn0eMKYrHp6XEFMZq09LiCXDrdwmNPTaLbFUCSJOxOA64OPxqNhCMlPmYJbKrzsu+jGmx2PblTLCxelQn0lo3XE6bHFSA5zUTAF8bjDmE0abE59HR1BJBlBbvTQFd7AL1RgyIrBAMyFque/TtrWLUpG4NJi7s7REq6EU9PiGBAxplqRKsVo9n6m3BJHeJv3KkQfWmZJq6cbSXgl+lxBbl9o4u8KZ+vMl93z82J/Q3odBKzS1PZ+Zu7LF6dSVe7n6y8JJrqvAT8YbLzLdyp6GJOaQp19930dAWZPN1G+eV2CmbYuXGlA0VRKJ6fwv6Patj0lfy4SeoBfxidTmL+0jSMJq36ut8n88lv72FK0mKx6enuDKDVaXB1+lm0KpOLp1qQgOIFyex9v4YN2/OovdtDZ4ef6cVOblxup3CWg2sX2kmyaHEkG6m+5SI738KaLTlotdqHBxUB8bb2wiNL6lqtlnXr1lFRUYFer2fKlCmcPHmSpUuXUl9fT09PDyUlJZw4cYI5c+bQ09NDXV0dy5Yt49SpU0yZMgWDwcCNGzdYvnw5V65cISUlhbS0NC5cuMDy5cu5efOmOs/76dOnWbhwIQ0NDbhcLubNm8fJkyeZOXMmycnJOBwOlixZwtmzZ5k0aRImk4ny8nJWrlzJxYsXcTgcZGVlqfu+ffs2AIWFhZw8eZLFixfT3NxMR0cHCxYs4Pjx48yaNYtgMEh1dTXLly/nzJkz5ObmYrFYuHbtGitXruT69etYLBZyc3M5ffo0y5cvp7q6mmAwyKxZszh58iTz58+nvb2dlpYWFi1axMmTJ5kxYwaKonD79m2WLl3KxYsXycrKwm63c+XKFVasWEFZWRkmk4lJkyZx7tw5lixZwr179/D7/RQXF3PixAkWLFigTrq2cOFCTp8+TWFhIdA7cdHKlSs5e/YsGRkZpKSkcOnSJVauXMmNGzcwGAzqcVu2bBl1dXW43W7mzp3LsWPHKCkpGfK46fV6KioqWLFiBZcvXyYlJYX09HTOnj3LypUruXXrFpIkUVhYOOi4zZ8/nxMnTjB79mx8Ph/3799Xj9vkyZMxGo2UlZWxcuVKLl++jMPhIDMzk4sXL7Js2TJu3boFwPTp0wcdt75zori4mEAgoB43l2vwaIeUNBMNtR4yss1MLrRRVemidHm6+vfauz0sWJaGTq+h8lon5iQdqzdn884v7nD+eDPmJB3driCpmSbmL00jNaN3f00NXkpXpDO1yEFddQ+LVmXgdYcou9hOdr6FWfMGrrqj1WpZvHgJtypr1WN96tQpli9fTk1NDV6vlzlz5nDs2DHmzZuHy+WioaGBpUuXcvLkSaZOnYpWq6WyspIVK1Zw6dIl0tLSSE1N5fz586xcuVK9RgsKCjhz5gyLFi2itrYWt9utnqNFM2ZgMpsHxJaebWbFhiwqr3WiM2jIzrcA0N0VIBgM8/gTk9n55l1sDgOly9O4eq6N88eaqL/vxp5soLXRx6RpNqbNdNDS6KXzdgC/L8y0mQ50Og0Op4GVm7PZ90ENOr2GhSsz0BsGVtCmTZvG3Llz1WN59uxZ8vLysFqtXL58mZUrV1JWVqZeg2fPnmXZsmVUVVURDAYpLi5Wr8GOjg5aWlro6enBZDJRVFSELMvcvn2bZcuWcf78ebKysnA4HFy9epUVK1Zw7do1zGYzkydP5vTp0yxbtkw9Lg9egw0NDSxZsoQTJ04wbdo0NBoNN2/eZOXKlVy4cEE9LhcuXGDFihVcuXJlWLn2kSV1WZapqKigs7MTSZLw+/2EQiFu3bqFx+MhGAxSXl5OIBDg7t27hEIhvF4vZWVleL1eamtr0Wq1+P1+bty4QXd3N4FAgM7OToLBIJWVlXR1dQFQWVlJIBDg9u3beDweAoEAN27cIBAIcP78eSRJwuv1Ul5ejtfrpa6uTt13eXk5PT09BAIBenp6htx3MBjk9u3beL1e9T2BQIB79+4hy7Iat8fjob6+Hp1Op8bQ1dWlTioWCoW4efMm3d3dyLKsxnjnzh38fj8+n4/y8nL8fj/3799HURR8Ph83btzA7XbT0NBAa2srgUCAiooKurq66Onpwe/3EwgEBu07GAxy584dgsEgHo+H8vJyNVFC70MWZWVluN1uGhsb6ejoIBgMqsdNo9EMOG59SweWl5cTDAYfetz63ldeXq4et66uLkKh0Jcet76yra6uJhwODzhufedE33bd3d34/X71M77suPWVd3V19YDjlpaWMuj8NSVpCfjDpGWacaYYuXCiBbvToLb1ZuaauXS6Fb1BQ36BjQsnmzl9pAmA4gWpKLKCzaFHUQAJqipdKApYbTq0Og0drT6mzXRw7VwrYRkKiuxUVXYNeR1VV1erx9rn86nnUU9PD+FweMDxCAQCeDweysrK8Pl81NbWqtdf37keCoXo6OggFAoNONZ9I8X6jnXf54TDYdra2ggGg/RfmaChxsO18204Uw10tvnVsrHYer/3uWNNOFMMeNxhrp5ro7nBy7wlaZjMOrLyk8jINtPW4qOjzc+9292kZpg++84QCim0t/o4f6wJm0NPMBBGYvCDhC0tLdTV1anXjsfjoa6uDr1er57Lfddg3/lbWVk56BqsqqrC7/fj9Xq5cOECPp+Pe/fuqddg374bGhpoa2tTr2+Xy4Xb7Vavk/7Hpf81GAgE1POt77j0XYP9j0tnZ6d6nbjd7mHlWkkZZg9ETk7OsHYoCNnZ2SiKgtVqpaamZkxP5EmSNKpOsr735eXl0d3drSb34SiePZMfvLEFrePagNfbW32YzDp0Oomu9gCurgAn9jeg1UqsfTwXAFlWyMxJ4sf/z1W+8lIBWXkWjCYt96u6sdj0WGw6NBoJjUai5m4PVpue1AwTjXW9dwEtjV40GonM3CS6OvykppsGJC7Zl8b//A93OXr43JCxazQaioqK1GTQ0tIy4rLr80Vln5WdyT++vR177t3PY5MV6u+7cXcHSc0wcfiTOtzdIYrmOima46S12Ud+gZVDu+tIyzSRP9VGZraZxjoPHneI3MkW3N0hnCkGaqp70EgSyWlG/L4wkkZC+uwYTJpqw9UZwJliRKf/vKYuYWDfL6bxvf/544d+p6lTp9LV1UVycjJ37tyJSgdsX7lOnz5dvUsfruHMfpvQbeoajQZFUcQTpONIq9Wqk7lJkoRWq2Xt2rX4fD6am5tpbGwkGAwOmHdfp+s97fq/R5Z7Rzj0tY/KskxpaSkFBQX89re/VT+v/zHt+/cH36/RaHjxxRc5c+YMBoOBUCiEy+VCp9MRDoeRZXnIuBVF+cLFEFLSTOq/p2ebSc82M23m4MVgQiGZ2aWpFBY71deG2m7G7M//PnmaDYBJU23qa2kZ5gffMoAkSYO+k8Vi4dVXX+VXv/oVbreb1tbWAd9tqPf0lUPfvyuKgl6v57XXXuP1118f8IOo1WoJh8NoNRp4oJas0UgD+hme+3rhgL8nf1Z+OZMsTC604fysr6CvmQbAZO49N6YU2tXXbP2KLiW9dx9pmV9eNg9+b71ez3PPPcfhw4fR6XRUVVWp59tQ54FGo0Gj0bB8+XJOnz6t5hFZltm+fTstLS2cOnWq3/fXIMsykiSpP8R9570kSWg0GhwOB1/72tf40Y9+RGZmJjU1Nep7+l8fD8bQ97fhSKikrtFoMBgM6gn78ssvU19fz4EDB9Rt0tPTyc7O5urVq1GMNDHk5OTw9a9/HZPJxM6dO0lKSuLxxx8nLS2N3bt3s3jxYhoaGnjyySdJTk6mvLycCxcu8PWvfx1FUXj//feZNGkSpaWluFwujh49yksvvURTUxPt7e1kZWUxefJkDhw4oM6quXbtWrRaLW1tbRQVFeH3+5k3bx6dnZ1cvnyZZ555hosXL7Jx40asVisul4uysjI2b95MYWEhTU1N7Nq1i1deeYWkpCQ+/PBDMjMzWbp0KS6Xi5/85CdjLhedTsOWpyeNeT9fRKPR8Nxzz1FUVERPTw+/+tWv+Na3voVeryc9PZ0pU6bgdruZNm0ay5YtIxwO8w//8A9s375dLYePP/6Yl19+maSkJD766CO2b99OZ2cnVquVw4cPs2HDBioqKvj000/VO69vfetb/NM//ROvfuMb2O2jW5dg3pK0CJfGYCtXrmTDhg1IksQ//MM/sHHjRubMmcO0adM4fvw4y5Yto62tja9+9asYDAbefvttMjIyWLduHV6vl3/913/lmWeeIS0tjUmTJjF16lQKCgoAOH78OFu2bKG5uZlLly7h8/kAeOWVVzh//jyFhYUEAgFmzpxJamoq586dw2q1smDBAmpra9m0aZPa3l5bW8tLL72E0Wjk9OnTdHZ2snXrVhRF4ac//SnPP/88KSkpXL9+nXfffXdY3z2hhoE88cQT/O7v/i6vvfYaxcXFTJkyBfMDnTlWq5X8/PwoRZh4GhsbCYfDrFq1ik2bNvHTn/6U48ePA70zYur1etra2mhsbGTdunVs3ryZY8eO8bOf/Yz09HSeffZZWlpamDt3Lvn5+TQ3N/Pmm29SWFjIsWPHOHfu3IBpku/cucOiRYtYtmwZ7e3tPPXUUzQ0NFBSUkJBQQE3btzg17/+NZcuXeL48ePYbDYmTZpEcXEx3//+9ykvL2fjxo1kZmbS09PD5s2bmTp1Kg0NDdy6dStuRkZJkoTb7ebevXssWLCA1atX4/F4+PGPf0xHRwdWqxWr1UogEKCmpoaioiLmzp3LzJkz+cEPfsCNGzfYtGkTKSkpdHd3s3nzZqxWK++88w6SJNHU1ER5eTmnTp1Sa4h9bcMrV64kOTl52G280RAMBqmtrSU/P5+SkhIWLlzID3/4Q8rLy9FoNKSlpaEoitqcsXr1ajZu3MjPfvYz9u7dy7Jly5gzZw6tra1YLBacTidHjx7l0KFDagfy8ePH1YQOUFVVxYoVK5g3bx5JSUnMnTuXxsZGNm7cSGpqKgcPHuTNN9+krKyMs2fPkp6eTmlpKa2trfzwhz9ElmVeeukluru7yczMZP78+eTn53Pt2jVaW1uHPRFhfJzBw1RQUMDu3bvR6XQ8/vjj6kiYeLlQ482MGTOw2+1cu3ZtwG18/9vErKwsiouLOX/+/IBmGJ/Ph8fjwev1cvnyZf7lX/6FtrY2PB4Pfr8fSZIGNA/0aWxsxGKxMGXKFCoqKvB6vVy5coXXX3+d5uZmvF4vwWBQfS+g7quvGUZRFKqrqzl48CC7du3i8uXL3L17lzVr1sTs2roPSkpKYu3atVy5coX29na1WaT/OgZ6vZ5169Zx+/ZtGhoa1GaqUChEV1cXiqJw9+5dDh06xAcffEAwGMTn8w1ognrw2jl16hQvvPACZWVlhGN0kqu+JsDa2lru378/oEml/7lZWlqKRqPh6tWr6mL0oVCI7u5utT/i5MmTnDlzBlmW1XOzrxz7mhH73Lhxg9LSUoLBII2NjTQ1NXHmzBl+9atf4ff71cERfc08gNrsEgwG6e7uJhwOc/36dX71q19RUVHB3r170Wg0rFmzZtDnPUxCZbuqqiqefPJJLBYLP/nJT/jkk08oKysbcKK73e4RdZoJD9fU1EReXh6LFi2iu7ubI0eO8NprrzFv3jx1ycDOzk4AduzYgdvt5ujRo6xfv57XXnsNv9/PkSNH2LJlC0uWLMHv9+NyuQiHw7S3t9PY2MjUqVMpKioiLy+PvLw8jEYj58+fp6Kigrq6Oo4dO8a2bdtYtGgRfr+fnp4eFEXh3r17rFy5Eo/HQ21tLXfu3OE//+f/zIoVKzh27Bipqals3boVp9NJVlYWixcvpqurK6Zrn/35/X7q6+t59tln0Wq1lJeX43Q6+YM/+AM1eYXDYe7du8fWrVux2Ww0NjZy9+5d/uiP/ogVK1Zw5MgRsrOz2bJlC8nJyXR0dBAOh+ns7MTv99PQ0MCmTZvIz88nLy+PrKwsKisr6ejoiOk1E/pGCK1fv5709HRaW1u5du0af/RHf0ROTo7aMVlbW0tRURGLFi2is7OTY8eO8fu///s8++yzXL58GbfbzeOPP05NTY1aJn2jq+7du8fixYuZMmUKeXl55Obm4vF4uHXrFufPn+f69eu43W6eeOIJJk+eTHd3t1qR6e7uZs2aNXR0dHD58mVycnL4zne+Q0pKCjt37mTt2rWsW7cOSZIoKSlhxowZ1NbWDnvx64Qa/aLRaDCbzTz99NO8+eabagfEg6sw9XVoCGNnNBpRFAVZlgmHwxgMvcP8srOz+eM//mO+973v0d7erpZ5MBjEYDCow+o0Gg16vV59v0ajIRQKodfrCYVCGAwG1q5dS0FBAYqicPr0aa5fv67WcPr3o/R1SPW9rtPpkGVZPQ/6hrWFw2H0er06bK/vb33xPWz0SyzoP/pFq9Wq3zEUCqHT6dBoNGi1Wl577TWuXbvGgQMH1I63vjulh5WDTqcjGAyqHalarZacnBwee+wxtFotXV1d6jS0aWkp/OSB0S/R1n/0S9/3VBRFnTZXr9cDsGTJEjZs2MD3vvc9tbO9//nbdx7odDp1OHL/nNHXmWw2m9m2bRspKSmEw2E+/fRTGhsb1XOu//v73iPLshqXJEkEg8EBxwBQr6G+Y9J3XMLhcHRGv9hsNnWc9KMmyzJut5tf//rX6gEY6jdLJPTIeXC4Yt9/y7LMv/7rv9LS0jKovPufG7IsD9hH37Z9tSm/38/evXvVJpgHj6csywPaNfu//uA52L+m038YmaIocbcQAqD+kPXp+056vZ7Tp09z9erVQds87D39/70vCYZCIe7fv8/PfvYzYGDZx/p4sgfPK0Bt1uvu7uYXv/jFkEMJ+78nFAqpFYyhtnW73fz2t7996LnZ9/4HPbivB/97qBhGYtRJXaPR8PTTT7Nv3z6+9rWvYbPZ+OijjyguLqapqYljx46NdtdjJpJ29NXU1FBTUxOx/YlhqcMXDAY5ceJExPaXSGWvKAqXL18e0Xu2b9/ORx999NDmj1grn1G3qWs0GgoKCli4cCGKovDxxx/z7LPPcuPGDdatWxeznZPZ2dksX7482mEIghAnMjIy4moJzDFnXrvdTn19Pffu3SMpKYmamhp0Oh2TJo3vON3RMplMpKQMfgxcEAQhEYw5qfc92df3S+b3++ns7CQ1NXXMwQmCIERbRUVFzDWxfJExd5Q2NzezYcMGvF4vLS0t2O12MjMzqaysjER8EedyuWhqaop2GIIgxIkjR45EO4QRGXVS7xsq1DeVampqKm+++Sbz58+noqKCnp6eSMYZMW1tbXG3kKwgCMJwjTqpy7LMzp078fv9fPzxx+rrubm53LhxIyLBjRcxOkYQhOEym814vd5ohzFso25TVxRlyKkrz58/H9NLxen1eozG+FhJRhCE6Hv66aeH/Yh+LIjNcYfjKDc3VwxpFISIiL1EFw5Hfj4am8325RvFkAmX1CVJwmKxfPmGgiA8VLerm6DXAsTO+G0llERd3f1ohxF1Ey6pC4Iwdl6vj9OHmiCYTEyM9lMkuhsnc+Lo9Yjv+ty5c3HVDxd790/jrL29nfLy8miHIQhxTZZlfvaTj3CkPM2a7RlI+q4HF0IaNkmSQFFGPZ+MEjbRXuvgh//PCarvRr4/7+LFixHf53iacEm9q6tLTL0rCBHQ2dnN//4f7/DGv2RTVDwZS5Jl5DN9SRILFy7sXSTd5RpxDIFggLqaZqqqamhpbh3x+xPRhEvqgiBEjtvt4WblHW5W3hnV+yVJorXJw7lz52K2suVwOGI2tqFMuDZ1s9lMUlJStMMQBIHeodGHDx/GNYpa+qPy1FNPiSGNsSwzM5NVq1ZFOwxBED7z4BKIscZkMkU7hBGZcEm9b5UbQRBiQ996nbFqpItURNuES+qCIMQOSZJYtWoVdrs92qE81J49e4a9PmgsiJ+GoghpampSF0UWBCH6srKyMBgM0Q7joWJ52pOhJGxST01NpbCwkPb2dm7fvq222Xk8HpHUBUFIWAmV1NPS0igsLKSrq4upU6diNptpamqK6U4YQZjIFEWhpqYmphf+njx5Mvfv34+bPJJQberPPPMMFouFJ598ElmWKSgoYP78+QPWF7RYLGI5O0GIISdPnqS7uzvaYTzU1q1bY74zt7+ESuoGg4GGhgZCoRCtra3s3LmTgoKCAQckIyODxYsXRzFKQRCE8ZNQSX3fvn3MmzcPk8lEZ2cnJSUlHDp0aNCQpHh6kEAQEp1erx9wNx1rAoFAtEMYkYTKbpWVldy6dYsFCxZw+/Ztbt26NWibcDhMMBiMQnSCIDxIkiQee+wxTp48GbPLTH744YdxNVZ9TEnd6XTS1dVFamoqBoOBlpYWZsyYQXNzMy0tLZGKcURkWebChQsP/XttbW3MnjyCMBFZrdaYbrNub2+PdggjMuqkrtVq+frXv87OnTv55je/SU9PD+Xl5fj9fubOnctvfvObSMYZMbIsx3SnjCAIwliMuk1dkiR0Oh1FRUVcvHiRn/zkJ5SWlnLp0iXmz58fd/MlCILw6CmKwrVr13C73dEO5aFKSkrQaOKn+3HMbeoGgwGfz0cgEECr1dLW1kZrayszZ87k8uXL6naSJJGVlRX12yybzYbD4Yi7p8SERycrMxNtjF7EkiSRlp5OXl5etEOJmO7ublJTU6MdxkM9/vjjdHd3R70vbrgdtmNO6oFAALvdjtFoJBwOo9FoMJlMg57a1Gq1lJSUYDabx/qRY5KRkUFubi6XLl2KahxC7MrLy0Gn0xGLXWMajZYZ02cgB2P3sfpEk5eXR2lpadTnf2lraxvWdmNO6jdv3uSb3/wm06dP59KlS+o8DlVVVQO2C4VC7NmzZ6wfN2YFBQUUFxeze/fuaIcixKji2TPZ8Y0taKNb/xhSOBzi5MkTHD18LtqhRIzdbsftdkc9aT6M1WqNqxEwo07qiqLQ0tLC3bt3+f73v4/JZKKhoYGnn36aY8eOxWwB+P3+mH4kWRAmEkmS2LBhA0ePHo3ZUSbvv/9+zOazoYw6qYfDYd566y3C4TDNzc3q6/v378fr9UYkuPHQ2Ng47NsYQRDGn9FojOmOyFjuxB3KmJpffD7foNdi9de2jyzLoqYuCDFEluWYnixLo9Egy3K0wxi22P15FAQh4SmKwunTp2P62ZH169dHfdTeSEy4pJ6WlkZJSUm0wxAE4TM1NTUxPb9KYWFhTM9N86AJl9RtNhv5+fnRDkMQBGFcTLikLghCbMnMzIzpxeAbGhpius3/QRMuqXu9XlwuV7TDEASB3iGN69atw+FwRDuUh/roo49idgz9UBJq6t3hEEMaBUFIZBOupg5EfQ4HQRA+Fw6HY7p5I5bH0A8lvqKNAI1GE3cHSRASlaIo7N+/n87OzmiH8lBPPvmkGNIYy/Ly8li6dGm0wxAE4TOdnZ0x3WadlZUlhjTGMq1WS0pKSrTDEARBGBcTLqkLghBbioqKoj4l9xeprKyM6Tb/ByVsUk9LS+Oll14iOzt7wOsul4vq6uroBCUIwgCSJDFv3jwsFku0Q3moI0eOxHTz0IMSakjj0qVLmTdvHh6PB71ej8vlGjRjZFtbmxjSKAgxJNbbq+Oplg4JVlNftmwZe/bsITMzk5ycHCRJ4rnnnhOjXQQhhsXyAhnQOzVwPEmobNfR0cGyZcswmUxUVFRgMBgGTZmp1+vR6RLqBkUQ4paiKBw4cICurq5oh/JQTz31VFzljPiJdBjeeecdcnJyyMjI4NNPPyU9PZ3W1tYBiT07O5upU6dy+PDh6AUqCIIqlhfVAXA6ndEOYUQintS1Wm3UJr33eDzcvn2bX/7yl7jd7iFXLNFqtTHdKSMIE40kSTHdbh3LsQ1l1M0vkiSxbNkyDAYDW7Zs4atf/SqZmZls2bKFOXPmRDLGERMTdglC/CgtLY3pitaJEycmxspHWq2WVatWUVpaSmlpKT09Pbzyyiu0tbWxadOmmO3Rbm9v58aNG9EOQxAEeiuHhYWFMT1OvaysbGIk9T4ZGRlUVFRw4sQJ0tPTuXXrFunp6aSnp0civojr6uqiqqoq2mEIgiCMizG3qT/YHuZ2u2lqamLKlCk0Nzerr2u1WtasWYPJZBrrRwrCuMqflIvBoCcWB9lptVoWL16CxZwW7VAiQpIkpk+fjizL9PT0RDucISUlJeH1eqPett7R0TGs7cac1F0uF8XFxUyePBmPx4PZbCYrK2tQbViWZaqqqqI+NMhoNKLT6YbsRBUEAFkOEQ7boh3GkGRFoba2lps3b0Y7lIiprKyMdghf6IUXXuDdd98lFApFNQ6fzzes7cacYS9evMicOXPYsWMHH3zwATNmzBhyIQpFUbh3795YP27MCgoKmDZtGvv37492KEKMMpr0hMPFxOJkq4os09BQz507d6IdyoTR1tbGnTt3op7Uh2vUSV2WZU6dOoXL5eJHP/qR+vrjjz/Ovn37on6r8kXi7QkxQRCiJ5Zz2VBG3VEqyzInTpwY9IX37NkT06NLFEWJq55sQUhkkiSxYcOGmF6j9NNPP43paQweFPEG7lhPmHV1dXg8nmiHIQjCZ9LT09Hr9dEO46Hu378f7RBGJKHmfhmOYDA4YFSOIAhCIplwSV0QhNihKApVVVXDHtkRDVOmTInZhymHMuGSutVqJTc3N9phCILwmfPnz8fsGHWATZs2iYWnY1l6ejrz5s2LdhiCIHwm1keXxFNChwmY1CH2V1oRhInEZDLF9DUZDAajHcKITLikHgqF4mp4kiAksr4hjbE8Z/nOnTvjKmck1CIZw9HQ0BDTq6wIwkRjs9liuomjpaUl2iGMyISsqYv51gVBSFQTLqkLghA7FEXh6tWrMT3B3qJFi+Jq8fr4iTRCHA4HBQUF0Q5DEITP3LhxI6bXKV24cKFI6rHAbreTmpqK3W4f8HpKSgrFxcVRikoQBGF8JVRHqclkwul0EgwGmTFjBgUFBWRkZPCjH/0ornqvBWEisdlseDyemL1Gu7u7ox3CiCRUUn/mmWfQ6XRkZWXxt3/7t1itVm7fvj3gZAkGgzH9SLIgTCSSJLFlyxYOHTo0aA2GWPHWW2/F7A/OUBKq+SUtLY1Dhw7h8/kwm83MmDGD69evD9imtraWkydPRilCQRAepNVqY/rho3hK6JBgSf3SpUs8+eSTOBwOMjMzKS8vH3Ka3VjulBEEQRiLhErqx44d45/+6Z+4fPkyVVVVHDp0KNohCYLwBRRF4dixYzH97MiGDRti+uGoB40pqfcN89FoNOqXzszMJCkpaeyRjVI4HGbnzp0PXawjJydHTOglCDGkvr6eQCAQ7TAeavr06THdPPSgUXeUarVa/t2/+3fs3r2bb37zmxgMBj799FOys7Pp6elhz549kYwzYoxGI3l5eVy5ciXaoQiCIETcqGvqkiSRmprKvHnzqKur4xe/+AVbtmzhypUrrFq1Cp0uoQbWCIIwTnJzczEYDNEO46Hq6+tjfnrg/saceZOSkujo6KCtrQ2j0UhDQwN+v59p06ZRWVk5YFuz2Rz12xhJkujp6YlqE5EQ23qngo12FA8hSRiNxoQ5fyVJYt26dRw5coT29vZohzOko0ePYjQaox3GsEfhjDmpy7KM0WhEo9GgKArhcBi/34/JZBr4QTod27Zti/rJKEkSGo2GSZMmRTUOIXZl52RiNGiIxVm0dVotq1atJisjMaa6kCSJhQsXYrfbY3r1o1gw3LWVx5zUa2pqeO6557BarVRXV5OSkkJKSsqgWnooFOLDDz8c68cJwrgrnj2Tx17aiMb05ds+aqFQmMNHDnPs8LlohxIRGo0Gj8fDsWPHYvbhI51ORzgcjnoTzHA/f9RJXVEUvF4vZWVlaDQanE4n58+fZ926dVy8eHHIpzZDodBoPy5itFotiqI8dHSMIIRCIWK3CVUhHArFxLUUKfv376e7uztmH/LZunUrn3zySczG96BRJ/VwOMzbb79NMBjk4sWL6us3btyI2bYxgOzsbPLy8jh9+nS0QxEEAejs7Ix2CF8oNzc36n2BIzGm5pehVgS5devWWHY57vR6PampqdEOQxAEYVwk1BOlghAJgUAgZm+1tdhQlMS6bIuKijCbzdEO46GuXbsWV821iXV2DENPTw+1tbXRDkOIYa0tbfi6LRBr7eoK+N0mau83RDuSiJEkifnz52OxWKIdykOdPHlSJPVY1tLSIp4mFb5Ql8vFsT3NSMHc2EnsCkhyKqf2d1NX1xjtaIQYJh77FIQHKLLCT374GwLBbWz76gKM1u7oPoyk6Aj7rZw95OUH/+8vY3qelNGI5QUyoPdhtHhag0FShjn4MScnZ7xjeSS0Wi0ajYZgMBYfLRFiiU6nw+G0M3PmNCQpeje1gUCAxsYWGhuaEy6hQ+/ghd5hpLFyWzTQ7/7u7/Jv//ZvMTGMtL6+/ku3mXA19by8PCZPnszRo0ejHYoQ40KhEG2t7Zw4HrtDdBNBrFewHnw6PtZNuDZ1jUaDzWaLdhiCIAjjYsIldUEQYsvSpUuxWq3RDuOhTpw4EVejXyZc80tjY2PMtt0JwkQjSRJTpkzhzp07MTuh14PrHMe6CVdT93q9VFdXRzsMQRCEcTHhkrogCLGlubk5pjtL421akYRtfsnPz2fOnDlcv36dmpoa9fW+BQY6OjqiGJ0gJA5JktBqtaOe9Or06dOEw2H0ev2o3h8Oh8e1zfvJJ5/kjTfeiIkhjcORUEm9oKCAuXPn0tXVRWFhIZ2dnWzcuJFf/vKXajt6VlYWM2fOjNk1VAUhnuRPyuHx7auZNiMdo1n7yD9fkqChtoNjh8o4f/Yafn/kx/HHwqpHI5FQSX3btm2cOHGCTZs20dzcTEFBwaDB+hqNRqyfKggRMGfuDP7H/7eDtKl3UTR3iNacCiWKhq0vLuWTX8/l//y//0YgENmmnFh+2nUoCdWmHg6HsVgs6HQ6bDYbZ8+exW63o9F8/jVlWY6r4UmCEIt0Oh3/6f96mtRp5ciadhT8KASi84/kQzZVsPE5E8VzpkX8ux48eDCuEntCJfUPPviApKQkZFnmo48+QqfT8eGHHw44II2NjVy6dCmKUQpC/LPZraRP8qJI3miHotLbalm1ZkHE91tVVRVXw6ATqh2isbGRpqYm7ty5Q21t7YAO0j5+v5/GRjHLnSCMhdFoRNK4ox3GQFIIuy052lFE3ahr6pIkkZ+fjyRJFBYWMn/+fMxmM8uXL2fSpEmRjHFEFEWJu19WQRAiZBym05wxY0ZcLWc36qSu1Wp54YUXmD17Nr/3e7/H6tWrefHFF7FarWzatCmSMUZUUlISGRkZ0Q5DEIQ4sX79erTaRz+yZ7TG3KY+ZcoUzp8/zxtvvMH06dO5du0aRUVFMTuXQ2ZmJosXL452GIIgCONizG3qOp2OUCiELMtoNBo6OztpbGxk5syZnD9/Xt1Oo9EwY8aMUT9gECm5ublMnjyZuXPnRjUOQYhnaWkpUb+Wh5KWlhbxazszM5O5c+dG/eEjt3t4fRhjTuper5fMzEzsdjvBYBCdTofT6aSlpWXAdpIk4XQ6oz6Q32azYTKZSElJiWocghDPHE4nkib2Bs+Nx7V96tQp7HZ7RPc5GsNtAhpzUr9+/TqrV6+mqKiIQ4cOkZ+fTyAQGDTyJBwOc/r06bF+3JhptVrsdruYJkAQxiArO5Ov+7cTa8tH1NbWcuTIkWiHEVWjTuqyLFNVVUVDQwN/+Zd/iU6nw+Px8Mwzz3Do0KGYfcAnHA6LhC4IQsIaU1L/4IMPkGV5wKKsu3btiqunrwRBEL7IokWLuHjxYsxWVB80pkaxob6kz+eL6Wk0MzIymD59erTDEAQhTixcuHDAVCOxLn4ijRCLxcKMGTOiHYYgCMK4mHBJXRAEYSS6urqiHcKITLikHggE6O7ujnYYgiDEiY8++ijqY9RHIqEm9BqOhoaGQWPoBUEQHsbj8UQ7hBGZcDV1WZYJBCK/OoogCIkpnibzggmY1OPtAAmCEF2rVq0So19iWd88DoIgCMNRXFwsknosM5vNUZ3vXRAEYTxNuKQuCIIwEtXV1XG16M6EG/3i9/tpb2+PdhiCIMSJPXv2RDuEEZlwSb2+vp76+vpohyEIgjAuEiqpS5KkdmisX7+emTNncvr06QGLdQiCIIyEJEmi+SVaNm/ezLRp09DpdGi1Wo4fP87SpUsHzLDWN6Qxng6SIAjR89xzz/H+++/HzVOlCdVROmvWLHbt2oVGo+HIkSNDzq6Wm5vLokWLohShIAjxJt5WSUuopF5TU8PWrVux2Ww0NTUhyzLHjh0bMEWwXq8nIyMjilEKgiCMn4Rqfvnoo4+w2+089dRTtLW18etf/zru5m0QBCG2XL9+PW4WyIBxSOpms5lgMBiV9qdQKER7ezu/+tWvCAaD+P3+Qdu0tbVx9+7dRx6bIAjx6eTJk3HVBzfqpK7RaNi6dStHjhzhueeew+Fw8PHHH1NSUkJdXR1nzpyJZJwj8kUrL7lcLsrLyx9hNIIgxLN4SugwhjZ1jUZDcXExixYtwul0cvr0aV544QVu377Nxo0bxcRZgiAkBIvFEu0QRmTMHaVOp5N79+5RWVmJ1Wrl3r17mM1mcnNzIxFfxOl0OpKSkqIdhiDENanf/ya6HTt2oNPFT/djRCLtXyv3+Xy0tbWRnZ1NbW3t5x+k07Ft27aoJ9Tk5GTS09O5efNmVOMQhHjmcNgwJ5miHcYgRUVFvPjiixHd55o1a5AkiXA4HNH9jtRwF/cZc1Jva2tj+fLltLe309nZidVqJTs7e1DSDIfDHD9+POpTWE6ePJkZM2awf//+qMYhCPEsMzOdJ353NfpoB/KA+/fvR/zazsnJ4eDBg1/YV/coDPfzR53UFUVBlmUuXrxITk4Os2bN4je/+Q1z587l9u3bgxZrVRQlJibSslqtdHV10draGu1QBCFu6fRa5CjXXIfi9Xojfm0fOnRIfe4lHow6qcuyzJ49e/B6vbz99tvq6/n5+TFdC25paaGysjLaYQiCECcuXboU7RBGZEw19bKyskGvnzhxIqaHALndbu7cuRPtMARBEMZFxBu4YzmhC4IgjFR2dnZcDdFOqLlfhkOv12Oz2aIdhiAIcWL79u1otdpohzFsEy6p5+XlsXr16miHIQhCnIj2iL2Riq9oIySebqUEQRBGYkImddHuLwjCcH3wwQdRf/BoJOLn2dcIqaurG3L2RkEQhKE0NTVFO4QRmXA19UAgIBaeFgQhYU24pC4IgjAShYWFcdUPN+GSutPpjNkZJAVBiD3r168XQxpjWXJyMiUlJdEOQxCEOCGGNMaBeDtIgiBEj8/ni3YII5JQ2U2r1ZKbm4ter8dqtTJ9+vRBq5aEw+G4O0iCIETPzp07o7Lm8mjF/ZDGpKQkpk2bht/vR6fT8eqrr/L3f//3rFmzhkAgwPLly3njjTfUaTPr6+vFtLuCIAxbLEwZPhJxX1N/7LHHKCoq4nd+53eoqqri0qVLaLVaHA4Hx48fJzk5eUBzSygUwuPxRDFiQRCE8RP3Sd1ms1FRUUF3d7f6pGjfAh52u51wOCyeIBUEYdRKSkriqh8ufiJ9iGPHjlFaWkpaWhoAd+7coauriyNHjrB48WIOHz484BHftLQ0CgoKohWuIAhxZvny5XGV1OO+Tb26uprq6mrWrFlDOBzm9OnTQO/aqdevXx+0vc1mo7i4mLt37z7qUAVBEMbdmH5+kpKSgN51P5OTk9FqtRQWFpKcnByR4Ebi6NGjcdVDLQhCfGhra4t2CCMy6pq6Vqvl1Vdf5aOPPuLb3/42wWCQM2fOoNfr0Wq1vPfee5GMM2JCoRBerzfaYQhCwvH7wpw92kR3V4DFqzNJzzKPaj99XWCS1Ns/Vn/fTWZuEjqd5qHbjacPP/wwriqMo07qkiRhMpmYPXs2169f5+DBg/zH//gf+ed//mdee+01du3aRSAQiGSsEVFbWysm9BKEcVB920VjnYfl67OoquxSk7osK1y/0Ma9292UrkinpdFLQ40Hu1NP6YoMzh5tIuAPU7o8g+P76pky3U53V4DO9gAzS5J54x8qeOEb0/F6wtTd72HxqgzuVLrweUKs3JSNyTy+rcjBYHBc9x9pYy4No9GI2+3G4/Gg0+loaWmhs7OToqIirl27pm4nSRIpKSlx1eEgCMLQ0lJT0TwwH0reZCtVFS4unmxh0aoM9XVXZ4Br59vY+GQex/c1YDRrmVOayvULbRzdU09bsw+TWcu1C210dQSYPM3GrfJO/L4wzQ0eiuenYLbquHG1g6VrMzl9uIme7iDrHs/FaBoYQ5LZTHp6+iMpg0dtuD8uY07qwWAQi8WCXq9XH/DRarWDble0Wi0rVqxQ2+EFQYhfDocNo9E44LX2Vj9Fc51odRoO7q7ld14rAkAO97aTGM06ZFlBQkKj6W0z8XvDBP1h8qZYSMsw097sw+sJUVXpIhiQCQUVNFoJOayg1UmYzFoURUGnk7Da9INmT8yfNIkNGzZE9LvOnz+fq1evqvktWlpaWoa13ZiT+p07d3j11VeZMmUKZWVlZGRkYLFYuH379oDtQqEQO3fuHOvHjVl2djYpKSmUlZVFOxRBiFtZ2Zls+9p29P3GRNideg5/3IK7O8jchalcOdOK3x8mLdNEwQw7+z64z4Ll6ZRf7uDY3npS0k2s2pzNif0NtLX4mTbLSUaOmSSrDkUBU5KW1AwTiqLg6QnhTDFyYGcti1ZlUHu3B51+8F1/ZWUlb731VkS/q9Pp5J133ombZphRJ3VFUejs7OTWrVv8/d//PRaLhbt37/Lkk09y8uTJmC0Ak8mk/gAJghA5jmQjO17pfQYkEAhTfasbvUGDOUnH8g1Zaq367k0Xy9bmk5nbe9f++HOT1X3kTuqdq+nF35/+hZ81tcgxHl/hoeLpAcZRJ/VwOMxvfvMbwuEw9+/fV18/duwYPT09EQlOEIT4ZDBomTHbOeTflm/IwjzOnZuRdP/+/YmR1IEhk3djY+NYdjnuXC4Xzc3N0Q5DECYsm90Q7RBGZO/evWLh6VjW1tZGR0dHtMMQBCFOxFNChwSY+2U0ot2LLQhC/NDr9dEOYUQmXFLXaDRxd5AEQYiebdu2iTVKY1l2djZLly6NdhiCIMSJrKysQePhY9mES+oGgwGH49EOhxIEQXhUJlxSFwRBGInKysqJM6QxHrW3t1NTUxPtMARBiBOHDx+OdggjMuFq6l1dXVy9ejXaYQiCIIyLCZfUBUEQRsJut0c7hBGZcEldDGkUBGEknnrqKXS6+GmpnnBJPT8/n3Xr1kU7DEEQ4oTZPLoVnKIloZJ6cnIyzz33HE6nk9zcXJ599lkMhoHzTGg0mkGvCYIgJIr4uad4iKlTp7JmzRpkWebw4cNMnToVh8OBwWCguLiYTz/9NCaX1RMEIT4cOnQoruZ/ifua+sqVKzl37hyZmZk0NTVRV1eHoihUVVXR3t4+aPvm5mYqKyujEKkgCPHo5s2bcTVOPe6TeldXF8XFxUM+JTrUgXC73YNWZRIEQUgUcZ/U9+3bR1lZGW63G+id+7ipqYlwOMx7772H1+uNcoSCIMSzzMzMiT33y6P+8l6vl/Lycv7lX/6FQCBAS0sLfr8f6F2w48Fpdi0WC8nJyUPtShAEYZAnnnhiYszSKEkSJSUl6HQ6VqxYweOPP05ycjKbNm2iqKgokjEOS0tLy7DavTIyMliyZMkjiEgQhEQQb8+1jDqpa7VaHnvsMebPn8/mzZux2Wy88soreL1eNm/eHNO3K/H0IIEgCNEVTyNfIALNL9nZ2Vy7do29e/eSm5tLRUUFeXl5MdvEoSgKoVAo2mEIghAnJtwapRqNBlmW1aaP7u5uGhoaKCws5OzZs+p2Wq2WJUuWYDQax/qRY2I2m0lKShJPlQrCGKSkOKN+LQ9lvJ4Ynzp1asT3OVJdXV3D2m7MSb2np4fCwkKys7Px+XyYTCYyMzO5d+/egO0URaG9vT3u2qcEQRiKTFjOinYQg3g9HlpbW6MdxrjoG+H3Zcac1C9fvszChQt5+eWX+eijj5g2bRptbW00NzcP2E6WZfHQjyAkiKzsTELB6dEOY5DWtjauX78e0X1OmTKFe/fuxc0DSKNO6rIsc/HiRdrb2/mbv/kboLc2/pWvfIX9+/fHbAE4HA5MJhNNTU3RDkUQhDjw2GOP8frrr8dNX9yoO0plWebgwYMoiqL+A7B7926uXbsWsQAjLSUlhUWLFkU7DEEQ4kQsj+QbSsTH9sVTL7EgCMKX8Xg80Q5hROJ+moCRUhRF/PAIgjBs77//ftw0vUACTL07UrW1taI9XRCEYevp6Yl2CCMy4ZJ6KBSKq19dQRCEkZhwzS+CIAgjsWzZMjSa+EmV8RNphKSlpVFQUBDtMARBiBPz5s0TST2W2Ww2Zs2aFe0wBEEQxsWES+oQf+NOBUGInqGWxYxlEy6pe71eXC5XtMMQBCFOfPjhh3E1uGLCjX5pbGykra0t2mEIghAnAoFAtEMYkQlXUwcIBoPRDkEQhDgRb821CZfUjUYjkiSh1WpJSkoacm3BeOrJFgQhutavXz8x1iiNFVqtFofDgdVqZfr06fzFX/wFubm5bN++na997Ws88cQTA35pMzMzKS0tjWLEgiDEk+nTp8dVbT3u29TXrFnDjBkzyM7O5vvf/z537txBp9Nx5coVqqqqmDNnzoDtk5KSyMzMjFK0giAI4yvua+qTJk3i4MGDuFwugsEggUAAWZZxu90sX76cffv2xezc7oIgxL76+vq4yiFxn9SvXbvGY489Rk5ODgAdHR2Ew2G2bt2Kw+GgtLR0QBt6d3e3GP0iCMKw7d69O65mdo375peLFy9y+fJlnn/+eWRZ5pNPPkFRFN544w0kSRqwgAdAa2trwq5hKAhC5MmyHO0QRiTiNfXk5GRMJlOkd/uFZFnmrbfeIhgMqglcURRkWY6r2yZBEGKP0WiMdggjMuqkrtVqefnll0lJSeG73/0u//2//3cWLFjApk2bWL58eSRjFARBiJodO3ag08VPo8aok7okSeTk5LBgwQJcLhdvvfUWX/nKV7h69Spr166N2XGdubm5rF69OtphCIIQJ5KTk6MdwoiM+efHarXS3NxMQ0MDZrOZuro6FEVhypQp3Llz5/MNFQX9WD8sAix6PSkWC3rRLCMIoxar149GliMemzYcxgBIUf7Ow/30MSd1WZYxGAxqp2QoFKKnpwe73T7og77i85EU5YJJa24mW6PB7vVGNQ5BiGeOjg6SYm2SK1lmZkMDL0b42k7fuZPnu7uRo5y7mof5JPyYk3pDQwNPPPEEGo2G+vp6nE4n6enpVFZWDtguBOw2mYj2c1kOnY58s5nrZnOUIxGE+JXpdLJZp8MW7UD602i4mZXFO5G+thsb4REP/hjKcAdVjjqpK4pCIBDg6tWrmM1mUlJS+PWvf83SpUu5evUqHo9n4BskCd9oPyyCvC4XTeXlKHH02K8gxBqfRjPs5oBHKaTV4p3g1/aok3o4HObdd98lEAhw7Ngx9fX79+9z4cKFiAQ3XsQwR0EYLDU1leTkZJqamgiHwxgMBrq7u0lPTwd6H+xLTk6Ou0Ujxspms9Hd3R3x/Wq1WnJyctBqtdTV1ZGSkkJLSwtOp5NwOIzZbKa9vZ3U1FQaGxuHnbfG1PxSV1c36LXr16+PZZfjzmg0otVqB99JCMIEZrPZ+Pf//t/j9/sxm82cP3+evLw8PvnkE/7wD/+QqqoqJEli+vTp/NVf/VW0w32knn76aX79619HfKGMGTNmsGPHDpKSkjh16hSrVq3if//v/80LL7xARUUFGzdupKqqCr1ez09/+tNhJ/W4nyZgpHJycsQ4ekF4QN8AB4PBQFFREWazecD0Grt372bbtm0cPnyYzs7Oz16NhfFsA4VCkV/QwjxO/W/BYJBwOIzVamXKlClqeWs0Gnp6eti/fz9PPfUUO3fuHNFTrRMuqQOP/IlXQYh1WVlZzJgxg4MHD+L3+/H7/aSkpDB58mQMBgNTp06lubmZ4uJidDodri4XAXcSRH3ow+eUkJWamvvRDmPYlixZQltbG1euXEGWZYLBIAUFBWRkZKDVapk9ezZ1dXUUFhaOaL8TMqmLNnVBGKihoYHr16+zatUqLl26xNWrV/F6vaxYsYLy8nImTZrE3/zN39DY2Ehqaio+n48je2pRAqnExOWkaGm/n8+xw1cjvuvjx4+Py/wvJ06cICUlBbvdzs2bN/n444/ZvHkzLpcLWZZxuVz89V//Nbm5uej1w78rkpRhZri+WRDjndVqxel0UltbG+1QBCGuWW1J/MEf7+CxZzLQGLvQaKJRa1cIB000ViXxg+8d4Ozpqwldaauvr//SbSZcUhcEIXKMRiPp6SkUFk0myWx55J8fDAaor2umtqaBri7XI//8R00kdUEQhDGQJIn8/Hxqampi4g5gOEl9QrapZ2Zmxt0kPYIgPHq5ubksWLAg2mGMSPzMJxlBiqKwatUqbty4QVNTk/pggSRJ2O12dYZJt9uN3+8HeocZORwOdQFal8uljls1mUwkJSWp+3a5XOpKKUlJSepoG1mW6erqUn/xbTab2gHi9/txu91qHDabTZ3u0+v14v1sPgtJknA4HOrwp56eHgKB3mFcer0em82mxtHd3T1kjACdnZ1q50//GIPB4IAHLaxWKwaDYVCMAA6HQy0rj8eDz9f7zLBOpxsw90//GA0GA1arVf3bw8oxHA7T1dWlbtc/xkAgQE9Pj/q3h5Xjg8fswRhtNpv6t4fF+OAx6x9jKBSiu7tb/ZvFYlHn3u5fjg8eM5/Ppz4nodVqsdvtD42xrxwVRaGrq0s9Zg/G2Ne59mXl2P+Y9S9HjUaD3W4fMkaNRoPT6RzymOn1eqxWqzr3U/9z/4vKsf8x61+OD577D5aj0+kc8pj1L8cHz/0vKsf+xywcDuNyudQ4CgsLWbJkCXv37o2JWvpwTcik3tzczPHjx1m6dCl2u51Lly6hKAo2m43Nmzej1+tRFIWzZ89SVVUFQHp6OuvWrVNP+v3799PS0gLA5MmTKS0tBXp/CPbs2aOe2LNmzWLGjBkAtLe3c+DAAfVkKy0tVZu1qqqqOHPmDNDbTrl+/Xr1wrx69SplZWUA2O12Nm7cqCbakydPcu/ePaD3DqRvWuFAIMDevXvVC6KgoID58+cDvRfDvn371ORRXFzM9OnTAWhsbOTQoUNA74WyatUq9a7m9u3bnDt3Dugdu7t27Voslt521CtXrlBeXg70Jo7HHnsM6L2YDx48qJZVTk4Oy5YtQ5Ik/H4/+/fvx+VyDYqxq6tLXcUKeod/ZWdnA70PvfWNSNDr9axcuVKN8c6dO5w9e1aNcfPmzWoSO378ODU1NUDv05Nr1qxBp9MRCoU4fPiwGmNWVhYrV64EepPbrl27CAaDAMybN4+pU6cC0NbWxqFDhwgGg2i1WhYtWqQez4aGBg4fPgz0JpX169erP0oXL15U50ayWq2sX78eo9GILMucOnWK+/d7h+U5nU42b94M9Cacjz/+WE3CRUVF6qLqfWOavV4vkiRRUlLCtGnTgN4f708//VRNVCtWrFATdEVFBZcuXVLPudWrV2O1WlEUhcuXL1NRUQH0/qBu2rRJLcd9+/apq4fl5+ezZMmSIY/n9OnTKSkpAXorJrt27VLP/UWLFpGVlQVATU0NJ0+eRFEUdDody5cvJyUlBYDKykouXrwI9P6A9JXVg8czPT2dNWvWoNVqCYVCHDlyhObmZqB3HeOlS5eq5bh79271h3/27NlqWbW2tnLw4EHC4TCSJKHRaPjwww8HVCDigWhTFwRBiBOiTV0QBGGCEUldEAQhgYikLgiCkEBEUhcEQUggIqkLgiAkEJHUBUEQEohI6oIgCAlEJHVBEIQEIpK6IAhCAhFJXRAEIYGIpC4IgpBARFIXBEFIICKpC4IgJBCR1AVBEBLIsKfeFQRBEGKfqKkLgiAkEJHUBUEQEohI6oIgCAlEJHVBEIQEIpK6IAhCAhFJXRAEIYGIpC4IgpBARFIXBEFIICKpC4IgJJD/HwjWdEbEYDUxAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('circle4.png')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "6bd34621-0458-4a1b-ac69-62892bcba54c", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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zWj37t2EQiFqa2t56KGHeOqppxgZGWHVqlX5c9xisRjJZNJ3J4tffHJ+Z2cnTz75ZP53yHYrtLW18dxzzzE+Pp4/ipZMJn0XAoXr43kee/fuZdmyZRhjuPPOO3nzzTfp6OggFouxevVqXnrpJaLRKK7r5mdc8evnk0gk+O///m8aGxtpbGxk06ZNPPHEE4yNjbF+/XpSqRTpdDq/rZXLAaj5oDCbgcLxV57nYa2lvr6eM2fOMD4+TltbG3fffTfvv/8+Dz/8MI7jcP78eV5++WVSqZSvdhhgUk0rk8kQCoW46667sNbS2NjICy+8QDwe56abbuLGG28kk8lw8OBBDh065LtAK+R5HqdOnaKqqoqqqio6OzupqanhN3/zNzlx4gQ33ngjzc3NZDIZXn31Vfr6/DcxZKFkMkl3dzcbN26kp6eHeDzO2rVrueOOO/jggw947LHHMMbQ39/Pq6++mp/9wm/b23xTM3OGck1NyIZAT08P0WiUxx57jNtvv50PPviAbdu28f777/PEE08QiURoaWkpcamnVth0huyRtIMHD7J582b27dtHPB7PDwd49tlneeGFF7j55pvznex+U7g+uSmHTpw4wUMPPcSjjz6aH+ycSCR44oknOHjwIDfffDPg3yZnYSB1dnayYMECvvOd77Bjxw7279/Ptm3beOedd/j5z39ObW0tixcvLmFpS0s1szmKx+M8//zzVFdXk0wmefTRR3njjTc4fvw4NTU11NfXMzo6WjbfkqdPn+bnP/851dXVtLa2sn79ep566inGx8fZtGkT4+PjZdGUyYXTO++8Q21tLalUiq1bt+bPEgBoa2vj9OnTpSzmtBljGB8f57nnniMWi5FKpXjsscd49dVX6ejoYMGCBfkplqZ7PdmgUc1sDnIBlU6nGRwcJBqNYq2lvb09P4L78OHDDA4OltXGdfbsWdrb21m5ciWffvop8XictrY2brvtNt54442yCLPC2ubQ0FB+Hfbv348xhltvvZWamhoOHTpU4pJOT277SSaT+W0tnU7T1dWVb0Lv378/EPOrzZZqZrN08fRDxhhGRkZIJBLcfffdtLS0cPTo0fxIbb+bqubY0dHBHXfcwaJFi2hububFF1/0ff9SoYvnumtvb+f2228nHA6TyWTYvXt32Ux8efE0PSMjI2QyGe6++26WLFnCwYMH+fjjj6d8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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('circle4hist.jpg')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "5216c457-12f6-451e-92a8-d43c5a15e98f", + "metadata": {}, + "source": [ + "## Line 8 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "c6ebdc89-ba16-41c4-b623-7862a0ae29af", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('line8.png')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "6dffee97-669a-4c03-a506-55c8ebbe0be1", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('line8hist.jpg')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "8cb5df08-342e-4cfd-b65e-42a8528b6969", + "metadata": {}, + "source": [ + "## Line 16 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "62827e5d-82f4-433e-80ea-7eecf1dedbfb", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('line16.png')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c2710a88-2fa4-456f-995b-faa3a499dc03", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 [Default]", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 21f95ece49046010be24ca4849737bb57b46defc Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Thu, 25 Jul 2024 23:32:10 +0200 Subject: [PATCH 46/83] Delete community/womanium/assignments/test.md --- community/womanium/assignments/test.md | 1 - 1 file changed, 1 deletion(-) delete mode 100644 community/womanium/assignments/test.md diff --git a/community/womanium/assignments/test.md b/community/womanium/assignments/test.md deleted file mode 100644 index 9daeafb9..00000000 --- a/community/womanium/assignments/test.md +++ /dev/null @@ -1 +0,0 @@ -test From 021b0c776590af6ad2c06d49e6f93d7271e20da5 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Fri, 26 Jul 2024 00:24:58 +0200 Subject: [PATCH 47/83] Add files via upload --- .../assignments/Yasir_Mansour_hw4.ipynb | 26 ++++++++----------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/community/womanium/assignments/Yasir_Mansour_hw4.ipynb b/community/womanium/assignments/Yasir_Mansour_hw4.ipynb index 2ec40eb4..da1590f9 100644 --- a/community/womanium/assignments/Yasir_Mansour_hw4.ipynb +++ b/community/womanium/assignments/Yasir_Mansour_hw4.ipynb @@ -89,7 +89,7 @@ " - Setting the number of nodes and the size of the register.\n", "\n", "2. **Quantum State Preparation**:\n", - " - The `prepare_minus` function prepares a quantum state by applying an X gate (bit-flip) followed by a Hadamard gate (superposition) to a qubit `x`.\n", + " - The `prepare_minus` function prepares a |-> quantum state by applying an X gate (bit-flip) followed by a Hadamard gate (superposition) to a qubit `x`.\n", " - The `diffuzer_oracle` function modifies an auxiliary qubit based on whether `x` is non-zero.\n", " - The `zero_diffuzer` function allocates an auxiliary qubit, prepares it in the minus state, and applies the `diffuzer_oracle`.\n", "\n", @@ -104,16 +104,13 @@ "5. **Bitwise Swap**:\n", " - The `bitwise_swap` function swaps corresponding qubits between two arrays `x` and `y`.\n", "\n", - "6. **S Operator**:\n", + "6. **S Operator/Shift **:\n", " - The `S_operator` function applies the edge oracle and swaps qubits if the result is 1.\n", "\n", "7. **Main Function**:\n", " - The `main` function allocates qubits for `vertices` and `adjacent_vertices`.\n", " - It applies the W operator and S operator sequentially.\n", "\n", - "8. **Model Synthesis and Display**:\n", - " - The program creates a quantum model (`qmod`) and synthesizes it into a quantum program (`qprog`).\n", - " - The `show(qprog)` command displays the resulting quantum program.\n", "\n", "In summary, this program simulates a quantum random walk on a graph, where the walker's position is represented by quantum states. \n", "\n", @@ -139,13 +136,13 @@ "source": [ "import numpy as np\n", "\n", - "# Prepares the minus state for the diffuzer oracle\n", + "# Prepares the minus state (aux qubit) for the diffuzer oracle\n", "@qfunc\n", "def prepare_minus(x: QBit):\n", " X(x)\n", " H(x)\n", "\n", - "# x: node to check\n", + "# x: current node\n", "@qfunc\n", "def diffuzer_oracle(aux: Output[QNum],x:QNum):\n", " aux^=(x!=0)\n", @@ -159,8 +156,7 @@ " within_apply(compute=lambda: prepare_minus(aux),\n", " action=lambda: diffuzer_oracle)\n", "\n", - "# probability distribution defined by prob for each node\n", - "# \n", + "# probabilities for allowable transitions\n", "# @qfunc\n", "# def W_iteration\n", "\n", @@ -176,7 +172,7 @@ "#@qfunc\n", "#def edge_oracle\n", "\n", - "# Swaps the contents of two quantum registers \n", + "# Swaps the contents of two quantum registers: moves the walker\n", "@qfunc \n", "def bitwise_swap(x: QArray[QBit], y:QArray[QBit]):\n", " repeat(count= x.len,\n", @@ -205,7 +201,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 7, "id": "5ab73e30-56fd-4028-bb13-e2f883a4e3ae", "metadata": { "tags": [] @@ -213,7 +209,7 @@ "outputs": [], "source": [ "\n", - "#\n", + "# non-zero probabilities for allowable transitions\n", "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", " prob = [0] * num_nodes\n", " prob[(i+1)% num_nodes]=0.5\n", @@ -227,7 +223,7 @@ " action= lambda: \n", " zero_diffuzer(adjacent_vertices)))\n", " \n", - "# Edge oracle for checking adjacency of two \n", + "# Edge oracle for checking adjacency of two vertices \n", "@qfunc\n", "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", " diff = vertices - adjacent_vertices\n", @@ -491,7 +487,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 6, "id": "47e777d7-6527-4901-a034-951c624037e4", "metadata": { "tags": [] @@ -499,7 +495,7 @@ "outputs": [], "source": [ "\n", - "# \n", + "# non-zero probabilities for allowable transitions\n", "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", " prob = [0] * (num_nodes)\n", " if i == 0:\n", From 9e0671b097c01b6fa1aef50b5c4ec4a046b446a5 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Fri, 26 Jul 2024 02:14:08 +0200 Subject: [PATCH 48/83] Add files via upload --- .../assignments/Yasir_Mansour_hw4.ipynb | 55 +++++-------------- 1 file changed, 13 insertions(+), 42 deletions(-) diff --git a/community/womanium/assignments/Yasir_Mansour_hw4.ipynb b/community/womanium/assignments/Yasir_Mansour_hw4.ipynb index da1590f9..2b085fa1 100644 --- a/community/womanium/assignments/Yasir_Mansour_hw4.ipynb +++ b/community/womanium/assignments/Yasir_Mansour_hw4.ipynb @@ -29,39 +29,6 @@ "- B. Contribute your notebook to the Classiq Git Library to the folder community/womanium/assignments. Follow the contribution guidelines in order to contribute - NO need to open an issue for this, you can directly open a PR. The PR title should be: `Womanium Final Assignment - `. The file name should be in the following format: `__hw4.ipynb`." ] }, - { - "cell_type": "code", - "execution_count": 2, - "id": "7e598bf6-4515-44da-9766-8c845fa57c96", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", - "qiskit-ibm-runtime 0.25.0 requires pydantic>=2.5.0, but you have pydantic 1.10.17 which is incompatible.\n", - "qc-grader 0.19.7 requires networkx==3.2.1, but you have networkx 2.8.8 which is incompatible.\u001b[0m\u001b[31m\n", - "\u001b[0mNote: you may need to restart the kernel to use updated packages.\n" - ] - } - ], - "source": [ - "pip install -U -q classiq" - ] - }, - { - "cell_type": "markdown", - "id": "b93714d4-7048-476b-a904-b27a655bc922", - "metadata": { - "tags": [] - }, - "source": [ - "pip install -U -q classiq" - ] - }, { "cell_type": "code", "execution_count": 3, @@ -89,7 +56,7 @@ " - Setting the number of nodes and the size of the register.\n", "\n", "2. **Quantum State Preparation**:\n", - " - The `prepare_minus` function prepares a |-> quantum state by applying an X gate (bit-flip) followed by a Hadamard gate (superposition) to a qubit `x`.\n", + " - The `prepare_minus` function prepares a quantum state by applying an X gate (bit-flip) followed by a Hadamard gate (superposition) to a qubit `x`.\n", " - The `diffuzer_oracle` function modifies an auxiliary qubit based on whether `x` is non-zero.\n", " - The `zero_diffuzer` function allocates an auxiliary qubit, prepares it in the minus state, and applies the `diffuzer_oracle`.\n", "\n", @@ -104,13 +71,16 @@ "5. **Bitwise Swap**:\n", " - The `bitwise_swap` function swaps corresponding qubits between two arrays `x` and `y`.\n", "\n", - "6. **S Operator/Shift **:\n", + "6. **S Operator**:\n", " - The `S_operator` function applies the edge oracle and swaps qubits if the result is 1.\n", "\n", "7. **Main Function**:\n", " - The `main` function allocates qubits for `vertices` and `adjacent_vertices`.\n", " - It applies the W operator and S operator sequentially.\n", "\n", + "8. **Model Synthesis and Display**:\n", + " - The program creates a quantum model (`qmod`) and synthesizes it into a quantum program (`qprog`).\n", + " - The `show(qprog)` command displays the resulting quantum program.\n", "\n", "In summary, this program simulates a quantum random walk on a graph, where the walker's position is represented by quantum states. \n", "\n", @@ -156,7 +126,7 @@ " within_apply(compute=lambda: prepare_minus(aux),\n", " action=lambda: diffuzer_oracle)\n", "\n", - "# probabilities for allowable transitions\n", + "# non-zero probabilities for allowable transitions\n", "# @qfunc\n", "# def W_iteration\n", "\n", @@ -201,7 +171,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 44, "id": "5ab73e30-56fd-4028-bb13-e2f883a4e3ae", "metadata": { "tags": [] @@ -487,7 +457,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 3, "id": "47e777d7-6527-4901-a034-951c624037e4", "metadata": { "tags": [] @@ -495,7 +465,7 @@ "outputs": [], "source": [ "\n", - "# non-zero probabilities for allowable transitions\n", + "# non-zero probabilities for allowable probabilities\n", "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", " prob = [0] * (num_nodes)\n", " if i == 0:\n", @@ -805,8 +775,8 @@ }, { "cell_type": "code", - "execution_count": 27, - "id": "da46948a-5d28-4b8e-8139-27d363b7286c", + "execution_count": 1, + "id": "335019e0-e185-41d5-b894-6116ada649d6", "metadata": { "tags": [] }, @@ -932,7 +902,8 @@ "id": "8cb5df08-342e-4cfd-b65e-42a8528b6969", "metadata": {}, "source": [ - "## Line 16 nodes" + "## Line 16 nodes\n", + "![alt text](line16.png)" ] }, { From c2a058655068cea46ed269c6fac3d28a6ffc1dec Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Fri, 26 Jul 2024 02:24:37 +0200 Subject: [PATCH 49/83] Add files via upload --- .../womanium/assignments/Yasir_Mansour_hw4.ipynb | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/community/womanium/assignments/Yasir_Mansour_hw4.ipynb b/community/womanium/assignments/Yasir_Mansour_hw4.ipynb index 2b085fa1..c9da6cf2 100644 --- a/community/womanium/assignments/Yasir_Mansour_hw4.ipynb +++ b/community/womanium/assignments/Yasir_Mansour_hw4.ipynb @@ -92,7 +92,7 @@ "id": "bbe3dfa3-2265-44af-b708-9a0ad189f5bf", "metadata": {}, "source": [ - "## Common functions for circles or lines" + "## Common functions for circles or lines" ] }, { @@ -104,7 +104,6 @@ }, "outputs": [], "source": [ - "import numpy as np\n", "\n", "# Prepares the minus state (aux qubit) for the diffuzer oracle\n", "@qfunc\n", @@ -162,7 +161,7 @@ "id": "9761696b-cefe-4ea0-9c91-ebd33af62e22", "metadata": {}, "source": [ - "## Circle-specific functions\n", + "## Circle-specific functions\n", "\n", "Here we have the function W_iteration with the probability of 0.5 going in either direction.\n", "\n", @@ -449,7 +448,7 @@ "id": "ccfdf941-9d91-402f-a200-ccc266f73e99", "metadata": {}, "source": [ - "## Line-specific functions\n", + "## Line-specific functions\n", "The function W_iteration defines the transition probabilities for a line. At the beginning and at the end of the line the walker can go only in one direction (probability = 1). For all other nodes the probability going in either direction is 0.5.\n", "\n", "Here the function edge_oracle just has to check whether the vertices are adjacent (distance = 1)." @@ -740,7 +739,7 @@ "id": "4b28d548-febf-43b3-9271-6cab28fd2cbb", "metadata": {}, "source": [ - "# Results" + "# Results" ] }, { @@ -903,7 +902,7 @@ "metadata": {}, "source": [ "## Line 16 nodes\n", - "![alt text](line16.png)" + "`![alt text](line16.png)`" ] }, { From 31bb6dd5065dd3ff282f7fc4bda6dcebd92da59e Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Fri, 26 Jul 2024 02:38:21 +0200 Subject: [PATCH 50/83] Create Yasir_Mansour_hw3.ipynb --- .../assignments/Yasir_Mansour_hw3.ipynb | 967 ++++++++++++++++++ 1 file changed, 967 insertions(+) create mode 100644 community/womanium/assignments/Yasir_Mansour_hw3.ipynb diff --git a/community/womanium/assignments/Yasir_Mansour_hw3.ipynb b/community/womanium/assignments/Yasir_Mansour_hw3.ipynb new file mode 100644 index 00000000..c9da6cf2 --- /dev/null +++ b/community/womanium/assignments/Yasir_Mansour_hw3.ipynb @@ -0,0 +1,967 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "b7f74e3a-7dae-4939-a2ef-0ff82d8eadd0", + "metadata": {}, + "source": [ + "\n", + "# Assignment 6.12 - womanium 2024\n" + ] + }, + { + "cell_type": "markdown", + "id": "adc17ffc-b892-4a94-bebb-4ba74d208a9e", + "metadata": { + "tags": [] + }, + "source": [ + "## Assignment: Advanced Algorithms Design\n", + "## _Quantum random walk_\n", + "**Instructions - Final assignment**\n", + "\n", + "Follow the example from Bootcamp 4 for creating the quantum walk operator for the case of a circle with 4 nodes, and design the quantum walk operator for the case of a line with 16 nodes:\n", + "\n", + "**Tasks:**\n", + "\n", + "- A. Create a well-detailed Python Jupyter notebook that explains your algorithm, including the code parts covered in class, and pictures/figures where relevant. Utilize the Python code from class: quantum_walk_circle_example.py. It can be found directly also in the Classiq Git Library in the community/womanium/assignments folder. Feel free to extend the example beyond the requirements here and what was covered in class.\n", + "\n", + "- B. Contribute your notebook to the Classiq Git Library to the folder community/womanium/assignments. Follow the contribution guidelines in order to contribute - NO need to open an issue for this, you can directly open a PR. The PR title should be: `Womanium Final Assignment - `. The file name should be in the following format: `__hw4.ipynb`." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "202628d6-3fe3-47fa-8a15-04b7fd9716f4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "from classiq import *" + ] + }, + { + "cell_type": "markdown", + "id": "9f608bac-c3eb-495e-9015-3e6396c7543c", + "metadata": { + "tags": [] + }, + "source": [ + "# Implementation\n", + "\n", + "Implementation of a quantum random walk on a circle/one-dimensional line graph with size num_nodes. The core components are:\n", + "\n", + "1. **Initialization**:\n", + " - Setting the number of nodes and the size of the register.\n", + "\n", + "2. **Quantum State Preparation**:\n", + " - The `prepare_minus` function prepares a quantum state by applying an X gate (bit-flip) followed by a Hadamard gate (superposition) to a qubit `x`.\n", + " - The `diffuzer_oracle` function modifies an auxiliary qubit based on whether `x` is non-zero.\n", + " - The `zero_diffuzer` function allocates an auxiliary qubit, prepares it in the minus state, and applies the `diffuzer_oracle`.\n", + "\n", + "3. **W Operator**:\n", + " - The `W_iteration` function computes probabilities for transitioning between adjacent vertices in a graph.\n", + " - It uses a control structure to apply a quantum operation to the `adjacent_vertices` qubit based on the value of `vertices`.\n", + " - The probabilities are set to create a quantum walk behavior.\n", + "\n", + "4. **Edge Oracle**:\n", + " - The `edge_oracle` function checks whether `vertices` and `adjacent_vertices` are adjacent and sets the result in the output qubit `res`.\n", + "\n", + "5. **Bitwise Swap**:\n", + " - The `bitwise_swap` function swaps corresponding qubits between two arrays `x` and `y`.\n", + "\n", + "6. **S Operator**:\n", + " - The `S_operator` function applies the edge oracle and swaps qubits if the result is 1.\n", + "\n", + "7. **Main Function**:\n", + " - The `main` function allocates qubits for `vertices` and `adjacent_vertices`.\n", + " - It applies the W operator and S operator sequentially.\n", + "\n", + "8. **Model Synthesis and Display**:\n", + " - The program creates a quantum model (`qmod`) and synthesizes it into a quantum program (`qprog`).\n", + " - The `show(qprog)` command displays the resulting quantum program.\n", + "\n", + "In summary, this program simulates a quantum random walk on a graph, where the walker's position is represented by quantum states. \n", + "\n", + "The W operator updates the probabilities for transitioning between adjacent vertices, and the S operator performs a random step by applying an edge oracle to ensure vertex adjacency and swaps qubits accordingly.\n" + ] + }, + { + "cell_type": "markdown", + "id": "bbe3dfa3-2265-44af-b708-9a0ad189f5bf", + "metadata": {}, + "source": [ + "## Common functions for circles or lines" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "425c8fd2-f8f5-409b-a569-d923819437c4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# Prepares the minus state (aux qubit) for the diffuzer oracle\n", + "@qfunc\n", + "def prepare_minus(x: QBit):\n", + " X(x)\n", + " H(x)\n", + "\n", + "# x: current node\n", + "@qfunc\n", + "def diffuzer_oracle(aux: Output[QNum],x:QNum):\n", + " aux^=(x!=0)\n", + "\n", + "# Zero diffuser using Grover's algorithm technique\n", + "# x: current node \n", + "@qfunc\n", + "def zero_diffuzer(x: QNum):\n", + " aux = QNum('aux')\n", + " allocate(1,aux)\n", + " within_apply(compute=lambda: prepare_minus(aux),\n", + " action=lambda: diffuzer_oracle)\n", + "\n", + "# non-zero probabilities for allowable transitions\n", + "# @qfunc\n", + "# def W_iteration\n", + "\n", + "# Iterates over all possible positions and applies \n", + "# the W_iteration for each position.\n", + "@qfunc \n", + "def W_operator(vertices:QNum, adjacent_vertices: QNum):\n", + " for i in range(num_nodes):\n", + " W_iteration(i,vertices,adjacent_vertices)\n", + "\n", + "# Edge oracle for checking adjacency of 2 vertices\n", + "#\n", + "#@qfunc\n", + "#def edge_oracle\n", + "\n", + "# Swaps the contents of two quantum registers: moves the walker\n", + "@qfunc \n", + "def bitwise_swap(x: QArray[QBit], y:QArray[QBit]):\n", + " repeat(count= x.len,\n", + " iteration= lambda i: SWAP(x[i],y[i]))\n", + "\n", + "# shift operator moving the walker if vertices adjacent\n", + "@qfunc \n", + "def S_operator(vertices:QNum, adjacent_vertices: QNum):\n", + " res = QNum('res')\n", + " edge_oracle(res,vertices,adjacent_vertices)\n", + " control(ctrl= res==1,\n", + " operand= lambda: bitwise_swap(vertices,adjacent_vertices))\n" + ] + }, + { + "cell_type": "markdown", + "id": "9761696b-cefe-4ea0-9c91-ebd33af62e22", + "metadata": {}, + "source": [ + "## Circle-specific functions\n", + "\n", + "Here we have the function W_iteration with the probability of 0.5 going in either direction.\n", + "\n", + "What is special about a random walk on a circle is that the node (0) and the node (num_nodes-1) are adjacent. This fact is taken care of in the function edge_oracle." + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "5ab73e30-56fd-4028-bb13-e2f883a4e3ae", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# non-zero probabilities for allowable transitions\n", + "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", + " prob = [0] * num_nodes\n", + " prob[(i+1)% num_nodes]=0.5\n", + " prob[(i-1)% num_nodes]=0.5\n", + " print(f'State={i}, prob vec ={prob}')\n", + " \n", + " control(ctrl=vertices==i,\n", + " operand=lambda: within_apply(\n", + " compute= lambda: \n", + " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", + " action= lambda: \n", + " zero_diffuzer(adjacent_vertices)))\n", + " \n", + "# Edge oracle for checking adjacency of two vertices \n", + "@qfunc\n", + "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", + " diff = vertices - adjacent_vertices\n", + " mod = diff%num_nodes\n", + " res |= (mod == 1) | (mod == num_nodes-1)\n" + ] + }, + { + "cell_type": "markdown", + "id": "423cf377-1bc7-4637-855c-b82ced39cca9", + "metadata": {}, + "source": [ + "## Circle with 4 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "e39e695c-cc7d-4983-ba7b-2d076262a66b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Circle with 4 Nodes \n", + "\n", + "# Size of the register required for the number of nodes\n", + "size = 2\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "a863aa31-dc65-4ad4-9985-4fca062ab269", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk operator function\n", + "# applies the W and S operators after initializing\n", + "# vertices\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "1427b784-9701-4338-aec2-5cb5566a6d32", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 0.5, 0, 0.5]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5]\n", + "State=3, prob vec =[0.5, 0, 0.5, 0]\n", + "Opening: https://platform.classiq.io/circuit/a285c49b-b33e-4c1e-ab82-62011fb2f008?version=0.43.3\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "22cec3d3-aef0-46c6-9de2-74ee40d81b96", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "write_qmod(qmod,\"random4\")" + ] + }, + { + "cell_type": "markdown", + "id": "0c9a5e9c-ed50-44d1-b9ed-665f96274a92", + "metadata": {}, + "source": [ + "## Circle with 8 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "a5063b48-425c-4d73-8d6e-8b575cc61be3", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Circle with 8 Nodes \n", + "\n", + "# Size of the register required for the number of nodes\n", + "size = 3\n", + "num_nodes = 8\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "d137cf61-e92b-46d4-870e-4d1fc021650c", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk operator function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "94168a88-cdb4-411c-a162-52adf0c622bb", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0.5]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=7, prob vec =[0.5, 0, 0, 0, 0, 0, 0.5, 0]\n", + "Opening: https://platform.classiq.io/circuit/471e56b8-c366-4c74-9a8b-8010c35ebb5d?version=0.43.3\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "7458e3ac-0e87-49e2-9139-59ee31fc27f4", + "metadata": {}, + "source": [ + "## Circle with 16 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "7e7ad59c-80ca-4452-af10-883711c9b104", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Circle with 16 Nodes \n", + "\n", + "# Size of the register required for the number of nodes\n", + "size = 4\n", + "num_nodes = 16\n" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "d3444344-5117-4021-9d15-1476582bf61d", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "d30601d3-5b4f-4b23-af9d-f93d0a4f6777", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", + "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", + "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=15, prob vec =[0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0]\n", + "Opening: https://platform.classiq.io/circuit/e65b9cf2-3330-4af0-b561-beacef62e3e1?version=0.43.3\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "ccfdf941-9d91-402f-a200-ccc266f73e99", + "metadata": {}, + "source": [ + "## Line-specific functions\n", + "The function W_iteration defines the transition probabilities for a line. At the beginning and at the end of the line the walker can go only in one direction (probability = 1). For all other nodes the probability going in either direction is 0.5.\n", + "\n", + "Here the function edge_oracle just has to check whether the vertices are adjacent (distance = 1)." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "47e777d7-6527-4901-a034-951c624037e4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# non-zero probabilities for allowable probabilities\n", + "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", + " prob = [0] * (num_nodes)\n", + " if i == 0:\n", + " prob[i + 1] = 1.0\n", + " elif i == (num_nodes) -1:\n", + " prob[i - 1] = 1.0\n", + " else:\n", + " prob[i - 1] = 0.5\n", + " prob[i + 1] = 0.5\n", + " print(f'State={i}, prob vec ={prob}')\n", + " \n", + " control(ctrl=vertices==i,\n", + " operand=lambda: within_apply(\n", + " compute= lambda: \n", + " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", + " action= lambda: \n", + " zero_diffuzer(adjacent_vertices)))\n", + "\n", + "\n", + "# Edge oracle for checking adjacency of two vertices\n", + "@qfunc\n", + "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", + " diff = vertices - adjacent_vertices\n", + " res |= (diff == 1) | (diff == -1)\n" + ] + }, + { + "cell_type": "markdown", + "id": "07488d17-7cac-4e36-8335-e3303cff8efe", + "metadata": {}, + "source": [ + "## Line with 4 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "92d3f78c-ee23-45bf-acba-6d0ff0608847", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Line with 4 Nodes\n", + "\n", + "# Register size to accomodate the number of vertices\n", + "size = 2\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "613c61cc-10ea-4950-a262-3dd572c8701c", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "46fca7f3-3106-416d-a3f8-379f7095f8fa", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 1.0, 0, 0]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5]\n", + "State=3, prob vec =[0, 0, 1.0, 0]\n", + "Opening: https://platform.classiq.io/circuit/c4d4c900-fa62-4e83-b507-74837c228399?version=0.43.3\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "9dd17d8c-83dd-463d-b155-9b8c949f97d1", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "write_qmod(qmod,\"random4\")" + ] + }, + { + "cell_type": "markdown", + "id": "cfbc239f-2bfb-496a-a752-1a84f657ac3f", + "metadata": {}, + "source": [ + "## Line with 8 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "08283335-a49f-4d6e-a702-fb76ab01724b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Line with 8 Nodes\n", + "\n", + "# Register size to accomodate the number of vertices\n", + "size = 3\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "07a57ceb-c1da-47d7-8d6b-45e18667d747", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "fb711141-eadd-4ac5-bb1d-fbd31bb71f8f", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 1.0, 0]\n", + "Opening: https://platform.classiq.io/circuit/47b7f084-71e8-4984-8b58-b6c87f328209?version=0.43.3\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "7b486184-7850-4c58-baac-9e89a942e059", + "metadata": { + "tags": [] + }, + "source": [ + "## Line with 16 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "52ccbff2-f15f-4fe2-86fd-6e1d0128f428", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Line with 16 Nodes\n", + "\n", + "# Register size to accomodate the number of vertices\n", + "size = 4\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "e773bbb1-e532-477e-8891-c47f8f4f1f8d", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "c3833a55-49af-4214-be22-5b52eaa22ba6", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", + "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", + "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=15, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0, 0]\n", + "Opening: https://platform.classiq.io/circuit/89a4226c-20e4-4a24-93a2-1b3d3d6eac27?version=0.43.3\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "4b28d548-febf-43b3-9271-6cab28fd2cbb", + "metadata": {}, + "source": [ + "# Results" + ] + }, + { + "cell_type": "markdown", + "id": "b7d6c2a8-063f-4ffe-bf3c-18212aa1d57f", + "metadata": { + "jp-MarkdownHeadingCollapsed": true, + "tags": [] + }, + "source": [ + "## Number of qubits vs. nodes\n", + "\n", + "| random walk | num_nodes | transpiled qubits |\n", + "| :- | :-: | :-: |\n", + "| circle | 4 | 13 |\n", + "| circle | 8 | 22|\n", + "| circle | 16 | 33 |\n", + "| line | 4 | 17 |\n", + "| line | 8 | 25 |\n", + "| line | 16 | 37 |\n", + "\n", + "Here we see that the more nodes we have, the more transpiled qubits are going to be used. Lines need more qubits than circles." + ] + }, + { + "cell_type": "markdown", + "id": "2d8f26a8-18aa-4dda-a3ed-a3974e0184b9", + "metadata": {}, + "source": [ + "## Circle 4 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "335019e0-e185-41d5-b894-6116ada649d6", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('circle4.png')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "6bd34621-0458-4a1b-ac69-62892bcba54c", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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zWj37t2EQiFqa2t56KGHeOqppxgZGWHVqlX5c9xisRjJZNJ3J4tffHJ+Z2cnTz75ZP53yHYrtLW18dxzzzE+Pp4/ipZMJn0XAoXr43kee/fuZdmyZRhjuPPOO3nzzTfp6OggFouxevVqXnrpJaLRKK7r5mdc8evnk0gk+O///m8aGxtpbGxk06ZNPPHEE4yNjbF+/XpSqRTpdDq/rZXLAaj5oDCbgcLxV57nYa2lvr6eM2fOMD4+TltbG3fffTfvv/8+Dz/8MI7jcP78eV5++WVSqZSvdhhgUk0rk8kQCoW46667sNbS2NjICy+8QDwe56abbuLGG28kk8lw8OBBDh065LtAK+R5HqdOnaKqqoqqqio6OzupqanhN3/zNzlx4gQ33ngjzc3NZDIZXn31Vfr6/DcxZKFkMkl3dzcbN26kp6eHeDzO2rVrueOOO/jggw947LHHMMbQ39/Pq6++mp/9wm/b23xTM3OGck1NyIZAT08P0WiUxx57jNtvv50PPviAbdu28f777/PEE08QiURoaWkpcamnVth0huyRtIMHD7J582b27dtHPB7PDwd49tlneeGFF7j55pvznex+U7g+uSmHTpw4wUMPPcSjjz6aH+ycSCR44oknOHjwIDfffDPg3yZnYSB1dnayYMECvvOd77Bjxw7279/Ptm3beOedd/j5z39ObW0tixcvLmFpS0s1szmKx+M8//zzVFdXk0wmefTRR3njjTc4fvw4NTU11NfXMzo6WjbfkqdPn+bnP/851dXVtLa2sn79ep566inGx8fZtGkT4+PjZdGUyYXTO++8Q21tLalUiq1bt+bPEgBoa2vj9OnTpSzmtBljGB8f57nnniMWi5FKpXjsscd49dVX6ejoYMGCBfkplqZ7PdmgUc1sDnIBlU6nGRwcJBqNYq2lvb09P4L78OHDDA4OltXGdfbsWdrb21m5ciWffvop8XictrY2brvtNt54442yCLPC2ubQ0FB+Hfbv348xhltvvZWamhoOHTpU4pJOT277SSaT+W0tnU7T1dWVb0Lv378/EPOrzZZqZrN08fRDxhhGRkZIJBLcfffdtLS0cPTo0fxIbb+bqubY0dHBHXfcwaJFi2hububFF1/0ff9SoYvnumtvb+f2228nHA6TyWTYvXt32Ux8efE0PSMjI2QyGe6++26WLFnCwYMH+fjjj6d8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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('circle4hist.jpg')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "5216c457-12f6-451e-92a8-d43c5a15e98f", + "metadata": {}, + "source": [ + "## Line 8 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "c6ebdc89-ba16-41c4-b623-7862a0ae29af", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('line8.png')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "6dffee97-669a-4c03-a506-55c8ebbe0be1", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAARMAAAGFCAYAAADelhfmAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAABTxUlEQVR4nO3deZhU13ng/++5t5auqt7oDdRA0w3d7IhV7KsAocWSF0mO4rEzeTJxHNux4slMMv49zmTyWI4Tx5PEnomdOBMnTsayJ1JkWYsRSBYSiB2xNKAGmq2BBnrft1ruPb8/quqqu9VAd3HpLqT38zzQXdVV5566y1tnu+corbVGCCFukzHWGRBCfDhIMBFCuEKCiRDCFRJMhBCukGAihHCFBBMhhCskmAghXCHBRAjhCs9wXzh//vw7mQ8hxEgkxpraysS0baJTfGR8Yg56Zi7aD5ZhY2NiaANDa4hqvKfa6XnpNOalLhRqRJurrKy85WuGHUyEEOlFoVFY2IbCvBIh/A+V2FNDeGcVoSZlkuE30b0WkboedFU9sQvtmL0alayQjCye3JIEEyHuQlopLGXgtS1sbGKmgREG41Qv9qmLYNh0GwA2HstGaS8aDwYxlNbYyuVIggQTIe5KSoPHBjBA2Zi2haEttAKNAlvhtRWGVoBJ1ABD21gKknHE7XAy7GCSvB9QKYXcGyjE2NOGxsbA0B6U1lhKo3QyUmhAYyeCi9e2iVeMTECjsXH7Kh52MAmHwy5vWgjxYTLsYNLZ2Ynf77+TeRFC3MWGHUyUUgSDQed3IYTob8SD1iSQCCGGIiNghRCukGAihHDFHQ0mWmunG3mon/27mAc/3//fUO8XQqSXOz5ozTAMSkpK8Pl81NbW0tPT4/wt2f6itR7QFhMKhTAMg66uLufv/d/Tf8yLECI93NFgopQiEAjwuc99jlOnTrFu3Tr++Z//mVAoRCQSIRKJkJWVRV9fH0op+vr6yMjIYMaMGYRCIQBaWlo4e/YswWCQnp4eotGok7YQIn3c0WCSLHGEw2GuXLlCYWEh69atY8aMGXi9Xk6cOMHs2bPZu3cvCxYs4Gc/+xm/9mu/xunTp/F4PCxcuJCuri6mTp3KpEmTeOuttzhz5sydzLIQIkV3tM0kWXrIysrioYceYs+ePSxatIhwOEx7ezstLS0opbBtm2AwiGEYBINBlFLEYjHOnDnD7t27uXz5MoZhYNu2k660nQiRXu54AyxAY2MjP/nJT1i9ejUNDQ00NjZy7NgxWltbOXv2LEuWLEEpxerVq8nPz8eyLCZPnozWmpkzZ2JZFrW1tSxZssRJV6o5QqQXNdwV/SZOnEhubu6IL2LTNJk0aRKXL1+mrKyM1tZW52d3dzclJSVcuHABr9dLcXExLS0tNDU1MXXqVK5evUpJSQmdnZ3k5uZy7tw52tvbJZgIMcpOnjx5y9fc8WACN77juH9vTv/HQ71nqJ9CiNExnGAyqoPWBgeBoQJL/8eDXyuBRIj0NSqTIw0VKG72+Gbvl0AiRHqS4fRCCFdIMBFCuGJE1RwZ2yGEuJFhBxPbtmlvb7+TeRFC3MVGNNNaRkaGjD4V4iNmuJ0eIwom/f8JIUR/I2ozSQYRCSZCiMGkN0cI4QoJJkIIV0gwEUK4QoKJEMIVEkyEEK5w/UY/wzDIyspy5h1J8vl8+P1+Ojs7B7w+FAo5KwValkVraysAOTk5xGIxurq6yMzMxOv10tHRgW3bhEIh53FGRgbBYBCtNZZl0d7ejm3beL1eAoEAlmVh2za9vb0D8piXl0dnZyeRSMTJp8fjITs7m76+vgETXwN4vV5ycnKcaSg7OjoG/H3w+BvTNAkGg3R1deH3+wmFQs72BguFQvj9fjo6OojFYgPymZOTQzQapbu7G601pmmSl5dHa2srWmuys7Odv2dlZdHb2+vMk5vk9/vJysoC4qOYe3p68Hq9dHZ2DjlmKHkMATo6OlBKkZ2djW3bdHZ2kpmZSUZGBhBfNjYajZKdnU0kEqGnpwetNR6Ph1AoREdHx4BtJI9l8jiHQiF8Pp/z2Ofz4fV6nXRuNC1F/8f9n7uVO333+UgnO++fj/55S7qb7pR3NZhorZk4cSJf//rX+c//+T87F6RSikWLFrF27Vq+853vDNhZW7Zs4eMf/zjZ2dk0NDTw+7//+yxfvpzf/M3f5J/+6Z9oaWnhD//wD/F6vbz88sscOnSIP/7jPyYQCPD8888D8Nhjj5GTk0NtbS1/8Ad/QDQaZe7cuTz++ONcuXKF69ev8/LLLwPxi/ypp55iw4YN/MVf/AXnzp0D4hfQf/pP/4n169fT2dnJ17/+dRobG518lpWV8bWvfY2SkhK2bdvGX/3VX33gQux/4Ddv3szGjRv51re+xX/7b/+NkpISqqqq+Pa3vz1gUuzS0lLn8+zcuZN//Md/xLIsDMPgM5/5DA8//DCxWIxvfetb1NTU8IUvfIHy8nKeeeYZHnzwQbZs2UIsFuMv/uIv+I//8T/yL//yL5w6dWpAvubMmcPv/d7vEQwGCQaD/O3f/i2rVq3iT//0Tz9wDJVSPPDAA3zuc58D4Ac/+AH5+fk89dRTaK357ne/y7x589i8eTNFRUX84R/+ITk5OXzpS1/itdde48c//jFaa0pLS/nt3/5tvv71r2NZFgBz587l6aefZseOHfzbv/0bM2fO5Ktf/Sq7du3ipz/9qXMMPB4Pf/u3fztk3vx+Pw899BAQn8Fv3759TvrDoZRi+fLlnDp16o6M6FZK4fV6WbFiBXv37h3w5XAjmZmZzJ49m4MHDw543ufzYZrmgC/CdHbHSiYej4f777+fWbNmsX//fnw+HxUVFXzxi1/k4MGDHD58GK01L7/8Mtu2bePpp5+mvr6evLw8Pv/5z/O///f/5t133+UrX/kK+/btY//+/fyX//JfsG2bhoYG9u3bx/Lly/kf/+N/8Nprr/Ff/+t/5dy5c/j9fj75yU+ycOFCAoEAgUCA5cuXU1xczLZt28jPz+eBBx7gmWee4cKFC06+/X4/K1eu5Ic//CGf+9znmDJlCsuXL6e0tJRDhw5x6NAhvvOd7/Anf/In/PznPycjI4OHHnqIoqIiXn/99QFpTZo0id/7vd+jrq6O3t5evv/97xMIBHjmmWfIzs6mvLycJUuWcPLkSaZMmcL58+d57rnneOaZZ3jhhRdoampy0v/2t7/NypUreeihhzh37hzTpk3jW9/6Fr29vTz00EM888wzbNiwgS1btpCZmcnHPvYxli1bxksvveR821dWVvKlL32JBx98kBUrVtDW1kZpaSlf/OIXqays5MyZMzz88MOEQiG2bdvGo48+6qwi8Pjjj5Obm8vf/d3fMXHiRB555BH+/M//HIDy8nJqa2v54he/SG9vLzU1NXz6058mNzeX6upqJk2axO/8zu9w+vRpDh8+zNNPP80rr7zC66+/TiAQ4Ctf+Qrbt29n69atACxatIjPfvazTuAf/G2stcbr9ZKRkcGrr77KJz7xCaqrq9Fa09LSQmZmJpFIhGAwiN/vRylFXV0dubm5ZGRkoLWmrq6Ouro6IpEI+fn5ZGRkYFkWdXV1+P1+JkyYgGVZXL9+nVgshlKKrKws8vPzaWpqore3l3HjxjmlzpaWFrTWGIbBhAkT8Hg81NfXc/XqVQzDoKCgwCmhZWVl0dnZ6ZS229raKCgoQGvN+PHjMQyDoqIiMjIyqKurY8GCBYwbN47du3ejlCIvL8/JQ0FBAR6Ph2vXrqXNiPQ70mailGL27Nl84QtfoLe3l6997WsUFhZyzz33EIvFnG8zgFgsRjAYZM6cObz55pssWrSIyZMn86UvfYnPfvazNDc3s2DBAlauXEkgEKCqqoo5c+bwu7/7u+zevZtwOExWVhYVFRW8/fbbPPHEE6xatYr6+nonL4WFhYwbN46nn36azZs3M378eP74j/+YDRs2kJubS2FhIQAHDhzga1/7Gn6/nytXrpCbm4tlWXz5y1/G5/OxefNm8vLyuPfee9myZQuf/OQnmTx5Ml/+8pfJz8+nsLCQnJwcfud3fof33nuPaDSKbdvU1tYyYcIE6uvrycnJ4Y/+6I8IBoN89atfxev1MnPmTNavX08oFCIrK4uCggKCwSAdHR088MADVFRUEAqF2LJlCyUlJTzzzDPMmjWLjo4OHnzwQcrLywkEAk51atGiRTz11FPk5+dTUFDgTMa9YcMGfvnLXxKNRhk/fjyRSIQ/+IM/oLS0FI/Hw5QpU/j0pz9NU1MT69at495778Xv99PS0sL69euZNWsWgUCAzMxMNm/eTHFxMQUFBbS2tnL16lWWL1/O6tWraWlpcS6MSCTCV77yFef9n/70p/n93/99Zs2axbx58/jkJz/JV7/6VSZOnMjnP/959u3bN2Rxv7+MjAzKysoACIfDrF+/Hr/fz/z585k0aRIPPfQQs2fPZuPGjUyePJnHHnuM6dOnO6WpefPmkZ2dzcc//nEqKirYsmULRUVFbNmyhcmTJ7Nx40by8/OdbT3yyCNMnDiRRx99lMLCQp588klKSkp49NFHnepeYWEhGzduZPz48QQCARYtWsS4ceP41Kc+RVlZGZ/97GcpLS3l4YcfZsKECSxduhSv18uGDRswTROIV6UnT55MeXk5K1asIBgMEgqFyM3NdfLwsY99jLy8PD7xiU9QVFSUVre33LEG2LKyMs6dO8ezzz5LV1cXRUVFVFVV8bOf/QzbtsnNzXVeu2rVKi5evMjVq1cpKChg27Zt/PVf/zWPPPIIu3bt4s0336SiooLGxkamTp3K6dOn2bZtG6tXr8br9bJ27VrOnDlDfX09M2bM4JVXXmHv3r3OTn777bd54YUXKCoqori4mB//+Mc899xzfOYzn+GLX/wi3/nOd1i9ejVz5szhJz/5CUop5s2bx5w5c7jvvvucGfN/9KMf8Y1vfIMnn3ySxYsXk5ubS15eHs3NzXzhC1/gO9/5Dl/60pdYu3YtZWVlzJs3jyeffJLs7Gx+/dd/neeee47CwkIKCgooKyvj6tWr7Nixg3//939n2rRpdHZ2smzZMv7n//yffOpTn+Iv//Iv6ejooLS0lCtXrpCdnc33vvc99u7dy6OPPsq3v/1tenp6KC0t5fz580SjUV566SW2b9/OrFmz+O///b/zZ3/2Z0ycOJHy8nKysrI4cuQIAOfPn+enP/0pXV1dVFRUsHTpUsrLy8nIyOD73/8+Fy5coKKignPnzvFXf/VXXLt2jYqKCmpqamhra+PLX/4y1dXVrF27lsuXL1NdXU0wGORXv/oVzz33HFeuXOHKlSv87Gc/o7GxkYqKCo4fP843vvENFi9ezLJly6iqquIb3/gGCxYs4Omnn6aiooKKigo2btzIqlWrbjiJlmmazJkzh3PnztHd3Y1hGANu8wiHw+zfv58zZ86QmZlJT08PBw4c4MKFC+Tk5Div7+7uZv/+/Vy6dImioiICgQD79u2jvr4ew4hfGnl5ebS3t7Nnzx56e3vJycmhoaGBvXv30tXV5QST7u5uwuEwoVDIKdFAvCp28OBB52c0GsXj8dxwNHmyfSsYDHL9+nUuXbqE1pq2tjb27t1LJBIhFApx/fp1jh49imVZadOe4mo1JxgMsnjxYufb+LHHHuP+++8nMzOTlpYWFi9ezMaNG7Ft2ymC+/1+tmzZwr/+6786xc2lS5cydepUp6HzwoULPPjggzz//PNMmDCBWCxGa2sr06ZNIxAIsGnTJn74wx9iWRZNTU2sXLmStrY254QoKSkhNzeXq1evUl9fT0VFBU1NTbS2tvLd734XrTWBQIDf+q3forOzk76+PmbNmkV5eTkvvfQSDz/8MNnZ2UyfPp2ysjLa29s5d+4c+fn5vPDCC3R3d3PkyBFnqY7nn3+eWbNm8cQTT7Bnzx6+8IUv4PF4CIfDdHV10dTUxMsvv4xpmly/fp1QKMSDDz7IK6+8wgsvvMAvfvELLMsiEAjQ1NREV1cXO3bsYM6cOcyYMYOioiKam5udf52dnezZs4cNGzYwa9Ys5s+fz7Fjx3j22WeBeOkv2TbR3d2NUoqcnBzuv/9+MjIymD59Op2dnVy7ds1pZL1y5QqmabJ9+3ba29ud4vTrr7/O9OnTGTduHBMmTKC6uprx48ejtebatWusXLmS9vZ2TNMkFAqxbt06cnNzqaqqYvHixVRUVGAYBhcuXGD16tWUl5djmib//u//zj/8wz+wefNmJk+ezPHjxz9wfiW/HDo7O3njjTd45JFHqKqqAuIN9oWFhVy/ft1ZVjbZXtF/qdnBDbpaa2zbRmuNz+cjJyeHcePGAfELvbe3l+zsbHJycvD7/YTDYWfJleRPgEgkwq9+9SvWr1/P+PHjnef7vza5PcuyyMzMJD8/3+l88Hg8lJeXk5OTQ3V1NcXFxWitCQaD2LZNVlYW2dnZ+P3+AW1uQ32useJ6MJkzZw7PPvssBw8eZOLEiaxatYr/83/+D1VVVZSXl7NgwQL+5m/+xukNycnJ4b333qOyshKAXbt2UVxczPz58/ne975HOBxm06ZNPP/88/zqV78iNzeXcePGMWXKFH7wgx8QDAaprKx0Tqqf/exn/MZv/AaGYfDuu+9y+vRpPvaxj2FZFt///vfp7e3lc5/7HOPGjXMeQ/xk+OEPf8jGjRvZtWsXr7zyCrZtU1xczO7du8nMzGTdunVYlsVf//Vf09DQ4Fws27ZtIxqNorWmr6+PlpYWLMuioKCAWCxGVlYWra2tPPLII3z/+9/nn/7pn1i9ejWnT5/GNE02bdrEG2+8wdatW4nFYkSjUZRSTJo0iZkzZ/Jnf/Zn1NbW8nd/93f8+q//Ol1dXfz0pz+lpKSEGTNm8M1vfpPr16/zy1/+khUrVlBTU8MLL7xAOBwG4kX13t5etm/fjtaaK1eucOLECe677z7+1//6X1y9epXPfvaz9PT0cOXKFfLz81m5ciV/8zd/w6lTpygtLWXJkiV85zvf4eLFi2zatIl169Zx9OhRXnvtNVauXEk4HObUqVP8xm/8BqtXr2br1q0cOnSIFStW8Pd///fs2bOHYDDIypUr+cd//Efeeust/H4/q1at4p//+Z85fPgwlmWRl5dHbW2t0ws0+CKJRqNcvnyZtrY2Dh8+TEFBAceOHWPJkiVcv36drq4uLl++TCwWo6WlxXl9sq2tq6uLK1eu0Nvby+XLl7Esi/r6etra2jh69CgrV64kOzvbuUjb2tqorq5mzZo1nDp1isbGRq5cueLsx2TvXGZmJsuXL6ezs5OGhgYuX75Mb28vtbW1xGIxLl26hGVZXL58maamJpqbm5k7dy6nTp2io6PD6ayIxWIUFhY6bTvJ0uL58+dZs2YNJ06coLW1ldra2rQJIkkjmp0+GUVv9AFu1s011O83qu8N7vozDGPAIuZDvW+oxrqhutVu9HGHytNw3ner9w7ncyYXIhuczuDPPfiz36yL9EafYbjvT+Yp+Xv/PPZPa6h9c6PjPtTjG+2ToS6UVLZzs+0N/ltFRQX33HMPkyZN4qWXXqK7u/uGaQ/O03DO6RutsnCzNIa7v+606urqW77G1WAixN0oeQlkZmaSlZVFV1cXnZ2dcp73M5xgMiqz0wtxN+jq6qKrq2uss3HXkuH0QvDBdZrEyEnJRHzkybpM7pCSiRDCFRJMhBCukGAihHCFBBMhhCukAVaIO+BmgxRH+t6h3jec19xO+qmQYCKEi242BjTVu3uH877buXPYrWH5Us0RQrgyjYGUTIRwweCL0c05RoZ7j9jtpj/SKScHk2AihIv6X+zJ31OtRtzoRsqhHqcaAG50Y2sqJJgI4ZL+wSP5c/BzN3OjO9/7/22obaSa/uDnb3bX/HBIMBHCRcl5aj0edy6t5Pw2/YNFcqJpN9i2TTgcdqUBVoKJECm6UWnANE1nlr/b5fF4nAmYkqUGN9M3DINwOOxKj4705gjhgv5TQ97JbaRzmlIyEcJFQ82M53b6/d1O+rfbQDyY64tw3Ymp9280TeNwt5PKdHipbOd23nOzNNJl6j5xc6kMWBvOdJPDbRAdaorSm005ebP3psL1ksng+UKTdbtkg1GyMSm5lgvE1wsBnGn7bdt2/p5cFiA5yXKyYSsWi2EYhrOam2mazrKgybTg/dnBk/XM5LyqlmU5K+d5PB7nscfjcV4Ti8Wc7SXzZlmWs63Beey/XdM0icVizjeVaZrOQU1uL5lf27aJxWJOuoCz35KPk/lIPp9MdySr2Ql3jXR+26HeX1paSlFREQcPHhx2NelWF/2yZcuYMmUKWmvee+893nvvvdtOczhcDSZKKebOnYvH4+Ho0aMUFxczc+ZMOjs7KS4upq2tjf379xMKhZg7dy67du2itLSUe++9l+7ubk6cOEFZWRn79+9n+fLlXLhwgbVr1zqrxXV2drJ06VKam5t57733WLZsGdu3bycSibBlyxYqKytZt24dzc3NnD17lpKSEk6fPk1bWxtLliyhr6+PmTNn0tfXx/Hjx6murmbevHmUlZWhlOLNN99k/fr1xGIxGhoaaGlpYd68efT09HDq1CmmTJnCnj17uO+++6ipqWHWrFns2bPHWXOmubmZM2fOMH36dGKxGNXV1c5Kf/Pnz6e+vp558+ahlKK6uprc3FyKi4vxeDzs3r17wPo38+fPd5b+qK2tdRa3mjFjBoZhcPHiRTIyMtizZ48ElLvA4sWLKS4uHvBcTU0NFRUVPPbYY4wfP57GxkYOHDgwYAmNkUh+kX/sYx/jkUceAeLLu1ZVVblWlbkZ16s5fr+fRYsWcenSJRYvXoxSikgkwunTp7l69SrhcJj58+dTWlrKu+++S1FREXV1dRw5coTMzExn0urkgtY9PT0cPnyYRYsWcfbsWWprazl58iSxWIzx48ezcOFC6uvrKSsro6qqit7eXg4ePEh3dzdz585l9erV7Nixg2AwyJ49e/B6vTQ0NHD+/Hkgvm5PZWUlM2fOZNy4cXg8Hg4dOkR7eztz5syhvr6ew4cPk5ubSygUQilFMBjE4/GQmZlJLBZjz549ZGRkcPToUWzbZt68eezcudOZTzQQCFBQUABAc3Mz7777LhkZGSxYsICXX36ZiRMnsmDBAqLRKIZhOIuea62dZSNCoRC7du0iEong9Xo5ceIEa9eupaCgwFm9UKSvmTNnsmDBggHPmaaJUvEVJ9esWcPZs2c/sN7wYLe66S8ZUPqPT3G7beRGXK/m2LbNmTNn2LJlCxcvXnRWUCsvLycYDFJVVUVJSQn19fVMmzaNyspKFi9ezJYtWzhy5MgHPuz48ePZsmULO3bswO/3U1JSgm3bnDp1iuvXr1NQUEBRURE1NTUAjBs3jrlz53LmzBn6+vqora1lyZIlQ9ZBIX5AV61aRU9Pj7Pe7OzZs7l06RLHjx9n8eLFPPjggwMWhbrZAWlra+P48eNs3LiRY8eOUVNTQ1ZWFn19fc5KbFprp8svuaCYz+cjEokMSDsajXL69GmWL18+YFxBsjjc0NBAfn6+BJM0p7XmZz/7Gf/v//0/pk2b5qzlo7Vm2bJlPPfcc/zkJz9Ba51yqQRgypQpTrUpqbS0lNWrV1NdXU1DQ4MbH+eGXO8aVkpx9epVZ0FsiLcjVFVVcfr0aSZMmEA0GqWzs5OpU6fi8XiorKwkFosxbtw4srOzyc7OJhAIEIlEqKuro7KykvHjx6OU4sKFC1RWVhKNRrEsi/3793P06FH6+voAaGpq4vDhw86Kgckp+pOlisEsy3K+DYLBIH19fRw7dsxZ0e748ePOesbJVdWCwaDTdhIMBvH5fE56pmlSV1fHiRMnmDZt2oBt1dXVUVFRQVZWFkopAoEAhYWFlJWV0draimVZzrrIybEFly9fpqWlxVlOtf+3zu2ceGL0JNtGFi1axOc//3k2btxIUVERixcvxrIsTp8+zaJFiygvL7+tkoNSis9//vMsWbLEee7BBx/kySefHJWqsOslk8bGRnp6emhsbHQWAI9Go1RUVDBp0iRaWlrYuXMn7e3tzJ07l5KSEiZOnEhrayvnzp3D4/GwbNkyzp8/T1tbG5cuXeL06dNOu8rUqVNZsWIF7733nrM6mtbx5T2TS3uuXLmSmpoaamtriUQiTnuE1pr6+npnNUGAhoYG2tvbOXjwIHl5edTV1bFo0SJaW1tpbW2lrKyMjo4Ozp49i2EYLF261Flvt6enhxUrVtDQ0MDVq1fp6+sjEAiwZMkSDMPg2LFjAM6q9zU1NYRCIZYtW8bFixfZu3cv8+bNo6+vj8OHDztVRMMwOHr0KPn5+fT09PDuu+/S1dWF1pqWlpYBxeOzZ8+6fQjFHbBp0yZWrFjBpEmTqK6uZtGiRTz++OMDgsfJkyf57ne/O+ILP5nGpUuX+JM/+RO++c1vMnv2bLTW7N27l29+85s0Nze7+nmGzIebi3DdqCtqJI+Hlekb3AA1+DUj2c7t/v1mr1NKsXTpUs6dOzesgzqcbWVkZLBkyRL2798vDbBjaPB9OLZtEwgEnN635LlqmiamafLZz36WtrY2du3ahd/vp7Gx0UnLtu0PrCNs2/aAlQVhYCl7qDt+S0tL+eY3v0lLSwvf+MY3BmxjcNex1tpZf3rwch/9fx+zFf0G94vfqJ+7f4PQzd7zgUwP8Z7+gWy4aQ6+wWlwvoZ6/41ed6uxLMk2j8EX/lCvH84+SHZzx2IxGWcyhoYbTAoLCwmFQni9XlpbW3n44YeZMmUK//f//l8nrb6+Purq6gacR8MJJkONQ5kwYQLhcNip7g/1GreDyR0ZATv45L7RyX6jjN/sPbd6fypp3uh1t3r/4Nfd6H0wdBAZye/9JU8yaTO5OyileOqpp1i9ejVaa5577jm8Xi/r169nzpw5znE+ceIEf/7nf04sFhtx+kopHn/8ccrLy4d8zZEjR3j99ddv+7PcjAynHyWpVOeGk5aUStKf1pof/ehH/Ou//isA4XCYT3ziE7z00kv8y7/8i/O6WCx2yyprsjQx1HFvb2+nrq5uyBJue3v7LdO93XNJFi4X4jYMt5ozWEZGBoZhOFWMG305WJY1oJqjtSYUCjkjoYdTJe7/3htVcyBedU67ao4QHwU3u9/mVnp7e2+ZzkjuybmZkXz5304JRYKJEC4a7oU40jbBkT43kvSG0043HBJMhLiDUr3jfLgXtVvtcG6QYCKES/qPTO5/l/hI3j/4lo/k3ff9Je9YH+kdyv0lA1ayR9CNdlAJJkKk6EZjhCKRyAfmbXUjfYgHgXA4TCQScb1UcrsBRYKJELfhRiOe+z+XykV/ox6eoXpvUk1/qJ+3Q4KJELdpqHEdbjVqDt7OnUg/lQGjQ5FgIoTLbvfivlUD7J1M/3bSltnphUgzd3pQ6J0IJCDBRAhXDB6vcTemf7ukmiOEi9y84G/WAHun0r8dEkyESFNjVd1JlVRzhBCukGAihHCFBBMhhCskmAghXCHBRAjhCgkmQghXSDARQrhCgokQwhUSTIQQrpBgIoRwhQQTIYQrJJgIIVwhwUQI4QoJJkIIV0gwEUK4QoKJEMIVEkyEEK6QYCKEcIUEEyGEK8ZsDtjbWYVMCJF+Rr1korV2FgHyer3k5+c7f1NKkZ2dTSgUQinF+PHjKSsrw+fzOe8VQqSnMavmZGRk8NBDD7Fx40bnOZ/PxxNPPEFJSQnFxcWsW7eOadOmsXbt2g+sGzJ4tXghxNgas2BiGAZnz54lEok4gWLx4sUYRjxL5eXlHDt2jN27dzN+/Hi8Xi8+nw+/34/f78fr9d5yGUUhxOgZszaT7u5url+/zowZMwCYNGkSRUVFXLx4Eb/fTygUIhwOY1kWWms8Hg8zZswgEAjg8/mYM2cOP/jBDySgCJEmRj2YJFeMT/6eVFBQgGVZTJs2jfHjx9PS0kJmZiYejwetNdFolKNHjwIQDAZZtmzZB9IQQoydMSuZZGRksGjRIiZOnMiMGTM4evQoR48eZenSpbS3t9PW1samTZuYOnUqFy9eJBaLARI8hEhXox5MkqWSaDTKiRMnqKqqoqenx/n7iRMnsG2bSCTCK6+8gs/no7W1VaozQqS5MSmZKKWwbZvGxsYP/K23t9epCnV2dkpvjRB3iTFpMxnO88nHUhoR4u4gw+mFEK6QYCLEbUgMnUQ7v4/8/XrAbzqR2t1nzHpzhLhbORe/VmilUNomZvgwtJ1aekph6hgaUNiASvx+d5FgIkSKFBqNAd4MJq/4JEZ20W2kpDDsGA3H3qDv+lmMu7B0IsFEiBQZ2GitiHkzKVq8BVU8Y8RpxAOSIqZ8eGO9tNWeInr9FPEWiLurbCLBRIgRS1Z0FAobW5nElBczhctJA7ahMHQMEmnZGCjutlAiDbAfHlqjnda8RBOevo1mwcRUERrttA3erQ2DblOJ/WCpePAwdSzR1pHCHD2Ax1aYWhO/HE0MrVB34a6WksmHjNIKnfiG8xLB0iYjP8k1ChutvCgVBe1B321fk3eQxojvH+IBQKHRSqW8jzQ2CoWhkg2w8UbYu40Ekw8RpWw0JkbuBAKlCxNF5dR6GGxMDDtG14WD0NWBoW1sGUAIkOhp0Siteb9rOFGaGOEu0oN+xt2NlRwJJh8qmnhXZeaUOcz+tT8ibAZQOpZaWspLRriFo//4/9HXfRxTiibiFiSYfGioxLejRmMSM7zYhifedZlCWmAQMX0obYDSaG3E22AkpogbkGAyanRinJNyHscb2VKsayeK1Co+dgqFxtTxuna8R8DjpJ9SbpUmppLByHa6MOOfwejXuJtidFGg9MD3a+c5EvsktbSTjZdavb+PUclYOPKWTa0Y2CCqpN9iKBJMRpEi/g3vBA+VuEBT6gUwUNpGATYGpo5hKwOtNIa2UFiAEU8/hWtSaY1HW2hlobSJreI9PMqXRc6ctRimF8vQGKlGQjtGx+k9WN0diTKVTjRsJlshjESzZArdGirREK1sDB3/3SbZcBrDxsQkGg+4t0g/3hRt47MhZsQTvws7WkaFBJNRogFbeVBaYeooCpuY8iQu+pFTSgMWNgYoi5ihUIOiRrIUNNLLXfd7VzJWxEOexsrKp/yx38bKvIeYSqWnKM4I93Hy75/G7D6KjUFU+TF1jIjhx6OjKCziqacSrOK5VRpsZcZT8Bj48ktQhkEME4MYahjBBIgHVNuDYWhM28Jqr0P3daaQrw83CSajRGkS34ZebDx4TFDBcZh2ai338e5ImxgePD1NWMn7Qu5Um4aOl4ZspYgYXmzlQxH/5k+FR4dRxIgqE1PbeHUfShnYoVw8uo+Y8qK0iZlC+rYysCIdmNFuLAyUsiF7EnN/69sQyMZOBEH9gfA7NIWF1j60sjGtMNUvfo/u49tGnrEPOQkmo0QrsDAx7Rgx5cFXsYKZT34NjNSKzbYyMHQMM9bDmZ/8KZErpxKB6U6Jf9t7bRuPTSJ4RRMX5sDWk8G/v//u99OyjYz4b4kGY4WNyixk/u/8DTozFwtv/Oa3FEZvmXaE2pe/R2vlTpRKTvepISOEHciNj8FTycbqW+2z5F28nngVyQ5gJko7Ut0ZaEyCyY1mT+s/2fSNfGCyJK0HjH9QWoNSwzrSyRMq2YqpsO9445pWgNKYpoE3Kxfb8KZ0UnqSjZexCKYK4rHiD+/UCa6VRmMnbkAzsJRKtNt8sCp169+TLT0xUPEhW6BQpglZeZiZOSg8mCmObVF2jKgvJ37znLaxjeQ9MPGtJsfyDu80SeRNaww0VuL94oPGbA5YAL/fT25uLvX19ZimSUlJCX6/n4sXLxKJRJg4cSKhUIhLly7R19c3ZHoqs4Cs0rloZcZPc62xlTGs4mvylm9D21jRGD3nD6GsiCuf8wP5TPYwJAc3xbdMqrNSahS2MjDR8cbROxhIkluM39pmxJtKdSJ6pZRSvD1DaSP+Dzs+CjQ5ZF97QCUu/FR2kCYxHYAd743S9vuNu0qjEl8cw0lZ6eToVo2dzKuSGwuGMmZLXYRCIbZs2YLH4+H5558nEAhQUFBAfn4+eXl51NbWct9999HY2EhZWRnbt28fotSiCNxTwZxf/xNiHh9gE1NeDOxbnoTJIdA2Cg82Vst1Dn//K3i6Gu7UJ//AM05xe8Rp6Zs8Gk1qwI9hv8vpsh7GG1MddTvMnTKi1FPrGPvIGJO1hpM/jx8/TiQSQWtNV1cXhw4d4ty5c3i9XqZNm8bx48c5cOAA+fn5eL1egsEgoVCIUCiUWPlPo7Do9YSImD4s08Q2DGLKi2X4bvovZvixDC+W4SeiMuLDtGTy6rEnV+tda8waYHt6emhubh7wnGEYzJgxgyNHjrBgwQIikQi2baO1xufz8Wu/9mtOYMnOzgYUljLRKl6sjSofprbRahilY2VgaAtDWdjKxEqM0Rgo9UFZg8sOqXXSjow0CoqxlBa9OclG1VmzZtHd3U1dXR0dHR3k5OTQ2NiIbduEw2F+9KMfoZQiEAjwla98Jf5eNKaOgTKB5LiHWw/71okb4OI3Z9kkO0Lerw0nBkzpFG+6UolZuBLDr+KNvXf2cpdAIsbSmLWZZGRksHTpUiZNmsTs2bNpaGjg/vvvp6amhjlz5nDmzBm2bNnCtGnTOHfuHNFodIhlL+IjBZRWxPBgEE1u5aaXf/KuT524B0VpK96r0+9ij4+gBFRqg8oMrVGYidRs4oFO3JJExLvWmPXmRCIRDhw4wKFDhwiHw0SjUZ599lmUUoTDYbq7u3nxxRfxer10dg5vtOFwyw83LB8oI9FLbGJom4jyp9wAaCmIBzuDmAK/FUUlqmBCfBiN2Yp+Wmva2tqcxwCtra0DXtfb2+ssHToai3HpRNXGQuFBE7pnGiXrP41teEeclq082CqKzwZL93H5zeeI1V2AFIfPC5HuxnRFv+EEiNFd0U+jlIWtfNgKVE4RmfM3EjX9I07JsA1sM4rH8qLtLowDb6L0BSmZiA+ttGiATRfxCQ/N+B24ycUGtHJGeY4sMY3SJjFlYCYmCL4rJ/YUYpgkmPSjdDyYGNpCY8YHv6nUJgTSyZ4gZTlroEgoER9mMsuLEMIVEkyEEK6QYCKEcIUEEyGEKySYCCFcIcFECOEKCSZCCFdIMBFCuEKCiRDCFRJMhBCukGAihHCFBBMhhCskmAghXCHBRAjhirRa0Q9uvarf6E6WJIQYrjFbNwfiS1sEAgHncSAQICcnB8MwUEoRDAbJzc1NrJEjhEhnYzY7vdfrZdWqVYwbN45f/OIX5OTksGXLFsLhME1NTZw+fZpNmzYRiUS4du0aBw4cGO2sCiFGYMxKJqFQiN7eXuf56dOnU11dzbZt25gyZQrz5s3jxIkTbN++nalTp+LxvB/3lFKJ6s4dX2BXCDFMYzZtY1tbG9XV1dxzzz0AZGZmcuXKFaLRKLZtk5eXx4ULF4hE4guJe71eFi5cSDAYxO/3J6pHEkmESBdjutRF/3WHw+EwGRkZTgNrT08PGRkZGIaB1ppYLMbBgwcBCAaDLFiwAFmYVoj0MWa9OcnFyQsKCpg4cSIXL15k/fr15OTk0NLSwunTp1m+fDnjx4+noaGBaDQ6VEoST4RIE2NWzVFK0dPTw8GDB1FKce3aNXbu3ElmZibvvvsu4XAYy7IIBoPU1NSgtZZuYSHS2JhVc6LRKKdOnRrw/LVr14D3G2mvXr3q/C6BRIj0lpYr+o101T8hxNiT0WBCCFdIMBFCuEKCiRDCFRJMhBCukGAihHCFBBMhhCskmAghXCHBRAjhCgkmQghXSDARQrhCgokQwhUSTIQQrpBgIoRwhQQTIYQrJJgIIVwhwUQI4Yq0CCaDJ5cevKLfUM8JIdJLWgSTpMzMTIqKipw1crKzsyksLHQeS0ARIn2N2YTS/SmlyM7O5pFHHqGzs5P29nbOnDnDhg0b6OnpobW1ld27d0swESKNpUXJRGtNRkYGfX19vPfee/j9fqZPn05lZSVvvPEGJSUleL1eZw3i5M/4m8c270KIuLQomQC0trbi8/l4+OGHef3115k6dSqXL18mFouhtcbn8/Gbv/mb5Ofn4/V6CYVCyKI5QqSPtAkmxcXFNDQ08Pbbb7Ny5UpaW1sJBAKYponWmkgkwo9//GOUUgQCAX73d393rLMshOgnbYJJNBpl/Pjx2LZNd3c3Z8+eZc2aNUyaNInr168TjUadhbiSAUZW9BMifaRNMLl27RpvvfUWgUCAa9euEYlEePPNN53H0vgqRHpLi2CSXMi8vr4eeL8LuKGhYSyzJYQYgbQIJiCr+Alxt0uLrmEhxN1PgokQwhUSTIQQrpBgIoRwhQQTIYQrJJgIIVwhwUQI4QoJJkIIV0gwEUK4QoKJEMIVEkyEEK6QYCKEcIUEEyGEKySYCCFcIcFECOEKCSZCCFdIMBFCuCItgkly+U+tNR6PB8Mw0FpjmiZer3fAa4QQ6Sltpm0EmDx5MkuWLOGdd94hHA6zefNmvF4vJ0+epKqqaqyzJ4S4ibQomSTXwlm+fDlvv/02zc3NzJo1i5qaGrZt28a9997rLG8hpRMh0lNalEy01hQXF5Ofn8/GjRuprq4mLy+PU6dO0dPTg2EY+Hw+FixYQCAQICMjg2AwCChZHlSINJEWwQQgJyeHEydOcPLkSR577DGam5vxeDwopbBtm1gsxtGjRwEIBoMsXrx4jHMshOgvbYJJc3MzCxcuZMKECYTDYS5evMicOXMIBAJ0dnYSi8WwbRsAy7LeX9FPCJEW0iKYKKWora0lMzOTwsJC3nzzTdrb2/F4PGRlZbFz504nkHxgTR1ZYkeItJAWwQTipY333nvPeayU4sSJEwNeI4tzCZG+0qI3JykZLJLLhfZ/LIRIb2kTTAYHjhv9FEKkp2EHExnfIYS4mbQpmQgh7m4STIQQrpBgIoRwhQQTIYQrJJgIIVwhwUQI4QoJJkIIV0gwEUK4QoKJEMIVEkyEEK6QYCKEcIUEEyGEKySYCCFcIcFECOEKCSZCCFekRTDpv6KfaZrOin4ejwe/3z/gNUKI9JQ2c8ACGIbBAw88QHV1NY2NjTzwwAMopaiurqaysnKssyeEuIm0KJkkVVRUMH36dLxeL7NmzeLs2bO89tprzJo1y1nRTwiRntKmZJKTk8Ps2bM5fvw4ALm5uZw6dYq+vj4MwyAjI4OPf/zjjBs3Dq/XS25uLrKinxDpIy2CiVKKefPmkZmZyYQJE5g4cSIdHR14vV5nRb9oNMq2bdswTZNAIMB/+A//AYkkQqSPtAgmAAcOHODQoUMsXbqU9vZ2ent7mTdvHtnZ2bS1tRGJRGhubgbiy4NaloWswCVE+kibYBKLxQA4e/Ys4XCYjo4OTNMkMzOTXbt2Oe0lA5e80BJPhEgTaRNMIN79W1dXB8SDxunTp8c4R0KI4Uqr3pybLbQli3AJkd7SqmQCA4PG4AAiAUWI9JVWJRMhxN1LgokQwhUSTIQQrpBgIoRwhQQTIYQrJJgIIVwhwUQI4QoJJkIIV0gwEUK4QoKJEMIVEkyEEK6QYCKEcIUEEyGEKySYCCFcIcFECOEKCSZCCFekRTAZvFrfUKv3yYp+QqS3tJlpLRgMsmbNGjIzM9m7dy+tra3O48OHD3P58uWxzqIQ4ibSIpgopYhGo+zfv5/i4mLmzp1LQ0MDPT09nDhxgrVr13L16tXE8hZCiHSUFsFEa000GqW9vZ1p06bR3NzMhAkTOHPmDM3NzXi9Xnw+H2VlZWRkZDj/4m8e27wLIeLSIpgkhUIhysrK2LZtGwUFBc4E0sn2kitXrmAYBsFgkEgkgiyaI0T6SItgopTCMAzWrFlDdXU10WiUuro6pk6dSjQapa+vj0gkQl9fHwDRaBTbtsc410KI/tIimGitKSgoIDc3F7/fj8fjoaqqiry8PObPn8+ePXuc4CEr+gmRntIimADU19fzb//2bwO6f3fu3AkgXcJC3AXSYpxJ/7aR/s/1H1siC3AJkd7SpmQyVLCQFf2EuHukRclECHH3k2AihHCFBBMhhCskmAghXCHBRAjhCgkmQghXSDARQrhCgokQwhUSTIQQrpBgIoRwhQQTIYQrJJgIIVwhwUQI4QoJJkIIV0gwEUK44u4PJjIJm+NDMdvLh+JDfDSlXTBJzq6mtUYp9YEZ6oeXyIi2+IE3uRKf9FAPBz7p1nWTTKd/6nqoJ0co+VaV3MIH0nIvkt/5GHI7eXX53BjChyGGps1Ma4MFg0HWr19PIBDg6NGjXLhwYcjXKWw0BlqBoTXx+HjrQ640aKUwtIXGQKFB2RjawlZeDB3DxkSjhpXeABrAwFY2XltjY6CVDcqGRH5BgVaJfIws+fjlrVHY2MpAEV+cTCuN0goDjWXYGBpSmcNfaRJpKwxtg1bYhoGpE2kqhVIxsD0p5D2+gXheNZbSGNgobQAWNgoTDdoDWKldvEqBAoMY4MHCjH8OiB9ndPyYazv+YW/B1JqoMjGIYiuNQQxbKbw6Skx54+dditFbaUW/cP3+MdX6rgswaRVM+pc8Zs6cSUtLC+fOnWPTpk1cunRpyBX9bKUwiBK/eA1sTOfiuhmVuJjjh0xh48HGwHT+rjF1LL6NkR5WBYaOnxRRw8RjR+MXofbi0VFQNjYKrYzULkZAY6K0jaHjwckmHlS08qK14Xw2rfSIL0ilEie5JhFQDVRyXygThcbGBOXBVqmtsmgbClsZGNiAgdZ+wAQ8xJQ3Hix1/G8jFc+fQUx5MZ2ArdCY71/0WiWeu2Vi8bCtTJRtYdqgtQ+lTTQ2ljLRhoof0xSmFVVKoxMBxGOb8UB+l06gnlbBpL/CwkLOnDlDe3s7pmni9/tZtWoV2dnZzup+mx94AO890yiZYGMZ0USZxGJYhUYd/zaIf0NaWMEAEzasQfV1gDJBW2QUT2fieLCNVL7fLWylMHUUw7KZuGIJ0am5GAosDRkTZ3BPfi9ambdOakjxT6usGMUr7yNaUYShbGxtEiiZzYRCFQ8uwwisQzNRlkHxqvuwZoxHGTbYNjpUxNQJJnaGDcQS/0ZOxWKUrb6PaEsxhjKwtcIIZjG50EJn9MZfk1K5CpSOMXXRdLryNmMqA1trVGYepcVelM9KlLh0Iq4MoxSLjY0dD3y2ZsrSOfQUWRjKjpd6vH6mlIQwxqWWX41GYWFaUaYunUvPBEVdXR0nTpxIKb2xovQwGyKKi4sJhULxN93BiZ2T2XnggQc4d+4cV65c4cknn+TFF19kypQpZGRk4Pf7eeqpp3jxxRextSZm+AAwsVDo+DfQLdgoDGysxIkFGo8VxhvI5NGHH+aFn/+cmDJQykypuGmjgXipSeNB2TaZQZMHHvwYL/78xUTJxUSr1JqtVPIUVAambWFgMW/evZw8fgLbsLEIYKhoohidQv6VQmsVL0lh86knnmTrK6/QG+7DMrwokvstNUrreFVSeXj8ycd56eWfE4lEiZdO4sdQpVLFTLzD1Bam0jz+qSf5+csvE4v0YZk+QGMrA1PHSy/GsKrE8WqZHS+s4bGjoDWzZ83hfHU1sZhNzPDEi3Qjzmu8ZGzqGLbSaA1K20yeOJEXXniBaDSaFhOpV1dX3/I1aVUy6R/Xrl69Snl5OVprenp6CIfDnD59GoBAIMC6devYs2cPMcvCxEoUuxMn3zDW5tIYGFhYysTUFhYeDKIEs3JZvGA+u3fvAR1DK2M41eoPMLDR2odlxDC0QmlNZm428+YtYu/ud7AS9XbjNkq0yXYTS3kxiOExDd7ZswdNDMP2oFUMhhFYh6KVxtAKG4VSNitXrGLvvv109XQlgkiqJao4WxmgbbwKVq1cyf69B+jr6cHQiqihUNgYTjV0xLmPByLTy4oVa9m/dw+9fb1oPIn2jvgxj1eJb16a0ACKRCnPxLBJtHnZ2LaHdw8dIByNYmCl0vhFvDapnWp3PHWNWr0GuLtWZEirYJKklKK6upqcnBzKy8t55513BiwHqrWmo6Mj/loS7QfQ78gP59vGRqMSbQ7xUorGQFsWzS2tOI10yY2MkK0NUJbTtKYV2Jampbklsd34BZvil6+TqfcbEg26e/riiWkjnvYwG6OHTF3H90ByW80tLdi27TT9JreeKkW88dNG0dzSTLx91MBWyVYSlfh/5G0+yZwZ2qKppTFx7qhE+8z7xzyeh1vlM1F60GaiWpw8YIq+3u5EIIg/TuU8STa/Jk9dUNgaent7R57YGEu7ak7SUNnqv91AIEBPT49r+em/2JfH4yEajQ653dtJP5l2LJZaO8Ot0jdN02mkdusYJfeL1+slFovdkUXR7tQ+6Z92cv+7RWuNYRh3ZLXJZNpDL4k7Nu66as6NDN6ZyarPzdzoIN/qwGith11PvVXAG+r1wzmxU7lglVJYljWsz3ej998s7f7B1c30k/sk+ftQrxtqpcfh5Dt5LFPN96325c0u9pvleTjp27adFkFkJNI2mNzq5B7O+/uXBizLwrbtG56wqRy4wWnDjS+I/s8NN5B4PB5s2x5WkLhVurfK963SHMn+8Xg8aK2HVUoazn7pfyxN0xyQ9nDyfiv9S19up51M3+OJX2rDKYHdbUEkKW2DSar6fwP4fD5WrlxJUVERHR0d7Nixg0gkcttFda01Xq+XZcuWUVxcTGdnJ2+99RZ9fX23lWaS1+tlyZIlTJ48mZ6eHnbs2DGgJDbSbfRP2+PxsHDhQsrKyujr6+Ott96is7PztvZJ8r2maTJ//nzKy8uJRCK89dZbdHR03FYVI5m2YRjMnTuXmTNnEo1G2blzJy0tLa6lPWvWLObMmUMsFuOdd96hsbFxQIlipNtIvtcwDGbPns3s2bOJRqPs2rWL5ubm20o7XaXdcHq3eL1eHnjgAaLRKL/4xS8AmDBhAoZx+x/Z4/GwceNGDMPgpZdeoq+vj0mTJqVch+7/HsMwWLduHYFAgJdffpm2tjbKysowzdvrPUmmvWrVKvLy8nj55Zepr6+nvLzclX2ilGLZsmXcc889vPrqq9TU1DB9+vQBt0SMVP+LbfHixZSWlrJ161ZOnz7NrFmzME3TlQtx/vz5TJ8+nddee43jx48zb948pwR0O5RSLFy4kPLycrZu3UpVVRXz5s0b8NkG/343+9AGkxkzZhAOh9m/fz9+v5/8/HzC4TArV650Lp4R3e+ToLVm2rRpGIbBnj17ME2Te+65h66uLlavXu2chP3/jcSUKVMIhULs2rULgEmTJtHW1sbq1avxeDw3rH8PR3FxMfn5+ezYsQOtNSUlJTQ1NbF69Wq8Xq+Tdir5LioqYuLEibzxxhtEo1GmTp1KU1MTq1atwueLjwNKJW2lFPn5+UydOpXXX3+dvr4+KioqaGhoYMWKFWRkZHwg7ZFsIycnh5kzZ7J9+3Z6e3upqKigrq6OlStXkpGRkdq9YYnX5+bmUlFRwfbt2518NzY2UlhYSFZW1oemRJL0oavmJC+IvLw8rl27Rm5uLps2beL8+fOUlpaycOFCDMNg7969t2z4u5Fk2jk5Odx///1cvnyZSZMmsWDBAiftSCTivP5W6fcPEHl5eVy9epXMzEw2bNjAtWvXKCwsZMGCBXg8Hvbs2UM4HE5p3+Tk5FBXV0cgEGD9+vU0NzeTk5PDokWL8Pv97N27l2g0OiDvw6GUIicnh6amJvx+P2vXrqWrq4tgMMjixYsJBoPs3buXcDg84rS11mRnZ9Pa2orH42Ht2rVEIhE8Hg+LFy8mOzubvXv30tvbO2C/DPd4ZmZm0tbWhlKKdevWOQF70aJFZGZmsmfPHiKRSEpV2KysLFpbWzFNk9WrV6OUYsaMGUybNg2fz8fbb79Nc3PziNJMZx+6kknywq2srGTq1KmsW7eOQ4cO0dnZydSpU6mpqeHkyZNOIySMvM568uRJJk6cyIYNG6isrKSpqYmpU6dSW1vrDIFOpj3S9E+fPk1hYSGbNm3i1KlTXL9+nWnTplFfX09lZSWWZTkNnCN14cIFsrKyeOCBBzh//jyXLl2ioqKCpqYmjh49SiAQYPPmzWRmZo4oXa01ly5dwjRNHnzwQWprazlz5gzTpk2jra2No0eP4vF42Lx5M9nZ2SPO95UrV4jFYjz00EM0NTXx3nvvMW3aNLq6ujhy5AhaazZt2sS4ceNGfCzr6+vp6enh4YcfpqOjg+PHj1NWVkZHR4eT9v33309BQcGIS1TXr18nHA7z0EMP0d3dTTAY5OzZs7z66qtcv36dCRMmfGiqOPAhLpl0dHSwdetWAKd1PtndtnbtWvLy8qiqqmL//v0jaghTStHZ2clrr702oDvWsiwyMjJYvXo148aN4/z587zzzjvA+wHuZl2fyee7u7vZvn27kyZANBolJyeHFStWOCWXN998c9j5Tm67t7eXN954Y0DafX195OTkEIlEmD9/PqZpEgqF6OrqGtF+CYfD7NixY0Da4XCYoqIi+vr6mD17Nh6Ph8zMTKdRtn/+bpbvaDTKW2+9hWmaxGIxlFL09vZSUlJCT08PFRUV+Hw+MjMzaW1tvWVe+4vFYuzatcsZo5PcT/fccw+9vb1MnTqVQCBAVlYWzc3NI+6W3rlzJ6ZpUlFRQSAQ4OTJk+Tl5VFaWsr27dsJhUKEw2Fn23dz1edDF0zg/YM8uNvz9OnTeL1e5s2bh1KKCxcuMGnSJBobG0dU/O7ftpD8/dy5c3g8HioqKvD7/Zw4cWLAQK+bnSiDu0cHvz75rV9SUkIoFOLIkSMDBmONZJ8Mrvtfu3aNhoYG1q5dS05ODkeOHKGhoWHY+2KotJOfob6+nubmZifAHj9+nOvXrw/4nMNNGxjQRd7c3ExbW5vToHzmzBlqa2tTyncy7WR+GhsbaWlpYdmyZRQUFHD+/HlqampGXDJJSgZAgPLycu677z727t2LYRg89thj9PX18corrwyrSzqdpe0I2Dsh+VErKioYP3680wDp9/vZtm1byqNe++/CqVOnEo1GMU2TFStWUFdXx86dO51SUSrfPsn0S0tLnUFea9asobm5mR07djgX2UjSHnzYfT4fWVlZeDwe7rvvPnp7e9m1a9cHBn2lsl98Pp9TvVm6dCmxWIy3336bSCQyokFog9NOVlVzcnKIxWKsWLECwOmmTzW/SR6Ph9zcXKLRKMuXL8fj8fD222/T3d094HXDGSjo9Xq59957yc7O5uTJkzQ1NTF+/Hg2bNjAW2+9RV1d3YjSHG0fmhGwbhhclZgyZQpbt26ls7OTJ554goyMjAEXzkguzP7fzBcuXEApxYQJE1BKUVVV5Zykt1s/rqmpAeLTMxiGQVVV1YBvs5GcgIPHOUQiEZqbmwkEAvj9fq5evfqBAVapnuCRSISmpiYyMjLweDw0NzcPaPxORf8qUFNTEz6fD9M0aW1tHVHj983SjsViNDU1OT1dnZ2dTpDq/9rhpBeLxTh8+DBKKSZOnEhxcTFr1qxhx44dNDY2UlZWxsSJEzl37hz19fUjym+6+NA1wN5I/4O+ZMkSdu3aRVtbG3PnzqWzs5Nx48YxZ84cAoFAytswDIP8/HwmTJjAunXrePPNN2lsbGTChAnMnTvXKdmlmv/8/HwKCwvZuHEjO3fu5Nq1awQCAYLBYErjIvrvk2AwSCAQYNOmTVy4cIHKykoCgQAlJSUEg0Fg5F27yTEmyQC1YcMGrl+/zqFDh/D7/U61LRXJIBEIBPD5fKxfv56Wlhb27duHUgqfz+dsf7h5HjwmJpnvNWvW0NPTw549e9BaO2mnatKkSTz++OO88847NDU1sWLFChYsWEB9fT1r167F7/ff1vCCsfKRKZn0F4lEyMrKYtWqVdxzzz10dnayePFirl69yv33389rr72W0gFUSrF06VKmTJnCiy++6JwoEyZM4NKlS2zatIlXX3112MPjB6e9cOFCpk+fzssvv8y1a9fQWlNaWsqaNWs4cuQIhw8fHnGek5YsWUJ5eTnHjh2jsrKSyZMns2rVKhoaGli8eDFbt25NuUt64cKFzJw5k5MnT3L48GHuuece1q1bR0NDAzk5OWzdupXe3t6Uqn9z585l7ty5VFdXs3//fmzbZvz48axbt46enh62bduW0k2EyW7chQsXcuHCBfbs2YNlWRQUFLB+/Xqi0Shbt24dUdrJwHbo0CG01ti2zcyZM8nLy+OXv/wlhmFw3333YRjGbY0nGisfmZIJvP/NumfPHnJzc+ns7OTatWsAvPrqq5w6dYqsrKyUR7JalsXbb79NTU0N0WiUuXPnMm7cOF555RVOnTpFKBQa0GU8ErZts2vXLs6dO0c4HHaGaodCIWprazl+/HjKJ5/WmgMHDtDQ0EBTUxMFBQWsWbOGN954w+lFSbXEprXm3Xff5fr16zQ3N5Obm8uGDRt488032bFjB7Ztk5WVlVLaAMeOHaO2tpampianwT3ZZnX8+PGUGzW11pw4cYKamhqam5sH9Kwl0041SNm2zcGDB6mvr2fmzJns27cPgPXr11NbW8vChQt5+OGHKS4uTru2k5v5SDXAwgfv3XniiSd46aWXiMViPPDAA1y6dIkTJ07cVkOpaZoYhsHjjz/ufOtu3ryZ+vp6jhw5clt5NgyDjIwMCgsLKSwspKioiF/96ldOO8HtDF33eDwYhsHGjRuprq7mwoULzJ07l6lTp3L06FGny3twA+Rw8p5Me+3atc44lBkzZjB79mzeeOMNtNaEw+FhX6D994nH48E0TbKyspwxJ/v27aO2tpbCwkKnZNjW1gYMbx/1P5bJLm2tNRs3buTdd9+lpqYGv9+P1+slHA4P++7kwVasWEF2drYzwC3Ze3T16lVWrlzpnJuDL9PRvgaH0wD7kSqZDGZZFp2dncybN49HH32UhoYGTp48eVvFy+Q3j2VZdHR0MGfOHB599FHa29s5duxYSnXg/idOsmFw0aJFzJ49mzfffDPlE3mwWCxGNBolHA6TnZ3NihUrmD17Nn19fSxZsgTTNNm0adOI7hNK5j2ZdrKKuXTpUu69915+9atfUVRUxFNPPcXy5ctHnG4y7UgkwuzZs3nqqac4cOAAtbW1LFiwgHXr1jkB0u/3A8Nr9E22n1iWRSQSYfr06XzmM5/hyJEjXLx4Ea01+fn5fOpTn+L+++9P6eJOlghPnjzJW2+9hcfj4cyZM7z77rsD8uHGfVmj4SMXTPo3slmWxY4dO+js7GT37t0cPHjQ6cJN5eTo/x7btnnrrbdob29n//797Nu377YmLurfYxSJRNi2bZvTuzP4c6Wif/r79u3D6/XS09PDxYsX8Xq9vPrqq5w5c8Zp7B1p2sk2gIMHDzqf4ZVXXqGzs5NQKERjYyOHDx9OeSxHMt9VVVVEIhGmTZtGWVkZr7zyCu+9957T25OKZDtHZWWlE7iVUs7gvt27d99yKoeh0kwGq9raWjo7O8nNzaWqqor8/Hw2bNhAY2Mjn/jEJ/j4xz9OcXHxkJ87nXzkqjn99a/K3GqUaqrpw8gm9BlOereTxnC2kcyvYRg88cQTbNu2jb6+PjZt2pRyVa1/+hC/q3vSpElkZ2dTWlrq3MTXPw+p5Fsp5QwG2717N83NzaxZswbLsti9e/eIRvUOzkuylDB58mR8Ph9z585l+/btdHZ2jijN/mknGYbBypUrKSgowO/309bWRm5uLq+//jpZWVnMnTvX6RgYi+tPxpncwuCRp4OfuxPpu5XenTJ4G+3t7cybN4/x48dTX1/vVNVSzUv/rtoZM2YwefJknn322QG9ObdbcrMsi5aWFmbNmkVOTg7d3d1Ot26q6cL7I6onTZrE3LlzefbZZ51AkoqhSlahUAjDMHjkkUd49dVX6ezsZOHChc6gtnT+Iv9IBxNxY8m2n507d1JaWsr58+dpaGgYcXH+RmKxGDt27OC+++5z/QLRWrN3715KS0u5cOEC165du+2h6slAZNu2c1e4m18WySDY0dFBfn4+nZ2dRKNRVq5cSSAQcEpVbpee3fSRruaI9DDSqkc6uJNVTsMwWL58OcXFxVy7do1Dhw59IHiNNqnmiLTX/9s2Xb9xB7vTg8ksy2Lv3r3OXdJ3i49cb45IP3dLEOnvTua3f2/j3URKJmJMud1IPRruRGP9rbZ1N5CSiRDCFRJMhBCukGAihHCFBBMhhCskmAghXCHBRAjhipS7hvsP21GJRxqFGviHgS8UQow5fYPe5vi1m7iWk93fI0g39XEmWqGVwtAAETQGWsWDicKOZ1jHw8zd01MuxIefBgytsFX/AKLQysa04z9tPE4hYbhSDiYKC4WFTQCFgdYmWmliygRMDKWlUCJEGlLYGFpjKcP53VYAGgsfqAgGFlobIyoJpF7NUQqNF1uBYWaQN2sVyh9Amz5MLLqvncXu60RJs4wQaUWj0UaQ7CkV2EYGWDGUHaHt9D7sni5MbQB2otgy/GhyW9UcUxsYRLAy8pj4sS9ijpuEViZ+q5eLbz+H1XQJAyX1HCHSiMbC8o+jbMtTxDIKUCjMcCeVP7gM3ccxtCJmGCO+bFMvNqh40chSCrRGKxMDsJRJDA9ag6G1BBIh0ozSGm1rLDxYyoNCYRsmSlvYCmxlYmibkfae3NaNfkrFMDREMTC1ja0MDCwUGt2vYUcIkT40nnhVBxNTa2wUHm1jKYWhFVrplK7a2wgmiZ4arRPdSBo78ZPkFHroeO+OxBMh0od+fziHSl636v2hHVpp4uFkZBeutI4K8RGjiX/Ru02CiRDCFe4GEw30G+qinP9GkU7GXR1vGHYejeKoF53ctk7sE43ThDSKkuOS389P8tnRy8j7W7IT+yPesDeax+P949//3BjtPeFsfsBxGe08DN6Wm9t2daY1Rbwxx0q0nah+A+1HiwK0jg/tM7GI6QyUChOPm6OUDwWmtokoA6+OX0Yk9sboxhMDpW1n21Fl4NEWehT3RXwslImhIkRVAL8dJabi58Zo5kErjWETH6ltWBg63lUw0lGet5sPhSIGGPGcEMODwp0Z/4ebB60UaBX/9AqUVqgbjbEfAVeDiVYGWmlQFig7MULWw2jWprQiPppPQUwbaG0nTtvRrdFZKr49G7CJryRnj3pLdLz7Pqa8eHUEhRUf9ahHuXarNDYmNoqo4QHiAW1U94a2sZXCwgOJUAaQWr9FillQ8S9cpSximKDU+yNNRzEfSluY2sIpMSt3ykfuzgGrDUwdw7Q1lsogZmaCAmMUIy/E7zsw7PhFFG+eNrCN0R/c79EW8ZuX4rvZHuGIwttlaEB7MXU8mCniQU6p0Z2oWBE/Hj4dI2r44sFslG+3cO5FQWNqjTZU/MtvFPMACqU9KGIYGPHSgYph3cHYrmDgzbdAzPRgmf5+X7D6hjf/jYTrE0obaLTyMn7GfXjte7G8GS4esFsXjRU2HbWn8Ht9+O+Ziq0sDNsEbY7qiaOUputqDYHcbDzBAiARTIaVCXeqAEpplNVH8/njZE+cijczFwsPyh7OmTM4D7eRJ6VR3W001VYzoXw+ysiAlFJLPQ8GCtvQ2D0d9DQ1kD2xFNvwOm1ao0Ep0MRAaSINVwj3dJNdMgOtfIOy4F4VcKgjbWsLHetDewOJ+3LMG7xyZFwOJhor0epqGQZGoihnulYyGd4OVpYJpomhPYCJwkCpkY/ouz0WOlGUVImvBgM9zDE37uRTY6C0F2IaZXtB+zD75WdkeUgtT4k2eTQKbdmJUdHJtoqRpnk7+yW+TYMYaAul4pXv+HkxmrzYKJRloiyFwhcvPQw4JnfuPE2u+ZM8Lm5uzvVgojHw2FFaTu2DliugTBj1AwY9QNvF1BfYdi0fl8Y6B/Fzpqm1dqyzAUDdgatjnQUAeq6cGOssANBz/fToblDHA4rtC1BaVIodyE40AKdbm0k/WttgRzGVNaqt1UKIoTnrJWOAbTu9i241Qt+RYKKw442u2kYrc9R7UoQQQ3CqNcnxPomH6R1MeL9OLPf6CZFW3u9H63//Tbo1wDpTl6h+UzaO+jhDIcTN9BuFm7yxLw3bTJKZUvHW+8SzSoomQqQXpfpdqe5cn9KYIYRwhQQTIT5ikvcIuc3las7A26aSdw1Li4kQ6en9a3OoyZBGaULp+FxMNoYGW/kwsIkCYIIOJ4YOG/G7EaXJRIg0EsNWClPbxDBRWgM2NvG73C1tolSUkVZcbmPdHAXaBBXDE2mnYe8LxDLGoQwvHmXTV1OJ7mlHqdG9zVsIcXMaTdgToH7vC8RMP8qK4rX6MDvr47cXKAsbc8QTNyqdHBZ3C8XFxYRCofibVL/woG1srbFtA9uOzyepDROfsjGUcuaHFUKkB0Or+Oz0Gixto7SNYSiU8mAYMZSy0fhQ2nbuJauurr5luqmXTLROTEYbn5fCY+hEqSieufcH2yUDihAiLSiNMuJz1BuQqPIkhpoqD4oohrYYafvEbazoBzbxtYYVoA2FrRSG1iitsfEkpswfzelnhBA3F5/fJ9ngaqITy9SA146gtUHM8KKI3/E+Kg2wSg/uXNIk5x/SqMRMa0KI9NJ/3oGBfTnJ2QEVdkpTqqTeNawGP1QD/iaBRIg09YGLUznDON7/MfKLWAatCSFcIcFECOEK16cgUNJzI8Rdxbbjc5vc7rXrejAxTRPDiBd4hjmERQgxBpRSaK2JRqOuXKvurpuTyJgQ4qPnjs0BK4RIf242S7i7PKi0lwjxkSW9OUIIV0gwEUK4QoKJEMIVEkyEEK6QYCKEcIUEEyGEKySYCCFcIcFECHFTwx1qP+w5YIUQ4makZCKEcIUEEyGEKySYCCFcIcFECOEKCSZCCFdIMBFCuEKCiRDCFRJMhBCukGAihHDF/w9G/fI3o/dgJwAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('line8hist.jpg')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "8cb5df08-342e-4cfd-b65e-42a8528b6969", + "metadata": {}, + "source": [ + "## Line 16 nodes\n", + "`![alt text](line16.png)`" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "62827e5d-82f4-433e-80ea-7eecf1dedbfb", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('line16.png')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c2710a88-2fa4-456f-995b-faa3a499dc03", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 [Default]", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 241438bd5177671adc88be0a4dd69d67d72d7e84 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Fri, 26 Jul 2024 02:38:56 +0200 Subject: [PATCH 51/83] Delete community/womanium/assignments/Yasir_Mansour_hw4.ipynb --- .../assignments/Yasir_Mansour_hw4.ipynb | 967 ------------------ 1 file changed, 967 deletions(-) delete mode 100644 community/womanium/assignments/Yasir_Mansour_hw4.ipynb diff --git a/community/womanium/assignments/Yasir_Mansour_hw4.ipynb b/community/womanium/assignments/Yasir_Mansour_hw4.ipynb deleted file mode 100644 index c9da6cf2..00000000 --- a/community/womanium/assignments/Yasir_Mansour_hw4.ipynb +++ /dev/null @@ -1,967 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "b7f74e3a-7dae-4939-a2ef-0ff82d8eadd0", - "metadata": {}, - "source": [ - "\n", - "# Assignment 6.12 - womanium 2024\n" - ] - }, - { - "cell_type": "markdown", - "id": "adc17ffc-b892-4a94-bebb-4ba74d208a9e", - "metadata": { - "tags": [] - }, - "source": [ - "## Assignment: Advanced Algorithms Design\n", - "## _Quantum random walk_\n", - "**Instructions - Final assignment**\n", - "\n", - "Follow the example from Bootcamp 4 for creating the quantum walk operator for the case of a circle with 4 nodes, and design the quantum walk operator for the case of a line with 16 nodes:\n", - "\n", - "**Tasks:**\n", - "\n", - "- A. Create a well-detailed Python Jupyter notebook that explains your algorithm, including the code parts covered in class, and pictures/figures where relevant. Utilize the Python code from class: quantum_walk_circle_example.py. It can be found directly also in the Classiq Git Library in the community/womanium/assignments folder. Feel free to extend the example beyond the requirements here and what was covered in class.\n", - "\n", - "- B. Contribute your notebook to the Classiq Git Library to the folder community/womanium/assignments. Follow the contribution guidelines in order to contribute - NO need to open an issue for this, you can directly open a PR. The PR title should be: `Womanium Final Assignment - `. The file name should be in the following format: `__hw4.ipynb`." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "202628d6-3fe3-47fa-8a15-04b7fd9716f4", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "from classiq import *" - ] - }, - { - "cell_type": "markdown", - "id": "9f608bac-c3eb-495e-9015-3e6396c7543c", - "metadata": { - "tags": [] - }, - "source": [ - "# Implementation\n", - "\n", - "Implementation of a quantum random walk on a circle/one-dimensional line graph with size num_nodes. The core components are:\n", - "\n", - "1. **Initialization**:\n", - " - Setting the number of nodes and the size of the register.\n", - "\n", - "2. **Quantum State Preparation**:\n", - " - The `prepare_minus` function prepares a quantum state by applying an X gate (bit-flip) followed by a Hadamard gate (superposition) to a qubit `x`.\n", - " - The `diffuzer_oracle` function modifies an auxiliary qubit based on whether `x` is non-zero.\n", - " - The `zero_diffuzer` function allocates an auxiliary qubit, prepares it in the minus state, and applies the `diffuzer_oracle`.\n", - "\n", - "3. **W Operator**:\n", - " - The `W_iteration` function computes probabilities for transitioning between adjacent vertices in a graph.\n", - " - It uses a control structure to apply a quantum operation to the `adjacent_vertices` qubit based on the value of `vertices`.\n", - " - The probabilities are set to create a quantum walk behavior.\n", - "\n", - "4. **Edge Oracle**:\n", - " - The `edge_oracle` function checks whether `vertices` and `adjacent_vertices` are adjacent and sets the result in the output qubit `res`.\n", - "\n", - "5. **Bitwise Swap**:\n", - " - The `bitwise_swap` function swaps corresponding qubits between two arrays `x` and `y`.\n", - "\n", - "6. **S Operator**:\n", - " - The `S_operator` function applies the edge oracle and swaps qubits if the result is 1.\n", - "\n", - "7. **Main Function**:\n", - " - The `main` function allocates qubits for `vertices` and `adjacent_vertices`.\n", - " - It applies the W operator and S operator sequentially.\n", - "\n", - "8. **Model Synthesis and Display**:\n", - " - The program creates a quantum model (`qmod`) and synthesizes it into a quantum program (`qprog`).\n", - " - The `show(qprog)` command displays the resulting quantum program.\n", - "\n", - "In summary, this program simulates a quantum random walk on a graph, where the walker's position is represented by quantum states. \n", - "\n", - "The W operator updates the probabilities for transitioning between adjacent vertices, and the S operator performs a random step by applying an edge oracle to ensure vertex adjacency and swaps qubits accordingly.\n" - ] - }, - { - "cell_type": "markdown", - "id": "bbe3dfa3-2265-44af-b708-9a0ad189f5bf", - "metadata": {}, - "source": [ - "## Common functions for circles or lines" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "425c8fd2-f8f5-409b-a569-d923819437c4", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "\n", - "# Prepares the minus state (aux qubit) for the diffuzer oracle\n", - "@qfunc\n", - "def prepare_minus(x: QBit):\n", - " X(x)\n", - " H(x)\n", - "\n", - "# x: current node\n", - "@qfunc\n", - "def diffuzer_oracle(aux: Output[QNum],x:QNum):\n", - " aux^=(x!=0)\n", - "\n", - "# Zero diffuser using Grover's algorithm technique\n", - "# x: current node \n", - "@qfunc\n", - "def zero_diffuzer(x: QNum):\n", - " aux = QNum('aux')\n", - " allocate(1,aux)\n", - " within_apply(compute=lambda: prepare_minus(aux),\n", - " action=lambda: diffuzer_oracle)\n", - "\n", - "# non-zero probabilities for allowable transitions\n", - "# @qfunc\n", - "# def W_iteration\n", - "\n", - "# Iterates over all possible positions and applies \n", - "# the W_iteration for each position.\n", - "@qfunc \n", - "def W_operator(vertices:QNum, adjacent_vertices: QNum):\n", - " for i in range(num_nodes):\n", - " W_iteration(i,vertices,adjacent_vertices)\n", - "\n", - "# Edge oracle for checking adjacency of 2 vertices\n", - "#\n", - "#@qfunc\n", - "#def edge_oracle\n", - "\n", - "# Swaps the contents of two quantum registers: moves the walker\n", - "@qfunc \n", - "def bitwise_swap(x: QArray[QBit], y:QArray[QBit]):\n", - " repeat(count= x.len,\n", - " iteration= lambda i: SWAP(x[i],y[i]))\n", - "\n", - "# shift operator moving the walker if vertices adjacent\n", - "@qfunc \n", - "def S_operator(vertices:QNum, adjacent_vertices: QNum):\n", - " res = QNum('res')\n", - " edge_oracle(res,vertices,adjacent_vertices)\n", - " control(ctrl= res==1,\n", - " operand= lambda: bitwise_swap(vertices,adjacent_vertices))\n" - ] - }, - { - "cell_type": "markdown", - "id": "9761696b-cefe-4ea0-9c91-ebd33af62e22", - "metadata": {}, - "source": [ - "## Circle-specific functions\n", - "\n", - "Here we have the function W_iteration with the probability of 0.5 going in either direction.\n", - "\n", - "What is special about a random walk on a circle is that the node (0) and the node (num_nodes-1) are adjacent. This fact is taken care of in the function edge_oracle." - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "id": "5ab73e30-56fd-4028-bb13-e2f883a4e3ae", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "\n", - "# non-zero probabilities for allowable transitions\n", - "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", - " prob = [0] * num_nodes\n", - " prob[(i+1)% num_nodes]=0.5\n", - " prob[(i-1)% num_nodes]=0.5\n", - " print(f'State={i}, prob vec ={prob}')\n", - " \n", - " control(ctrl=vertices==i,\n", - " operand=lambda: within_apply(\n", - " compute= lambda: \n", - " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", - " action= lambda: \n", - " zero_diffuzer(adjacent_vertices)))\n", - " \n", - "# Edge oracle for checking adjacency of two vertices \n", - "@qfunc\n", - "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", - " diff = vertices - adjacent_vertices\n", - " mod = diff%num_nodes\n", - " res |= (mod == 1) | (mod == num_nodes-1)\n" - ] - }, - { - "cell_type": "markdown", - "id": "423cf377-1bc7-4637-855c-b82ced39cca9", - "metadata": {}, - "source": [ - "## Circle with 4 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "e39e695c-cc7d-4983-ba7b-2d076262a66b", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Circle with 4 Nodes \n", - "\n", - "# Size of the register required for the number of nodes\n", - "size = 2\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "a863aa31-dc65-4ad4-9985-4fca062ab269", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk operator function\n", - "# applies the W and S operators after initializing\n", - "# vertices\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "1427b784-9701-4338-aec2-5cb5566a6d32", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 0.5, 0, 0.5]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5]\n", - "State=3, prob vec =[0.5, 0, 0.5, 0]\n", - "Opening: https://platform.classiq.io/circuit/a285c49b-b33e-4c1e-ab82-62011fb2f008?version=0.43.3\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "show(qprog)" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "22cec3d3-aef0-46c6-9de2-74ee40d81b96", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "write_qmod(qmod,\"random4\")" - ] - }, - { - "cell_type": "markdown", - "id": "0c9a5e9c-ed50-44d1-b9ed-665f96274a92", - "metadata": {}, - "source": [ - "## Circle with 8 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "a5063b48-425c-4d73-8d6e-8b575cc61be3", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Circle with 8 Nodes \n", - "\n", - "# Size of the register required for the number of nodes\n", - "size = 3\n", - "num_nodes = 8\n" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "d137cf61-e92b-46d4-870e-4d1fc021650c", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk operator function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "94168a88-cdb4-411c-a162-52adf0c622bb", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0.5]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=7, prob vec =[0.5, 0, 0, 0, 0, 0, 0.5, 0]\n", - "Opening: https://platform.classiq.io/circuit/471e56b8-c366-4c74-9a8b-8010c35ebb5d?version=0.43.3\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "7458e3ac-0e87-49e2-9139-59ee31fc27f4", - "metadata": {}, - "source": [ - "## Circle with 16 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "7e7ad59c-80ca-4452-af10-883711c9b104", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Circle with 16 Nodes \n", - "\n", - "# Size of the register required for the number of nodes\n", - "size = 4\n", - "num_nodes = 16\n" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "id": "d3444344-5117-4021-9d15-1476582bf61d", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "d30601d3-5b4f-4b23-af9d-f93d0a4f6777", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", - "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", - "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=15, prob vec =[0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0]\n", - "Opening: https://platform.classiq.io/circuit/e65b9cf2-3330-4af0-b561-beacef62e3e1?version=0.43.3\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "ccfdf941-9d91-402f-a200-ccc266f73e99", - "metadata": {}, - "source": [ - "## Line-specific functions\n", - "The function W_iteration defines the transition probabilities for a line. At the beginning and at the end of the line the walker can go only in one direction (probability = 1). For all other nodes the probability going in either direction is 0.5.\n", - "\n", - "Here the function edge_oracle just has to check whether the vertices are adjacent (distance = 1)." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "47e777d7-6527-4901-a034-951c624037e4", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "\n", - "# non-zero probabilities for allowable probabilities\n", - "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", - " prob = [0] * (num_nodes)\n", - " if i == 0:\n", - " prob[i + 1] = 1.0\n", - " elif i == (num_nodes) -1:\n", - " prob[i - 1] = 1.0\n", - " else:\n", - " prob[i - 1] = 0.5\n", - " prob[i + 1] = 0.5\n", - " print(f'State={i}, prob vec ={prob}')\n", - " \n", - " control(ctrl=vertices==i,\n", - " operand=lambda: within_apply(\n", - " compute= lambda: \n", - " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", - " action= lambda: \n", - " zero_diffuzer(adjacent_vertices)))\n", - "\n", - "\n", - "# Edge oracle for checking adjacency of two vertices\n", - "@qfunc\n", - "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", - " diff = vertices - adjacent_vertices\n", - " res |= (diff == 1) | (diff == -1)\n" - ] - }, - { - "cell_type": "markdown", - "id": "07488d17-7cac-4e36-8335-e3303cff8efe", - "metadata": {}, - "source": [ - "## Line with 4 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "92d3f78c-ee23-45bf-acba-6d0ff0608847", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Line with 4 Nodes\n", - "\n", - "# Register size to accomodate the number of vertices\n", - "size = 2\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "613c61cc-10ea-4950-a262-3dd572c8701c", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "46fca7f3-3106-416d-a3f8-379f7095f8fa", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 1.0, 0, 0]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5]\n", - "State=3, prob vec =[0, 0, 1.0, 0]\n", - "Opening: https://platform.classiq.io/circuit/c4d4c900-fa62-4e83-b507-74837c228399?version=0.43.3\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "show(qprog)" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "9dd17d8c-83dd-463d-b155-9b8c949f97d1", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "write_qmod(qmod,\"random4\")" - ] - }, - { - "cell_type": "markdown", - "id": "cfbc239f-2bfb-496a-a752-1a84f657ac3f", - "metadata": {}, - "source": [ - "## Line with 8 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "08283335-a49f-4d6e-a702-fb76ab01724b", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Line with 8 Nodes\n", - "\n", - "# Register size to accomodate the number of vertices\n", - "size = 3\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "07a57ceb-c1da-47d7-8d6b-45e18667d747", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "fb711141-eadd-4ac5-bb1d-fbd31bb71f8f", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=7, prob vec =[0, 0, 0, 0, 0, 0, 1.0, 0]\n", - "Opening: https://platform.classiq.io/circuit/47b7f084-71e8-4984-8b58-b6c87f328209?version=0.43.3\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "7b486184-7850-4c58-baac-9e89a942e059", - "metadata": { - "tags": [] - }, - "source": [ - "## Line with 16 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "52ccbff2-f15f-4fe2-86fd-6e1d0128f428", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Line with 16 Nodes\n", - "\n", - "# Register size to accomodate the number of vertices\n", - "size = 4\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "e773bbb1-e532-477e-8891-c47f8f4f1f8d", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "c3833a55-49af-4214-be22-5b52eaa22ba6", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", - "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", - "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=15, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0, 0]\n", - "Opening: https://platform.classiq.io/circuit/89a4226c-20e4-4a24-93a2-1b3d3d6eac27?version=0.43.3\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "4b28d548-febf-43b3-9271-6cab28fd2cbb", - "metadata": {}, - "source": [ - "# Results" - ] - }, - { - "cell_type": "markdown", - "id": "b7d6c2a8-063f-4ffe-bf3c-18212aa1d57f", - "metadata": { - "jp-MarkdownHeadingCollapsed": true, - "tags": [] - }, - "source": [ - "## Number of qubits vs. nodes\n", - "\n", - "| random walk | num_nodes | transpiled qubits |\n", - "| :- | :-: | :-: |\n", - "| circle | 4 | 13 |\n", - "| circle | 8 | 22|\n", - "| circle | 16 | 33 |\n", - "| line | 4 | 17 |\n", - "| line | 8 | 25 |\n", - "| line | 16 | 37 |\n", - "\n", - "Here we see that the more nodes we have, the more transpiled qubits are going to be used. Lines need more qubits than circles." - ] - }, - { - "cell_type": "markdown", - "id": "2d8f26a8-18aa-4dda-a3ed-a3974e0184b9", - "metadata": {}, - "source": [ - "## Circle 4 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "335019e0-e185-41d5-b894-6116ada649d6", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('circle4.png')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "id": "6bd34621-0458-4a1b-ac69-62892bcba54c", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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zWj37t2EQiFqa2t56KGHeOqppxgZGWHVqlX5c9xisRjJZNJ3J4tffHJ+Z2cnTz75ZP53yHYrtLW18dxzzzE+Pp4/ipZMJn0XAoXr43kee/fuZdmyZRhjuPPOO3nzzTfp6OggFouxevVqXnrpJaLRKK7r5mdc8evnk0gk+O///m8aGxtpbGxk06ZNPPHEE4yNjbF+/XpSqRTpdDq/rZXLAaj5oDCbgcLxV57nYa2lvr6eM2fOMD4+TltbG3fffTfvv/8+Dz/8MI7jcP78eV5++WVSqZSvdhhgUk0rk8kQCoW46667sNbS2NjICy+8QDwe56abbuLGG28kk8lw8OBBDh065LtAK+R5HqdOnaKqqoqqqio6OzupqanhN3/zNzlx4gQ33ngjzc3NZDIZXn31Vfr6/DcxZKFkMkl3dzcbN26kp6eHeDzO2rVrueOOO/jggw947LHHMMbQ39/Pq6++mp/9wm/b23xTM3OGck1NyIZAT08P0WiUxx57jNtvv50PPviAbdu28f777/PEE08QiURoaWkpcamnVth0huyRtIMHD7J582b27dtHPB7PDwd49tlneeGFF7j55pvznex+U7g+uSmHTpw4wUMPPcSjjz6aH+ycSCR44oknOHjwIDfffDPg3yZnYSB1dnayYMECvvOd77Bjxw7279/Ptm3beOedd/j5z39ObW0tixcvLmFpS0s1szmKx+M8//zzVFdXk0wmefTRR3njjTc4fvw4NTU11NfXMzo6WjbfkqdPn+bnP/851dXVtLa2sn79ep566inGx8fZtGkT4+PjZdGUyYXTO++8Q21tLalUiq1bt+bPEgBoa2vj9OnTpSzmtBljGB8f57nnniMWi5FKpXjsscd49dVX6ejoYMGCBfkplqZ7PdmgUc1sDnIBlU6nGRwcJBqNYq2lvb09P4L78OHDDA4OltXGdfbsWdrb21m5ciWffvop8XictrY2brvtNt54442yCLPC2ubQ0FB+Hfbv348xhltvvZWamhoOHTpU4pJOT277SSaT+W0tnU7T1dWVb0Lv378/EPOrzZZqZrN08fRDxhhGRkZIJBLcfffdtLS0cPTo0fxIbb+bqubY0dHBHXfcwaJFi2hububFF1/0ff9SoYvnumtvb+f2228nHA6TyWTYvXt32Ux8efE0PSMjI2QyGe6++26WLFnCwYMH+fjjj6d8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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('circle4hist.jpg')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "5216c457-12f6-451e-92a8-d43c5a15e98f", - "metadata": {}, - "source": [ - "## Line 8 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "id": "c6ebdc89-ba16-41c4-b623-7862a0ae29af", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('line8.png')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "id": "6dffee97-669a-4c03-a506-55c8ebbe0be1", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('line8hist.jpg')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "8cb5df08-342e-4cfd-b65e-42a8528b6969", - "metadata": {}, - "source": [ - "## Line 16 nodes\n", - "`![alt text](line16.png)`" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "62827e5d-82f4-433e-80ea-7eecf1dedbfb", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('line16.png')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c2710a88-2fa4-456f-995b-faa3a499dc03", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 [Default]", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} From ba45ed5607359dbf18ef859b8e1f7889dda0fc7a Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Fri, 26 Jul 2024 02:39:45 +0200 Subject: [PATCH 52/83] Rename Yasir_Mansour_hw3.ipynb to Yasir_Mansour_hw4.ipynb --- .../{Yasir_Mansour_hw3.ipynb => Yasir_Mansour_hw4.ipynb} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename community/womanium/assignments/{Yasir_Mansour_hw3.ipynb => Yasir_Mansour_hw4.ipynb} (100%) diff --git a/community/womanium/assignments/Yasir_Mansour_hw3.ipynb b/community/womanium/assignments/Yasir_Mansour_hw4.ipynb similarity index 100% rename from community/womanium/assignments/Yasir_Mansour_hw3.ipynb rename to community/womanium/assignments/Yasir_Mansour_hw4.ipynb From b3a03cf5d3db252734065a3dadbecbbedfca198f Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Fri, 26 Jul 2024 02:43:34 +0200 Subject: [PATCH 53/83] Delete community/womanium/assignments/Yasir_Mansour_hw4.ipynb --- .../assignments/Yasir_Mansour_hw4.ipynb | 967 ------------------ 1 file changed, 967 deletions(-) delete mode 100644 community/womanium/assignments/Yasir_Mansour_hw4.ipynb diff --git a/community/womanium/assignments/Yasir_Mansour_hw4.ipynb b/community/womanium/assignments/Yasir_Mansour_hw4.ipynb deleted file mode 100644 index c9da6cf2..00000000 --- a/community/womanium/assignments/Yasir_Mansour_hw4.ipynb +++ /dev/null @@ -1,967 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "b7f74e3a-7dae-4939-a2ef-0ff82d8eadd0", - "metadata": {}, - "source": [ - "\n", - "# Assignment 6.12 - womanium 2024\n" - ] - }, - { - "cell_type": "markdown", - "id": "adc17ffc-b892-4a94-bebb-4ba74d208a9e", - "metadata": { - "tags": [] - }, - "source": [ - "## Assignment: Advanced Algorithms Design\n", - "## _Quantum random walk_\n", - "**Instructions - Final assignment**\n", - "\n", - "Follow the example from Bootcamp 4 for creating the quantum walk operator for the case of a circle with 4 nodes, and design the quantum walk operator for the case of a line with 16 nodes:\n", - "\n", - "**Tasks:**\n", - "\n", - "- A. Create a well-detailed Python Jupyter notebook that explains your algorithm, including the code parts covered in class, and pictures/figures where relevant. Utilize the Python code from class: quantum_walk_circle_example.py. It can be found directly also in the Classiq Git Library in the community/womanium/assignments folder. Feel free to extend the example beyond the requirements here and what was covered in class.\n", - "\n", - "- B. Contribute your notebook to the Classiq Git Library to the folder community/womanium/assignments. Follow the contribution guidelines in order to contribute - NO need to open an issue for this, you can directly open a PR. The PR title should be: `Womanium Final Assignment - `. The file name should be in the following format: `__hw4.ipynb`." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "202628d6-3fe3-47fa-8a15-04b7fd9716f4", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "from classiq import *" - ] - }, - { - "cell_type": "markdown", - "id": "9f608bac-c3eb-495e-9015-3e6396c7543c", - "metadata": { - "tags": [] - }, - "source": [ - "# Implementation\n", - "\n", - "Implementation of a quantum random walk on a circle/one-dimensional line graph with size num_nodes. The core components are:\n", - "\n", - "1. **Initialization**:\n", - " - Setting the number of nodes and the size of the register.\n", - "\n", - "2. **Quantum State Preparation**:\n", - " - The `prepare_minus` function prepares a quantum state by applying an X gate (bit-flip) followed by a Hadamard gate (superposition) to a qubit `x`.\n", - " - The `diffuzer_oracle` function modifies an auxiliary qubit based on whether `x` is non-zero.\n", - " - The `zero_diffuzer` function allocates an auxiliary qubit, prepares it in the minus state, and applies the `diffuzer_oracle`.\n", - "\n", - "3. **W Operator**:\n", - " - The `W_iteration` function computes probabilities for transitioning between adjacent vertices in a graph.\n", - " - It uses a control structure to apply a quantum operation to the `adjacent_vertices` qubit based on the value of `vertices`.\n", - " - The probabilities are set to create a quantum walk behavior.\n", - "\n", - "4. **Edge Oracle**:\n", - " - The `edge_oracle` function checks whether `vertices` and `adjacent_vertices` are adjacent and sets the result in the output qubit `res`.\n", - "\n", - "5. **Bitwise Swap**:\n", - " - The `bitwise_swap` function swaps corresponding qubits between two arrays `x` and `y`.\n", - "\n", - "6. **S Operator**:\n", - " - The `S_operator` function applies the edge oracle and swaps qubits if the result is 1.\n", - "\n", - "7. **Main Function**:\n", - " - The `main` function allocates qubits for `vertices` and `adjacent_vertices`.\n", - " - It applies the W operator and S operator sequentially.\n", - "\n", - "8. **Model Synthesis and Display**:\n", - " - The program creates a quantum model (`qmod`) and synthesizes it into a quantum program (`qprog`).\n", - " - The `show(qprog)` command displays the resulting quantum program.\n", - "\n", - "In summary, this program simulates a quantum random walk on a graph, where the walker's position is represented by quantum states. \n", - "\n", - "The W operator updates the probabilities for transitioning between adjacent vertices, and the S operator performs a random step by applying an edge oracle to ensure vertex adjacency and swaps qubits accordingly.\n" - ] - }, - { - "cell_type": "markdown", - "id": "bbe3dfa3-2265-44af-b708-9a0ad189f5bf", - "metadata": {}, - "source": [ - "## Common functions for circles or lines" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "425c8fd2-f8f5-409b-a569-d923819437c4", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "\n", - "# Prepares the minus state (aux qubit) for the diffuzer oracle\n", - "@qfunc\n", - "def prepare_minus(x: QBit):\n", - " X(x)\n", - " H(x)\n", - "\n", - "# x: current node\n", - "@qfunc\n", - "def diffuzer_oracle(aux: Output[QNum],x:QNum):\n", - " aux^=(x!=0)\n", - "\n", - "# Zero diffuser using Grover's algorithm technique\n", - "# x: current node \n", - "@qfunc\n", - "def zero_diffuzer(x: QNum):\n", - " aux = QNum('aux')\n", - " allocate(1,aux)\n", - " within_apply(compute=lambda: prepare_minus(aux),\n", - " action=lambda: diffuzer_oracle)\n", - "\n", - "# non-zero probabilities for allowable transitions\n", - "# @qfunc\n", - "# def W_iteration\n", - "\n", - "# Iterates over all possible positions and applies \n", - "# the W_iteration for each position.\n", - "@qfunc \n", - "def W_operator(vertices:QNum, adjacent_vertices: QNum):\n", - " for i in range(num_nodes):\n", - " W_iteration(i,vertices,adjacent_vertices)\n", - "\n", - "# Edge oracle for checking adjacency of 2 vertices\n", - "#\n", - "#@qfunc\n", - "#def edge_oracle\n", - "\n", - "# Swaps the contents of two quantum registers: moves the walker\n", - "@qfunc \n", - "def bitwise_swap(x: QArray[QBit], y:QArray[QBit]):\n", - " repeat(count= x.len,\n", - " iteration= lambda i: SWAP(x[i],y[i]))\n", - "\n", - "# shift operator moving the walker if vertices adjacent\n", - "@qfunc \n", - "def S_operator(vertices:QNum, adjacent_vertices: QNum):\n", - " res = QNum('res')\n", - " edge_oracle(res,vertices,adjacent_vertices)\n", - " control(ctrl= res==1,\n", - " operand= lambda: bitwise_swap(vertices,adjacent_vertices))\n" - ] - }, - { - "cell_type": "markdown", - "id": "9761696b-cefe-4ea0-9c91-ebd33af62e22", - "metadata": {}, - "source": [ - "## Circle-specific functions\n", - "\n", - "Here we have the function W_iteration with the probability of 0.5 going in either direction.\n", - "\n", - "What is special about a random walk on a circle is that the node (0) and the node (num_nodes-1) are adjacent. This fact is taken care of in the function edge_oracle." - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "id": "5ab73e30-56fd-4028-bb13-e2f883a4e3ae", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "\n", - "# non-zero probabilities for allowable transitions\n", - "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", - " prob = [0] * num_nodes\n", - " prob[(i+1)% num_nodes]=0.5\n", - " prob[(i-1)% num_nodes]=0.5\n", - " print(f'State={i}, prob vec ={prob}')\n", - " \n", - " control(ctrl=vertices==i,\n", - " operand=lambda: within_apply(\n", - " compute= lambda: \n", - " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", - " action= lambda: \n", - " zero_diffuzer(adjacent_vertices)))\n", - " \n", - "# Edge oracle for checking adjacency of two vertices \n", - "@qfunc\n", - "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", - " diff = vertices - adjacent_vertices\n", - " mod = diff%num_nodes\n", - " res |= (mod == 1) | (mod == num_nodes-1)\n" - ] - }, - { - "cell_type": "markdown", - "id": "423cf377-1bc7-4637-855c-b82ced39cca9", - "metadata": {}, - "source": [ - "## Circle with 4 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "e39e695c-cc7d-4983-ba7b-2d076262a66b", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Circle with 4 Nodes \n", - "\n", - "# Size of the register required for the number of nodes\n", - "size = 2\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "a863aa31-dc65-4ad4-9985-4fca062ab269", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk operator function\n", - "# applies the W and S operators after initializing\n", - "# vertices\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "1427b784-9701-4338-aec2-5cb5566a6d32", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 0.5, 0, 0.5]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5]\n", - "State=3, prob vec =[0.5, 0, 0.5, 0]\n", - "Opening: https://platform.classiq.io/circuit/a285c49b-b33e-4c1e-ab82-62011fb2f008?version=0.43.3\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "show(qprog)" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "22cec3d3-aef0-46c6-9de2-74ee40d81b96", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "write_qmod(qmod,\"random4\")" - ] - }, - { - "cell_type": "markdown", - "id": "0c9a5e9c-ed50-44d1-b9ed-665f96274a92", - "metadata": {}, - "source": [ - "## Circle with 8 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "a5063b48-425c-4d73-8d6e-8b575cc61be3", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Circle with 8 Nodes \n", - "\n", - "# Size of the register required for the number of nodes\n", - "size = 3\n", - "num_nodes = 8\n" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "d137cf61-e92b-46d4-870e-4d1fc021650c", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk operator function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "94168a88-cdb4-411c-a162-52adf0c622bb", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0.5]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=7, prob vec =[0.5, 0, 0, 0, 0, 0, 0.5, 0]\n", - "Opening: https://platform.classiq.io/circuit/471e56b8-c366-4c74-9a8b-8010c35ebb5d?version=0.43.3\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "7458e3ac-0e87-49e2-9139-59ee31fc27f4", - "metadata": {}, - "source": [ - "## Circle with 16 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "7e7ad59c-80ca-4452-af10-883711c9b104", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Circle with 16 Nodes \n", - "\n", - "# Size of the register required for the number of nodes\n", - "size = 4\n", - "num_nodes = 16\n" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "id": "d3444344-5117-4021-9d15-1476582bf61d", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "d30601d3-5b4f-4b23-af9d-f93d0a4f6777", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", - "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", - "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=15, prob vec =[0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0]\n", - "Opening: https://platform.classiq.io/circuit/e65b9cf2-3330-4af0-b561-beacef62e3e1?version=0.43.3\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "ccfdf941-9d91-402f-a200-ccc266f73e99", - "metadata": {}, - "source": [ - "## Line-specific functions\n", - "The function W_iteration defines the transition probabilities for a line. At the beginning and at the end of the line the walker can go only in one direction (probability = 1). For all other nodes the probability going in either direction is 0.5.\n", - "\n", - "Here the function edge_oracle just has to check whether the vertices are adjacent (distance = 1)." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "47e777d7-6527-4901-a034-951c624037e4", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "\n", - "# non-zero probabilities for allowable probabilities\n", - "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", - " prob = [0] * (num_nodes)\n", - " if i == 0:\n", - " prob[i + 1] = 1.0\n", - " elif i == (num_nodes) -1:\n", - " prob[i - 1] = 1.0\n", - " else:\n", - " prob[i - 1] = 0.5\n", - " prob[i + 1] = 0.5\n", - " print(f'State={i}, prob vec ={prob}')\n", - " \n", - " control(ctrl=vertices==i,\n", - " operand=lambda: within_apply(\n", - " compute= lambda: \n", - " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", - " action= lambda: \n", - " zero_diffuzer(adjacent_vertices)))\n", - "\n", - "\n", - "# Edge oracle for checking adjacency of two vertices\n", - "@qfunc\n", - "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", - " diff = vertices - adjacent_vertices\n", - " res |= (diff == 1) | (diff == -1)\n" - ] - }, - { - "cell_type": "markdown", - "id": "07488d17-7cac-4e36-8335-e3303cff8efe", - "metadata": {}, - "source": [ - "## Line with 4 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "92d3f78c-ee23-45bf-acba-6d0ff0608847", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Line with 4 Nodes\n", - "\n", - "# Register size to accomodate the number of vertices\n", - "size = 2\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "613c61cc-10ea-4950-a262-3dd572c8701c", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "46fca7f3-3106-416d-a3f8-379f7095f8fa", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 1.0, 0, 0]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5]\n", - "State=3, prob vec =[0, 0, 1.0, 0]\n", - "Opening: https://platform.classiq.io/circuit/c4d4c900-fa62-4e83-b507-74837c228399?version=0.43.3\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "show(qprog)" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "9dd17d8c-83dd-463d-b155-9b8c949f97d1", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "write_qmod(qmod,\"random4\")" - ] - }, - { - "cell_type": "markdown", - "id": "cfbc239f-2bfb-496a-a752-1a84f657ac3f", - "metadata": {}, - "source": [ - "## Line with 8 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "08283335-a49f-4d6e-a702-fb76ab01724b", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Line with 8 Nodes\n", - "\n", - "# Register size to accomodate the number of vertices\n", - "size = 3\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "07a57ceb-c1da-47d7-8d6b-45e18667d747", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "fb711141-eadd-4ac5-bb1d-fbd31bb71f8f", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=7, prob vec =[0, 0, 0, 0, 0, 0, 1.0, 0]\n", - "Opening: https://platform.classiq.io/circuit/47b7f084-71e8-4984-8b58-b6c87f328209?version=0.43.3\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "7b486184-7850-4c58-baac-9e89a942e059", - "metadata": { - "tags": [] - }, - "source": [ - "## Line with 16 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "52ccbff2-f15f-4fe2-86fd-6e1d0128f428", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Line with 16 Nodes\n", - "\n", - "# Register size to accomodate the number of vertices\n", - "size = 4\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "e773bbb1-e532-477e-8891-c47f8f4f1f8d", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "c3833a55-49af-4214-be22-5b52eaa22ba6", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", - "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", - "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=15, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0, 0]\n", - "Opening: https://platform.classiq.io/circuit/89a4226c-20e4-4a24-93a2-1b3d3d6eac27?version=0.43.3\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "4b28d548-febf-43b3-9271-6cab28fd2cbb", - "metadata": {}, - "source": [ - "# Results" - ] - }, - { - "cell_type": "markdown", - "id": "b7d6c2a8-063f-4ffe-bf3c-18212aa1d57f", - "metadata": { - "jp-MarkdownHeadingCollapsed": true, - "tags": [] - }, - "source": [ - "## Number of qubits vs. nodes\n", - "\n", - "| random walk | num_nodes | transpiled qubits |\n", - "| :- | :-: | :-: |\n", - "| circle | 4 | 13 |\n", - "| circle | 8 | 22|\n", - "| circle | 16 | 33 |\n", - "| line | 4 | 17 |\n", - "| line | 8 | 25 |\n", - "| line | 16 | 37 |\n", - "\n", - "Here we see that the more nodes we have, the more transpiled qubits are going to be used. Lines need more qubits than circles." - ] - }, - { - "cell_type": "markdown", - "id": "2d8f26a8-18aa-4dda-a3ed-a3974e0184b9", - "metadata": {}, - "source": [ - "## Circle 4 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "335019e0-e185-41d5-b894-6116ada649d6", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('circle4.png')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "id": "6bd34621-0458-4a1b-ac69-62892bcba54c", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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zWj37t2EQiFqa2t56KGHeOqppxgZGWHVqlX5c9xisRjJZNJ3J4tffHJ+Z2cnTz75ZP53yHYrtLW18dxzzzE+Pp4/ipZMJn0XAoXr43kee/fuZdmyZRhjuPPOO3nzzTfp6OggFouxevVqXnrpJaLRKK7r5mdc8evnk0gk+O///m8aGxtpbGxk06ZNPPHEE4yNjbF+/XpSqRTpdDq/rZXLAaj5oDCbgcLxV57nYa2lvr6eM2fOMD4+TltbG3fffTfvv/8+Dz/8MI7jcP78eV5++WVSqZSvdhhgUk0rk8kQCoW46667sNbS2NjICy+8QDwe56abbuLGG28kk8lw8OBBDh065LtAK+R5HqdOnaKqqoqqqio6OzupqanhN3/zNzlx4gQ33ngjzc3NZDIZXn31Vfr6/DcxZKFkMkl3dzcbN26kp6eHeDzO2rVrueOOO/jggw947LHHMMbQ39/Pq6++mp/9wm/b23xTM3OGck1NyIZAT08P0WiUxx57jNtvv50PPviAbdu28f777/PEE08QiURoaWkpcamnVth0huyRtIMHD7J582b27dtHPB7PDwd49tlneeGFF7j55pvznex+U7g+uSmHTpw4wUMPPcSjjz6aH+ycSCR44oknOHjwIDfffDPg3yZnYSB1dnayYMECvvOd77Bjxw7279/Ptm3beOedd/j5z39ObW0tixcvLmFpS0s1szmKx+M8//zzVFdXk0wmefTRR3njjTc4fvw4NTU11NfXMzo6WjbfkqdPn+bnP/851dXVtLa2sn79ep566inGx8fZtGkT4+PjZdGUyYXTO++8Q21tLalUiq1bt+bPEgBoa2vj9OnTpSzmtBljGB8f57nnniMWi5FKpXjsscd49dVX6ejoYMGCBfkplqZ7PdmgUc1sDnIBlU6nGRwcJBqNYq2lvb09P4L78OHDDA4OltXGdfbsWdrb21m5ciWffvop8XictrY2brvtNt54442yCLPC2ubQ0FB+Hfbv348xhltvvZWamhoOHTpU4pJOT277SSaT+W0tnU7T1dWVb0Lv378/EPOrzZZqZrN08fRDxhhGRkZIJBLcfffdtLS0cPTo0fxIbb+bqubY0dHBHXfcwaJFi2hububFF1/0ff9SoYvnumtvb+f2228nHA6TyWTYvXt32Ux8efE0PSMjI2QyGe6++26WLFnCwYMH+fjjj6d8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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('circle4hist.jpg')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "5216c457-12f6-451e-92a8-d43c5a15e98f", - "metadata": {}, - "source": [ - "## Line 8 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "id": "c6ebdc89-ba16-41c4-b623-7862a0ae29af", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('line8.png')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "id": "6dffee97-669a-4c03-a506-55c8ebbe0be1", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('line8hist.jpg')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "8cb5df08-342e-4cfd-b65e-42a8528b6969", - "metadata": {}, - "source": [ - "## Line 16 nodes\n", - "`![alt text](line16.png)`" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "62827e5d-82f4-433e-80ea-7eecf1dedbfb", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('line16.png')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c2710a88-2fa4-456f-995b-faa3a499dc03", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 [Default]", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} From f6ee983326c7790fb98b9806f595ec8f15d0ed0d Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Fri, 26 Jul 2024 02:44:15 +0200 Subject: [PATCH 54/83] Create Yasir_Mansour_hw4.ipynb --- .../assignments/Yasir_Mansour_hw4.ipynb | 967 ++++++++++++++++++ 1 file changed, 967 insertions(+) create mode 100644 community/womanium/assignments/Yasir_Mansour_hw4.ipynb diff --git a/community/womanium/assignments/Yasir_Mansour_hw4.ipynb b/community/womanium/assignments/Yasir_Mansour_hw4.ipynb new file mode 100644 index 00000000..c9da6cf2 --- /dev/null +++ b/community/womanium/assignments/Yasir_Mansour_hw4.ipynb @@ -0,0 +1,967 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "b7f74e3a-7dae-4939-a2ef-0ff82d8eadd0", + "metadata": {}, + "source": [ + "\n", + "# Assignment 6.12 - womanium 2024\n" + ] + }, + { + "cell_type": "markdown", + "id": "adc17ffc-b892-4a94-bebb-4ba74d208a9e", + "metadata": { + "tags": [] + }, + "source": [ + "## Assignment: Advanced Algorithms Design\n", + "## _Quantum random walk_\n", + "**Instructions - Final assignment**\n", + "\n", + "Follow the example from Bootcamp 4 for creating the quantum walk operator for the case of a circle with 4 nodes, and design the quantum walk operator for the case of a line with 16 nodes:\n", + "\n", + "**Tasks:**\n", + "\n", + "- A. Create a well-detailed Python Jupyter notebook that explains your algorithm, including the code parts covered in class, and pictures/figures where relevant. Utilize the Python code from class: quantum_walk_circle_example.py. It can be found directly also in the Classiq Git Library in the community/womanium/assignments folder. Feel free to extend the example beyond the requirements here and what was covered in class.\n", + "\n", + "- B. Contribute your notebook to the Classiq Git Library to the folder community/womanium/assignments. Follow the contribution guidelines in order to contribute - NO need to open an issue for this, you can directly open a PR. The PR title should be: `Womanium Final Assignment - `. The file name should be in the following format: `__hw4.ipynb`." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "202628d6-3fe3-47fa-8a15-04b7fd9716f4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "from classiq import *" + ] + }, + { + "cell_type": "markdown", + "id": "9f608bac-c3eb-495e-9015-3e6396c7543c", + "metadata": { + "tags": [] + }, + "source": [ + "# Implementation\n", + "\n", + "Implementation of a quantum random walk on a circle/one-dimensional line graph with size num_nodes. The core components are:\n", + "\n", + "1. **Initialization**:\n", + " - Setting the number of nodes and the size of the register.\n", + "\n", + "2. **Quantum State Preparation**:\n", + " - The `prepare_minus` function prepares a quantum state by applying an X gate (bit-flip) followed by a Hadamard gate (superposition) to a qubit `x`.\n", + " - The `diffuzer_oracle` function modifies an auxiliary qubit based on whether `x` is non-zero.\n", + " - The `zero_diffuzer` function allocates an auxiliary qubit, prepares it in the minus state, and applies the `diffuzer_oracle`.\n", + "\n", + "3. **W Operator**:\n", + " - The `W_iteration` function computes probabilities for transitioning between adjacent vertices in a graph.\n", + " - It uses a control structure to apply a quantum operation to the `adjacent_vertices` qubit based on the value of `vertices`.\n", + " - The probabilities are set to create a quantum walk behavior.\n", + "\n", + "4. **Edge Oracle**:\n", + " - The `edge_oracle` function checks whether `vertices` and `adjacent_vertices` are adjacent and sets the result in the output qubit `res`.\n", + "\n", + "5. **Bitwise Swap**:\n", + " - The `bitwise_swap` function swaps corresponding qubits between two arrays `x` and `y`.\n", + "\n", + "6. **S Operator**:\n", + " - The `S_operator` function applies the edge oracle and swaps qubits if the result is 1.\n", + "\n", + "7. **Main Function**:\n", + " - The `main` function allocates qubits for `vertices` and `adjacent_vertices`.\n", + " - It applies the W operator and S operator sequentially.\n", + "\n", + "8. **Model Synthesis and Display**:\n", + " - The program creates a quantum model (`qmod`) and synthesizes it into a quantum program (`qprog`).\n", + " - The `show(qprog)` command displays the resulting quantum program.\n", + "\n", + "In summary, this program simulates a quantum random walk on a graph, where the walker's position is represented by quantum states. \n", + "\n", + "The W operator updates the probabilities for transitioning between adjacent vertices, and the S operator performs a random step by applying an edge oracle to ensure vertex adjacency and swaps qubits accordingly.\n" + ] + }, + { + "cell_type": "markdown", + "id": "bbe3dfa3-2265-44af-b708-9a0ad189f5bf", + "metadata": {}, + "source": [ + "## Common functions for circles or lines" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "425c8fd2-f8f5-409b-a569-d923819437c4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# Prepares the minus state (aux qubit) for the diffuzer oracle\n", + "@qfunc\n", + "def prepare_minus(x: QBit):\n", + " X(x)\n", + " H(x)\n", + "\n", + "# x: current node\n", + "@qfunc\n", + "def diffuzer_oracle(aux: Output[QNum],x:QNum):\n", + " aux^=(x!=0)\n", + "\n", + "# Zero diffuser using Grover's algorithm technique\n", + "# x: current node \n", + "@qfunc\n", + "def zero_diffuzer(x: QNum):\n", + " aux = QNum('aux')\n", + " allocate(1,aux)\n", + " within_apply(compute=lambda: prepare_minus(aux),\n", + " action=lambda: diffuzer_oracle)\n", + "\n", + "# non-zero probabilities for allowable transitions\n", + "# @qfunc\n", + "# def W_iteration\n", + "\n", + "# Iterates over all possible positions and applies \n", + "# the W_iteration for each position.\n", + "@qfunc \n", + "def W_operator(vertices:QNum, adjacent_vertices: QNum):\n", + " for i in range(num_nodes):\n", + " W_iteration(i,vertices,adjacent_vertices)\n", + "\n", + "# Edge oracle for checking adjacency of 2 vertices\n", + "#\n", + "#@qfunc\n", + "#def edge_oracle\n", + "\n", + "# Swaps the contents of two quantum registers: moves the walker\n", + "@qfunc \n", + "def bitwise_swap(x: QArray[QBit], y:QArray[QBit]):\n", + " repeat(count= x.len,\n", + " iteration= lambda i: SWAP(x[i],y[i]))\n", + "\n", + "# shift operator moving the walker if vertices adjacent\n", + "@qfunc \n", + "def S_operator(vertices:QNum, adjacent_vertices: QNum):\n", + " res = QNum('res')\n", + " edge_oracle(res,vertices,adjacent_vertices)\n", + " control(ctrl= res==1,\n", + " operand= lambda: bitwise_swap(vertices,adjacent_vertices))\n" + ] + }, + { + "cell_type": "markdown", + "id": "9761696b-cefe-4ea0-9c91-ebd33af62e22", + "metadata": {}, + "source": [ + "## Circle-specific functions\n", + "\n", + "Here we have the function W_iteration with the probability of 0.5 going in either direction.\n", + "\n", + "What is special about a random walk on a circle is that the node (0) and the node (num_nodes-1) are adjacent. This fact is taken care of in the function edge_oracle." + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "5ab73e30-56fd-4028-bb13-e2f883a4e3ae", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# non-zero probabilities for allowable transitions\n", + "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", + " prob = [0] * num_nodes\n", + " prob[(i+1)% num_nodes]=0.5\n", + " prob[(i-1)% num_nodes]=0.5\n", + " print(f'State={i}, prob vec ={prob}')\n", + " \n", + " control(ctrl=vertices==i,\n", + " operand=lambda: within_apply(\n", + " compute= lambda: \n", + " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", + " action= lambda: \n", + " zero_diffuzer(adjacent_vertices)))\n", + " \n", + "# Edge oracle for checking adjacency of two vertices \n", + "@qfunc\n", + "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", + " diff = vertices - adjacent_vertices\n", + " mod = diff%num_nodes\n", + " res |= (mod == 1) | (mod == num_nodes-1)\n" + ] + }, + { + "cell_type": "markdown", + "id": "423cf377-1bc7-4637-855c-b82ced39cca9", + "metadata": {}, + "source": [ + "## Circle with 4 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "e39e695c-cc7d-4983-ba7b-2d076262a66b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Circle with 4 Nodes \n", + "\n", + "# Size of the register required for the number of nodes\n", + "size = 2\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "a863aa31-dc65-4ad4-9985-4fca062ab269", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk operator function\n", + "# applies the W and S operators after initializing\n", + "# vertices\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "1427b784-9701-4338-aec2-5cb5566a6d32", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 0.5, 0, 0.5]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5]\n", + "State=3, prob vec =[0.5, 0, 0.5, 0]\n", + "Opening: https://platform.classiq.io/circuit/a285c49b-b33e-4c1e-ab82-62011fb2f008?version=0.43.3\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "22cec3d3-aef0-46c6-9de2-74ee40d81b96", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "write_qmod(qmod,\"random4\")" + ] + }, + { + "cell_type": "markdown", + "id": "0c9a5e9c-ed50-44d1-b9ed-665f96274a92", + "metadata": {}, + "source": [ + "## Circle with 8 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "a5063b48-425c-4d73-8d6e-8b575cc61be3", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Circle with 8 Nodes \n", + "\n", + "# Size of the register required for the number of nodes\n", + "size = 3\n", + "num_nodes = 8\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "d137cf61-e92b-46d4-870e-4d1fc021650c", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk operator function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "94168a88-cdb4-411c-a162-52adf0c622bb", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0.5]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=7, prob vec =[0.5, 0, 0, 0, 0, 0, 0.5, 0]\n", + "Opening: https://platform.classiq.io/circuit/471e56b8-c366-4c74-9a8b-8010c35ebb5d?version=0.43.3\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "7458e3ac-0e87-49e2-9139-59ee31fc27f4", + "metadata": {}, + "source": [ + "## Circle with 16 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "7e7ad59c-80ca-4452-af10-883711c9b104", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Circle with 16 Nodes \n", + "\n", + "# Size of the register required for the number of nodes\n", + "size = 4\n", + "num_nodes = 16\n" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "d3444344-5117-4021-9d15-1476582bf61d", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "d30601d3-5b4f-4b23-af9d-f93d0a4f6777", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", + "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", + "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=15, prob vec =[0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0]\n", + "Opening: https://platform.classiq.io/circuit/e65b9cf2-3330-4af0-b561-beacef62e3e1?version=0.43.3\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "ccfdf941-9d91-402f-a200-ccc266f73e99", + "metadata": {}, + "source": [ + "## Line-specific functions\n", + "The function W_iteration defines the transition probabilities for a line. At the beginning and at the end of the line the walker can go only in one direction (probability = 1). For all other nodes the probability going in either direction is 0.5.\n", + "\n", + "Here the function edge_oracle just has to check whether the vertices are adjacent (distance = 1)." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "47e777d7-6527-4901-a034-951c624037e4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# non-zero probabilities for allowable probabilities\n", + "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", + " prob = [0] * (num_nodes)\n", + " if i == 0:\n", + " prob[i + 1] = 1.0\n", + " elif i == (num_nodes) -1:\n", + " prob[i - 1] = 1.0\n", + " else:\n", + " prob[i - 1] = 0.5\n", + " prob[i + 1] = 0.5\n", + " print(f'State={i}, prob vec ={prob}')\n", + " \n", + " control(ctrl=vertices==i,\n", + " operand=lambda: within_apply(\n", + " compute= lambda: \n", + " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", + " action= lambda: \n", + " zero_diffuzer(adjacent_vertices)))\n", + "\n", + "\n", + "# Edge oracle for checking adjacency of two vertices\n", + "@qfunc\n", + "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", + " diff = vertices - adjacent_vertices\n", + " res |= (diff == 1) | (diff == -1)\n" + ] + }, + { + "cell_type": "markdown", + "id": "07488d17-7cac-4e36-8335-e3303cff8efe", + "metadata": {}, + "source": [ + "## Line with 4 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "92d3f78c-ee23-45bf-acba-6d0ff0608847", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Line with 4 Nodes\n", + "\n", + "# Register size to accomodate the number of vertices\n", + "size = 2\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "613c61cc-10ea-4950-a262-3dd572c8701c", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "46fca7f3-3106-416d-a3f8-379f7095f8fa", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 1.0, 0, 0]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5]\n", + "State=3, prob vec =[0, 0, 1.0, 0]\n", + "Opening: https://platform.classiq.io/circuit/c4d4c900-fa62-4e83-b507-74837c228399?version=0.43.3\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "9dd17d8c-83dd-463d-b155-9b8c949f97d1", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "write_qmod(qmod,\"random4\")" + ] + }, + { + "cell_type": "markdown", + "id": "cfbc239f-2bfb-496a-a752-1a84f657ac3f", + "metadata": {}, + "source": [ + "## Line with 8 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "08283335-a49f-4d6e-a702-fb76ab01724b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Line with 8 Nodes\n", + "\n", + "# Register size to accomodate the number of vertices\n", + "size = 3\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "07a57ceb-c1da-47d7-8d6b-45e18667d747", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "fb711141-eadd-4ac5-bb1d-fbd31bb71f8f", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 1.0, 0]\n", + "Opening: https://platform.classiq.io/circuit/47b7f084-71e8-4984-8b58-b6c87f328209?version=0.43.3\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "7b486184-7850-4c58-baac-9e89a942e059", + "metadata": { + "tags": [] + }, + "source": [ + "## Line with 16 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "52ccbff2-f15f-4fe2-86fd-6e1d0128f428", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Line with 16 Nodes\n", + "\n", + "# Register size to accomodate the number of vertices\n", + "size = 4\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "e773bbb1-e532-477e-8891-c47f8f4f1f8d", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "c3833a55-49af-4214-be22-5b52eaa22ba6", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", + "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", + "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=15, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0, 0]\n", + "Opening: https://platform.classiq.io/circuit/89a4226c-20e4-4a24-93a2-1b3d3d6eac27?version=0.43.3\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "4b28d548-febf-43b3-9271-6cab28fd2cbb", + "metadata": {}, + "source": [ + "# Results" + ] + }, + { + "cell_type": "markdown", + "id": "b7d6c2a8-063f-4ffe-bf3c-18212aa1d57f", + "metadata": { + "jp-MarkdownHeadingCollapsed": true, + "tags": [] + }, + "source": [ + "## Number of qubits vs. nodes\n", + "\n", + "| random walk | num_nodes | transpiled qubits |\n", + "| :- | :-: | :-: |\n", + "| circle | 4 | 13 |\n", + "| circle | 8 | 22|\n", + "| circle | 16 | 33 |\n", + "| line | 4 | 17 |\n", + "| line | 8 | 25 |\n", + "| line | 16 | 37 |\n", + "\n", + "Here we see that the more nodes we have, the more transpiled qubits are going to be used. Lines need more qubits than circles." + ] + }, + { + "cell_type": "markdown", + "id": "2d8f26a8-18aa-4dda-a3ed-a3974e0184b9", + "metadata": {}, + "source": [ + "## Circle 4 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "335019e0-e185-41d5-b894-6116ada649d6", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('circle4.png')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "6bd34621-0458-4a1b-ac69-62892bcba54c", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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zWj37t2EQiFqa2t56KGHeOqppxgZGWHVqlX5c9xisRjJZNJ3J4tffHJ+Z2cnTz75ZP53yHYrtLW18dxzzzE+Pp4/ipZMJn0XAoXr43kee/fuZdmyZRhjuPPOO3nzzTfp6OggFouxevVqXnrpJaLRKK7r5mdc8evnk0gk+O///m8aGxtpbGxk06ZNPPHEE4yNjbF+/XpSqRTpdDq/rZXLAaj5oDCbgcLxV57nYa2lvr6eM2fOMD4+TltbG3fffTfvv/8+Dz/8MI7jcP78eV5++WVSqZSvdhhgUk0rk8kQCoW46667sNbS2NjICy+8QDwe56abbuLGG28kk8lw8OBBDh065LtAK+R5HqdOnaKqqoqqqio6OzupqanhN3/zNzlx4gQ33ngjzc3NZDIZXn31Vfr6/DcxZKFkMkl3dzcbN26kp6eHeDzO2rVrueOOO/jggw947LHHMMbQ39/Pq6++mp/9wm/b23xTM3OGck1NyIZAT08P0WiUxx57jNtvv50PPviAbdu28f777/PEE08QiURoaWkpcamnVth0huyRtIMHD7J582b27dtHPB7PDwd49tlneeGFF7j55pvznex+U7g+uSmHTpw4wUMPPcSjjz6aH+ycSCR44oknOHjwIDfffDPg3yZnYSB1dnayYMECvvOd77Bjxw7279/Ptm3beOedd/j5z39ObW0tixcvLmFpS0s1szmKx+M8//zzVFdXk0wmefTRR3njjTc4fvw4NTU11NfXMzo6WjbfkqdPn+bnP/851dXVtLa2sn79ep566inGx8fZtGkT4+PjZdGUyYXTO++8Q21tLalUiq1bt+bPEgBoa2vj9OnTpSzmtBljGB8f57nnniMWi5FKpXjsscd49dVX6ejoYMGCBfkplqZ7PdmgUc1sDnIBlU6nGRwcJBqNYq2lvb09P4L78OHDDA4OltXGdfbsWdrb21m5ciWffvop8XictrY2brvtNt54442yCLPC2ubQ0FB+Hfbv348xhltvvZWamhoOHTpU4pJOT277SSaT+W0tnU7T1dWVb0Lv378/EPOrzZZqZrN08fRDxhhGRkZIJBLcfffdtLS0cPTo0fxIbb+bqubY0dHBHXfcwaJFi2hububFF1/0ff9SoYvnumtvb+f2228nHA6TyWTYvXt32Ux8efE0PSMjI2QyGe6++26WLFnCwYMH+fjjj6d8/LVCg2aLJPc2RqNRlixZwuDgYL5GVo7vU67cDQ0N1NXV0dPTQyKRmPSYclmvwhPSlyxZgud5nDlzZtI00eW0LrmQjsViLFmyhP7+foaGhkpdtHk1nUGzCrMiuXgG3ELl+D6VYrbT+RakdQrCNjYT0wkz9ZkV0cWnPZWzy5W/HJrMU5lq5y/3z2mqmZavZeozK5KpNqhy38jKvfyFgrQuoCCbimpmIhIICjMRCQSFmYgEgsJMRAJBYSYigaAwE5FAUJiJSCAozEQkEBRmIhIICjMRCQSFmYgEQpHPzcydzGsu3Jz4tfCvBXeJyLWk4IR/a7I5kc8CMylBZqx4YWYtYLEmVxSDg8ViC0posBhM9l4RucYYQ0GgGTAGY7N5MDGN5oW/zVARa2YGi4O1ZqKMHhYPOxFsWTYbcFatW5FrjoEMIRzj4VgvG2IGXGOyKWEhH2azqJoVLcwsudJ4ONZirIM1YQwe3kSNzMHDWPcKSxKRQLIQxsUANlf5AQwuZuLWXLrxixZmBouZuM6FZxw8x8PggjU4Nlsn84zBMxGM9f8FMUSk+LJBlrudwViDSxgHF2MsnvHAOpPac9NVlDCzNtuLZ42FaB3h+uW4hKhwPCwh3NF+nMQwGItLeBbFFJHyZzF4ZEyYigVNEKnCsxD20oTSY4z39+J46fxjZ5oTRTwAkK191bXdzPrf/gvSoSqMA45nOfv+S4yfOpztS9NoEJFrVLYbKkOYFXc8SnjRSlxCODaNd/Y4H/70/yAUH2S2/WbFHZphPTwnTDpah2cqAA8PsE4I64TAODgTrWNVzkSuLTb3n2fIhGOYymqsDeHh4VXUYKybzwYzi4CYh2rSpYMurLXZw7EKMJFrWOGA08k5YS9z/0wUJcymc1GFmbeARSRYLNbaS0aZ5mthcwwIdWCJyNUxzyPlr1KYXRj1X6aXXRSROSusehV28hcnFK5CmNkpb4qIFDMU1MwUkUBQmIlIIBR5CqBL5U5f8DA4xk70nRk1OefEYnHIzp9icKw38XbqeHExWeOAtTjo/Z29Czt67qhlNgVM/t5ihcG8hpkBHJs9y8rgZWfMMBEm5gmSWcpOTOLhWMhMnLCrHa34jAWMNzE9TfZ9dvQlPEOF85fl3tPctuoBIYq17c57zcwzDqGahUQaV2DDFVgihMhgdFhzDhwgjkmHsRUhHBvCZM+1KHXBgsXL4DphPCeEg0vI81DPzAyZgjDD4FkX41qIRAEzkQNlUDMDcA3Ur70JZ8MtEKmgwloyTli73Sxl530yjA6coOv/e5UNtz2EjbVi8k0hKYaQden+8A0aW5ZTu3QNmYnZXtSomInJTUyLxbguxEdJVjfh4RDCo2xqZsZaRk53khrpwwmHiFjNMjtXFoN1x1nYWM/AF59hzLFSFylwDJYKmyTe10li+CyFPT4yOxZwrYF0igXrt+EsaMAzIZwiTQk272HmYEmdOUG84wCEQjjW0bfbHFkMIVxcEyZx5uSFgypSVNmuaXvpXPUya551ca1hwbJVmNp6PDObmcumNq9hlp/TO9c/Zgs2Cm0Zs5I9xzUbXsZ6uTlI9HbOi4lJ363OLC6GfDf5xHRh1pii9vXOe81MissU3DIX3SPFpve2nOjQjIgEgsJMRAJBYSYigaAwE5FAuEphdmHuomlMSisiMmNXrWamg9siMp+Kd93M/C9MnFF64ax4O3Eyw+QHiUhJFO5+V7GGkR2zN3Hb2nw5suPNCsajzlJRx5nZiYt8ZqdMsVgDjkd2DYzFmRh8aLCaPlvED67yfugYD48QITLkZtOxOIQ9lwtXbzITM8PMTHEHzRpDcrCH3refxliDCTmETIixLz4mOdiNY0KaLUPED4o3jdiMWCwZDP0HXse2fwJuGmstZmwA62ay51yYi1ty01OUMDPGgLWErSXZdZz2rn8ikkkBHm6okrDj4TjZqHXwJuYzUw+ayLXGIwzW41T7YTzPxbEprGOxThUVWBxj8UxkVssuXs1s4iorTsilkjQ4YawxVFiLNc7EyTcWbCh74q6IXHNCJPEwhEIW44A1VTgWDA4Wg0Ny1pNZFbGZafCIYAkRylcVPawxeCY7CZuxE5Pbqakpck3yqMAag2NdQhOxZYwFXDxCeISwOBMnoM9MkfvMLGaiYy97ZnzuVOjsbJI2VztTzUzkGuXlO5isyY4My1VtJs0GM4uIKGqYmUt+KZjXQQEmcs0zl9y4+Bcz6950nc4kIoGgMBORQJiXyRmtOvhFZAZMEbqh5iXMcgUrRgFFJJhylZ5iVX7mrWZmjCESiSjQROSyMpkMrusWZVnzWjNLpVLzsXgRCZBc5WeudABAREqqWK03hZmIBILCTEQCQWEmIoGgMBORQFCYiUggKMxEJBAUZiISCAozEQkEhZmIBILCTEQCQWEmIoGgMBORQFCYiUggKMxEJBAUZiISCAozEQkEY3X1EREJANXMRCQQFGYiEggKMxEJBIWZiASCwkxEAkFhJiKBoDATkUBQmIlIICjMRCQQ/n+emGn+WK2CLAAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('circle4hist.jpg')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "5216c457-12f6-451e-92a8-d43c5a15e98f", + "metadata": {}, + "source": [ + "## Line 8 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "c6ebdc89-ba16-41c4-b623-7862a0ae29af", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('line8.png')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "6dffee97-669a-4c03-a506-55c8ebbe0be1", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('line8hist.jpg')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "8cb5df08-342e-4cfd-b65e-42a8528b6969", + "metadata": {}, + "source": [ + "## Line 16 nodes\n", + "`![alt text](line16.png)`" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "62827e5d-82f4-433e-80ea-7eecf1dedbfb", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('line16.png')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c2710a88-2fa4-456f-995b-faa3a499dc03", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 [Default]", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From c64063958a2badececf98afa85a596997b9c2916 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Fri, 26 Jul 2024 03:20:33 +0200 Subject: [PATCH 55/83] Add files via upload --- .../assignments/Yasir_Mansour_hw4.ipynb | 70 +++++++++---------- 1 file changed, 32 insertions(+), 38 deletions(-) diff --git a/community/womanium/assignments/Yasir_Mansour_hw4.ipynb b/community/womanium/assignments/Yasir_Mansour_hw4.ipynb index c9da6cf2..d4a443cd 100644 --- a/community/womanium/assignments/Yasir_Mansour_hw4.ipynb +++ b/community/womanium/assignments/Yasir_Mansour_hw4.ipynb @@ -170,7 +170,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 5, "id": "5ab73e30-56fd-4028-bb13-e2f883a4e3ae", "metadata": { "tags": [] @@ -210,7 +210,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "id": "e39e695c-cc7d-4983-ba7b-2d076262a66b", "metadata": { "tags": [] @@ -226,7 +226,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "id": "a863aa31-dc65-4ad4-9985-4fca062ab269", "metadata": { "tags": [] @@ -249,7 +249,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "id": "1427b784-9701-4338-aec2-5cb5566a6d32", "metadata": { "tags": [] @@ -262,15 +262,14 @@ "State=0, prob vec =[0, 0.5, 0, 0.5]\n", "State=1, prob vec =[0.5, 0, 0.5, 0]\n", "State=2, prob vec =[0, 0.5, 0, 0.5]\n", - "State=3, prob vec =[0.5, 0, 0.5, 0]\n", - "Opening: https://platform.classiq.io/circuit/a285c49b-b33e-4c1e-ab82-62011fb2f008?version=0.43.3\n" + "State=3, prob vec =[0.5, 0, 0.5, 0]\n" ] } ], "source": [ "qmod = create_model(main)\n", "qprog = synthesize(qmod)\n", - "show(qprog)" + "#show(qprog)" ] }, { @@ -295,7 +294,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 9, "id": "a5063b48-425c-4d73-8d6e-8b575cc61be3", "metadata": { "tags": [] @@ -311,7 +310,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 10, "id": "d137cf61-e92b-46d4-870e-4d1fc021650c", "metadata": { "tags": [] @@ -332,7 +331,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 11, "id": "94168a88-cdb4-411c-a162-52adf0c622bb", "metadata": { "tags": [] @@ -349,15 +348,14 @@ "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=7, prob vec =[0.5, 0, 0, 0, 0, 0, 0.5, 0]\n", - "Opening: https://platform.classiq.io/circuit/471e56b8-c366-4c74-9a8b-8010c35ebb5d?version=0.43.3\n" + "State=7, prob vec =[0.5, 0, 0, 0, 0, 0, 0.5, 0]\n" ] } ], "source": [ "qmod = create_model(main)\n", "qprog = synthesize(qmod)\n", - "show(qprog)" + "#show(qprog)" ] }, { @@ -370,7 +368,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 12, "id": "7e7ad59c-80ca-4452-af10-883711c9b104", "metadata": { "tags": [] @@ -386,7 +384,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 13, "id": "d3444344-5117-4021-9d15-1476582bf61d", "metadata": { "tags": [] @@ -407,7 +405,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 14, "id": "d30601d3-5b4f-4b23-af9d-f93d0a4f6777", "metadata": { "tags": [] @@ -432,15 +430,14 @@ "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=15, prob vec =[0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0]\n", - "Opening: https://platform.classiq.io/circuit/e65b9cf2-3330-4af0-b561-beacef62e3e1?version=0.43.3\n" + "State=15, prob vec =[0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0]\n" ] } ], "source": [ "qmod = create_model(main)\n", "qprog = synthesize(qmod)\n", - "show(qprog)" + "#show(qprog)" ] }, { @@ -456,7 +453,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 15, "id": "47e777d7-6527-4901-a034-951c624037e4", "metadata": { "tags": [] @@ -501,7 +498,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 16, "id": "92d3f78c-ee23-45bf-acba-6d0ff0608847", "metadata": { "tags": [] @@ -517,7 +514,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 17, "id": "613c61cc-10ea-4950-a262-3dd572c8701c", "metadata": { "tags": [] @@ -538,7 +535,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 18, "id": "46fca7f3-3106-416d-a3f8-379f7095f8fa", "metadata": { "tags": [] @@ -551,15 +548,14 @@ "State=0, prob vec =[0, 1.0, 0, 0]\n", "State=1, prob vec =[0.5, 0, 0.5, 0]\n", "State=2, prob vec =[0, 0.5, 0, 0.5]\n", - "State=3, prob vec =[0, 0, 1.0, 0]\n", - "Opening: https://platform.classiq.io/circuit/c4d4c900-fa62-4e83-b507-74837c228399?version=0.43.3\n" + "State=3, prob vec =[0, 0, 1.0, 0]\n" ] } ], "source": [ "qmod = create_model(main)\n", "qprog = synthesize(qmod)\n", - "show(qprog)" + "#show(qprog)" ] }, { @@ -584,7 +580,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 19, "id": "08283335-a49f-4d6e-a702-fb76ab01724b", "metadata": { "tags": [] @@ -600,7 +596,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 20, "id": "07a57ceb-c1da-47d7-8d6b-45e18667d747", "metadata": { "tags": [] @@ -621,7 +617,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 21, "id": "fb711141-eadd-4ac5-bb1d-fbd31bb71f8f", "metadata": { "tags": [] @@ -638,15 +634,14 @@ "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=7, prob vec =[0, 0, 0, 0, 0, 0, 1.0, 0]\n", - "Opening: https://platform.classiq.io/circuit/47b7f084-71e8-4984-8b58-b6c87f328209?version=0.43.3\n" + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 1.0, 0]\n" ] } ], "source": [ "qmod = create_model(main)\n", "qprog = synthesize(qmod)\n", - "show(qprog)" + "#show(qprog)" ] }, { @@ -661,7 +656,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 22, "id": "52ccbff2-f15f-4fe2-86fd-6e1d0128f428", "metadata": { "tags": [] @@ -677,7 +672,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 23, "id": "e773bbb1-e532-477e-8891-c47f8f4f1f8d", "metadata": { "tags": [] @@ -698,7 +693,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 24, "id": "c3833a55-49af-4214-be22-5b52eaa22ba6", "metadata": { "tags": [] @@ -723,15 +718,14 @@ "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=15, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0, 0]\n", - "Opening: https://platform.classiq.io/circuit/89a4226c-20e4-4a24-93a2-1b3d3d6eac27?version=0.43.3\n" + "State=15, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0, 0]\n" ] } ], "source": [ "qmod = create_model(main)\n", "qprog = synthesize(qmod)\n", - "show(qprog)" + "#show(qprog)" ] }, { From 60cce50cb444a57f4033b465f9f4761f88068b48 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Fri, 26 Jul 2024 03:30:42 +0200 Subject: [PATCH 56/83] Add files via upload --- .../assignments/Yasir_Mansour_hw4.ipynb | 26 ++++++++----------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/community/womanium/assignments/Yasir_Mansour_hw4.ipynb b/community/womanium/assignments/Yasir_Mansour_hw4.ipynb index d4a443cd..28d98c4b 100644 --- a/community/womanium/assignments/Yasir_Mansour_hw4.ipynb +++ b/community/womanium/assignments/Yasir_Mansour_hw4.ipynb @@ -26,7 +26,7 @@ "\n", "- A. Create a well-detailed Python Jupyter notebook that explains your algorithm, including the code parts covered in class, and pictures/figures where relevant. Utilize the Python code from class: quantum_walk_circle_example.py. It can be found directly also in the Classiq Git Library in the community/womanium/assignments folder. Feel free to extend the example beyond the requirements here and what was covered in class.\n", "\n", - "- B. Contribute your notebook to the Classiq Git Library to the folder community/womanium/assignments. Follow the contribution guidelines in order to contribute - NO need to open an issue for this, you can directly open a PR. The PR title should be: `Womanium Final Assignment - `. The file name should be in the following format: `__hw4.ipynb`." + "- B. Contribute your notebook to the Classiq Git Library to the folder community/womanium/assignments. Follow the contribution guidelines in order to contribute - NO need to open an issue for this, you can directly open a PR. The PR title should be: Womanium Final Assignment - . The file name should be in the following format: __hw4.ipynb." ] }, { @@ -56,32 +56,28 @@ " - Setting the number of nodes and the size of the register.\n", "\n", "2. **Quantum State Preparation**:\n", - " - The `prepare_minus` function prepares a quantum state by applying an X gate (bit-flip) followed by a Hadamard gate (superposition) to a qubit `x`.\n", - " - The `diffuzer_oracle` function modifies an auxiliary qubit based on whether `x` is non-zero.\n", - " - The `zero_diffuzer` function allocates an auxiliary qubit, prepares it in the minus state, and applies the `diffuzer_oracle`.\n", + " - The prepare_minus function prepares a quantum state by applying an X gate (bit-flip) followed by a Hadamard gate (superposition) to a qubit x.\n", + " - The diffuzer_oracle function modifies an auxiliary qubit based on whether x is non-zero.\n", + " - The zero_diffuzer function allocates an auxiliary qubit, prepares it in the minus state, and applies the diffuzer_oracle.\n", "\n", "3. **W Operator**:\n", - " - The `W_iteration` function computes probabilities for transitioning between adjacent vertices in a graph.\n", - " - It uses a control structure to apply a quantum operation to the `adjacent_vertices` qubit based on the value of `vertices`.\n", + " - The W_iteration function computes probabilities for transitioning between adjacent vertices in a graph.\n", + " - It uses a control structure to apply a quantum operation to the adjacent_vertices qubit based on the value of vertices.\n", " - The probabilities are set to create a quantum walk behavior.\n", "\n", "4. **Edge Oracle**:\n", - " - The `edge_oracle` function checks whether `vertices` and `adjacent_vertices` are adjacent and sets the result in the output qubit `res`.\n", + " - The edge_oracle function checks whether vertices and adjacent_vertices are adjacent and sets the result in the output qubit res.\n", "\n", "5. **Bitwise Swap**:\n", - " - The `bitwise_swap` function swaps corresponding qubits between two arrays `x` and `y`.\n", + " - The bitwise_swap function swaps corresponding qubits between two arrays x and y.\n", "\n", "6. **S Operator**:\n", - " - The `S_operator` function applies the edge oracle and swaps qubits if the result is 1.\n", + " - The S_operator function applies the edge oracle and swaps qubits if the result is 1.\n", "\n", "7. **Main Function**:\n", - " - The `main` function allocates qubits for `vertices` and `adjacent_vertices`.\n", + " - The main function allocates qubits for vertices and adjacent_vertices.\n", " - It applies the W operator and S operator sequentially.\n", "\n", - "8. **Model Synthesis and Display**:\n", - " - The program creates a quantum model (`qmod`) and synthesizes it into a quantum program (`qprog`).\n", - " - The `show(qprog)` command displays the resulting quantum program.\n", - "\n", "In summary, this program simulates a quantum random walk on a graph, where the walker's position is represented by quantum states. \n", "\n", "The W operator updates the probabilities for transitioning between adjacent vertices, and the S operator performs a random step by applying an edge oracle to ensure vertex adjacency and swaps qubits accordingly.\n" @@ -896,7 +892,7 @@ "metadata": {}, "source": [ "## Line 16 nodes\n", - "`![alt text](line16.png)`" + "![alt text](line16.png)" ] }, { From e56884c9a3997c3665b3178a5ae233ff8ce3be1d Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Fri, 26 Jul 2024 05:16:08 +0200 Subject: [PATCH 57/83] Add files via upload --- community/womanium/assignments/Yasir_Mansour_hw4.ipynb | 2 -- 1 file changed, 2 deletions(-) diff --git a/community/womanium/assignments/Yasir_Mansour_hw4.ipynb b/community/womanium/assignments/Yasir_Mansour_hw4.ipynb index 28d98c4b..84634d6b 100644 --- a/community/womanium/assignments/Yasir_Mansour_hw4.ipynb +++ b/community/womanium/assignments/Yasir_Mansour_hw4.ipynb @@ -62,8 +62,6 @@ "\n", "3. **W Operator**:\n", " - The W_iteration function computes probabilities for transitioning between adjacent vertices in a graph.\n", - " - It uses a control structure to apply a quantum operation to the adjacent_vertices qubit based on the value of vertices.\n", - " - The probabilities are set to create a quantum walk behavior.\n", "\n", "4. **Edge Oracle**:\n", " - The edge_oracle function checks whether vertices and adjacent_vertices are adjacent and sets the result in the output qubit res.\n", From 226012a41f0829f8e161f2f870c7c905ee3f191d Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Fri, 26 Jul 2024 05:26:27 +0200 Subject: [PATCH 58/83] Add files via upload --- .../assignments/Yasir_Mansour_hw4.ipynb | 31 ++++++++++++++++--- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/community/womanium/assignments/Yasir_Mansour_hw4.ipynb b/community/womanium/assignments/Yasir_Mansour_hw4.ipynb index 84634d6b..1d65d9e6 100644 --- a/community/womanium/assignments/Yasir_Mansour_hw4.ipynb +++ b/community/womanium/assignments/Yasir_Mansour_hw4.ipynb @@ -31,7 +31,30 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 10, + "id": "fd9eebc7-b78b-4aa7-8614-fbd7dc07f452", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", + "qiskit-ibm-runtime 0.25.0 requires pydantic>=2.5.0, but you have pydantic 1.10.17 which is incompatible.\n", + "qc-grader 0.19.7 requires networkx==3.2.1, but you have networkx 2.8.8 which is incompatible.\u001b[0m\u001b[31m\n", + "\u001b[0mNote: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install -U -q classiq" + ] + }, + { + "cell_type": "code", + "execution_count": 11, "id": "202628d6-3fe3-47fa-8a15-04b7fd9716f4", "metadata": { "tags": [] @@ -86,19 +109,19 @@ "id": "bbe3dfa3-2265-44af-b708-9a0ad189f5bf", "metadata": {}, "source": [ - "## Common functions for circles or lines" + "\n", + "## Common functions for circles or lines\n" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 12, "id": "425c8fd2-f8f5-409b-a569-d923819437c4", "metadata": { "tags": [] }, "outputs": [], "source": [ - "\n", "# Prepares the minus state (aux qubit) for the diffuzer oracle\n", "@qfunc\n", "def prepare_minus(x: QBit):\n", From 1fc8c41c4ceabecc4cedcbc313ad3a223dad72f8 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Fri, 26 Jul 2024 06:05:56 +0200 Subject: [PATCH 59/83] Add files via upload From bd9dcd3fb92ff06f50186bf64b18b7b5105cc4a8 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Fri, 26 Jul 2024 06:18:53 +0200 Subject: [PATCH 60/83] Add files via upload From dfce8fc859456080e7042b04270c1f7a1bbb90e0 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Fri, 26 Jul 2024 06:47:00 +0200 Subject: [PATCH 61/83] Add files via upload --- .../assignments/Yasir_Mansour_hw4.ipynb | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/community/womanium/assignments/Yasir_Mansour_hw4.ipynb b/community/womanium/assignments/Yasir_Mansour_hw4.ipynb index 1d65d9e6..68f37160 100644 --- a/community/womanium/assignments/Yasir_Mansour_hw4.ipynb +++ b/community/womanium/assignments/Yasir_Mansour_hw4.ipynb @@ -18,15 +18,29 @@ "source": [ "## Assignment: Advanced Algorithms Design\n", "## _Quantum random walk_\n", + "\n", "**Instructions - Final assignment**\n", "\n", "Follow the example from Bootcamp 4 for creating the quantum walk operator for the case of a circle with 4 nodes, and design the quantum walk operator for the case of a line with 16 nodes:\n", "\n", "**Tasks:**\n", "\n", - "- A. Create a well-detailed Python Jupyter notebook that explains your algorithm, including the code parts covered in class, and pictures/figures where relevant. Utilize the Python code from class: quantum_walk_circle_example.py. It can be found directly also in the Classiq Git Library in the community/womanium/assignments folder. Feel free to extend the example beyond the requirements here and what was covered in class.\n", + "A.\n", + "\n", + "Create a well-detailed Python Jupyter notebook that explains your algorithm, including the code parts covered in class, and pictures/figures where relevant. \n", + "\n", + "Utilize the Python code from class: quantum_walk_circle_example.py. It can be found directly also in the Classiq Git Library in the community/womanium/assignments folder. \n", + "\n", + "Feel free to extend the example beyond the requirements here and what was covered in class.\n", + "\n", + "B.\n", + "\n", + "Contribute your notebook to the Classiq Git Library to the folder community/womanium/assignments. \n", + "\n", + "Follow the contribution guidelines in order to contribute - NO need to open an issue for this, you can directly open a PR.\n", "\n", - "- B. Contribute your notebook to the Classiq Git Library to the folder community/womanium/assignments. Follow the contribution guidelines in order to contribute - NO need to open an issue for this, you can directly open a PR. The PR title should be: Womanium Final Assignment - . The file name should be in the following format: __hw4.ipynb." + "The PR title should be: Womanium Final Assignment . \n", + "The file name should be in the following format: __hw4.ipynb." ] }, { From de3c6a9838dbb08e12c60dcf49abf125104e5929 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Fri, 26 Jul 2024 06:56:00 +0200 Subject: [PATCH 62/83] Add files via upload --- .../assignments/Yasir_Mansour_hw4.ipynb | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/community/womanium/assignments/Yasir_Mansour_hw4.ipynb b/community/womanium/assignments/Yasir_Mansour_hw4.ipynb index 68f37160..0f5528c0 100644 --- a/community/womanium/assignments/Yasir_Mansour_hw4.ipynb +++ b/community/womanium/assignments/Yasir_Mansour_hw4.ipynb @@ -16,13 +16,29 @@ "tags": [] }, "source": [ - "## Assignment: Advanced Algorithms Design\n", - "## _Quantum random walk_\n", - "\n", + "## Advanced Algorithms Design\n", + "## _Quantum random walk_" + ] + }, + { + "cell_type": "markdown", + "id": "64b142e7-efbf-4205-bc87-112f21c69c09", + "metadata": { + "tags": [] + }, + "source": [ "**Instructions - Final assignment**\n", "\n", - "Follow the example from Bootcamp 4 for creating the quantum walk operator for the case of a circle with 4 nodes, and design the quantum walk operator for the case of a line with 16 nodes:\n", - "\n", + "Follow the example from Bootcamp 4 for creating the quantum walk operator for the case of a circle with 4 nodes, and design the quantum walk operator for the case of a line with 16 nodes:\n" + ] + }, + { + "cell_type": "markdown", + "id": "7a7e4b5d-12fb-482f-9b59-b8bc4949854b", + "metadata": { + "tags": [] + }, + "source": [ "**Tasks:**\n", "\n", "A.\n", From 4fd9b1f069e50fc7a9c35a305aa05dad6af8a2f3 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Fri, 26 Jul 2024 07:09:47 +0200 Subject: [PATCH 63/83] Add files via upload --- .../assignments/Yasir_Mansour_hw4.ipynb | 72 ++++++++++--------- 1 file changed, 38 insertions(+), 34 deletions(-) diff --git a/community/womanium/assignments/Yasir_Mansour_hw4.ipynb b/community/womanium/assignments/Yasir_Mansour_hw4.ipynb index 0f5528c0..dbe50b3f 100644 --- a/community/womanium/assignments/Yasir_Mansour_hw4.ipynb +++ b/community/womanium/assignments/Yasir_Mansour_hw4.ipynb @@ -84,7 +84,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 2, "id": "202628d6-3fe3-47fa-8a15-04b7fd9716f4", "metadata": { "tags": [] @@ -145,7 +145,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 3, "id": "425c8fd2-f8f5-409b-a569-d923819437c4", "metadata": { "tags": [] @@ -217,7 +217,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "id": "5ab73e30-56fd-4028-bb13-e2f883a4e3ae", "metadata": { "tags": [] @@ -257,7 +257,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "id": "e39e695c-cc7d-4983-ba7b-2d076262a66b", "metadata": { "tags": [] @@ -273,7 +273,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "id": "a863aa31-dc65-4ad4-9985-4fca062ab269", "metadata": { "tags": [] @@ -296,7 +296,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "id": "1427b784-9701-4338-aec2-5cb5566a6d32", "metadata": { "tags": [] @@ -334,14 +334,16 @@ { "cell_type": "markdown", "id": "0c9a5e9c-ed50-44d1-b9ed-665f96274a92", - "metadata": {}, + "metadata": { + "tags": [] + }, "source": [ "## Circle with 8 nodes" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "id": "a5063b48-425c-4d73-8d6e-8b575cc61be3", "metadata": { "tags": [] @@ -357,7 +359,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "id": "d137cf61-e92b-46d4-870e-4d1fc021650c", "metadata": { "tags": [] @@ -378,7 +380,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 10, "id": "94168a88-cdb4-411c-a162-52adf0c622bb", "metadata": { "tags": [] @@ -415,7 +417,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 11, "id": "7e7ad59c-80ca-4452-af10-883711c9b104", "metadata": { "tags": [] @@ -431,7 +433,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 12, "id": "d3444344-5117-4021-9d15-1476582bf61d", "metadata": { "tags": [] @@ -452,7 +454,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 13, "id": "d30601d3-5b4f-4b23-af9d-f93d0a4f6777", "metadata": { "tags": [] @@ -500,7 +502,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 14, "id": "47e777d7-6527-4901-a034-951c624037e4", "metadata": { "tags": [] @@ -545,7 +547,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 15, "id": "92d3f78c-ee23-45bf-acba-6d0ff0608847", "metadata": { "tags": [] @@ -561,7 +563,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 16, "id": "613c61cc-10ea-4950-a262-3dd572c8701c", "metadata": { "tags": [] @@ -582,7 +584,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 17, "id": "46fca7f3-3106-416d-a3f8-379f7095f8fa", "metadata": { "tags": [] @@ -620,14 +622,16 @@ { "cell_type": "markdown", "id": "cfbc239f-2bfb-496a-a752-1a84f657ac3f", - "metadata": {}, + "metadata": { + "tags": [] + }, "source": [ "## Line with 8 nodes" ] }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 18, "id": "08283335-a49f-4d6e-a702-fb76ab01724b", "metadata": { "tags": [] @@ -643,7 +647,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 19, "id": "07a57ceb-c1da-47d7-8d6b-45e18667d747", "metadata": { "tags": [] @@ -664,7 +668,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 20, "id": "fb711141-eadd-4ac5-bb1d-fbd31bb71f8f", "metadata": { "tags": [] @@ -703,7 +707,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 21, "id": "52ccbff2-f15f-4fe2-86fd-6e1d0128f428", "metadata": { "tags": [] @@ -719,7 +723,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 22, "id": "e773bbb1-e532-477e-8891-c47f8f4f1f8d", "metadata": { "tags": [] @@ -740,7 +744,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 23, "id": "c3833a55-49af-4214-be22-5b52eaa22ba6", "metadata": { "tags": [] @@ -815,7 +819,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 24, "id": "335019e0-e185-41d5-b894-6116ada649d6", "metadata": { "tags": [] @@ -844,7 +848,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 25, "id": "6bd34621-0458-4a1b-ac69-62892bcba54c", "metadata": { "tags": [] @@ -881,7 +885,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 26, "id": "c6ebdc89-ba16-41c4-b623-7862a0ae29af", "metadata": { "tags": [] @@ -910,7 +914,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 27, "id": "6dffee97-669a-4c03-a506-55c8ebbe0be1", "metadata": { "tags": [] @@ -948,7 +952,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 28, "id": "62827e5d-82f4-433e-80ea-7eecf1dedbfb", "metadata": { "tags": [] @@ -976,12 +980,12 @@ ] }, { - "cell_type": "code", - "execution_count": null, - "id": "c2710a88-2fa4-456f-995b-faa3a499dc03", + "cell_type": "markdown", + "id": "a29b9882-972f-4f52-b4d2-0eb4d4ee866e", "metadata": {}, - "outputs": [], - "source": [] + "source": [ + "eof" + ] } ], "metadata": { From 33d73132eb8e737dfff7956602c3e452c2b0ed96 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Fri, 26 Jul 2024 07:14:51 +0200 Subject: [PATCH 64/83] Add files via upload --- .../assignments/Yasir_Mansour_hw4.ipynb | 2012 ++++++++--------- 1 file changed, 1004 insertions(+), 1008 deletions(-) diff --git a/community/womanium/assignments/Yasir_Mansour_hw4.ipynb b/community/womanium/assignments/Yasir_Mansour_hw4.ipynb index dbe50b3f..c9eab530 100644 --- a/community/womanium/assignments/Yasir_Mansour_hw4.ipynb +++ b/community/womanium/assignments/Yasir_Mansour_hw4.ipynb @@ -1,1012 +1,1008 @@ { - "cells": [ - { - "cell_type": "markdown", - "id": "b7f74e3a-7dae-4939-a2ef-0ff82d8eadd0", - "metadata": {}, - "source": [ - "\n", - "# Assignment 6.12 - womanium 2024\n" - ] - }, - { - "cell_type": "markdown", - "id": "adc17ffc-b892-4a94-bebb-4ba74d208a9e", - "metadata": { - "tags": [] - }, - "source": [ - "## Advanced Algorithms Design\n", - "## _Quantum random walk_" - ] - }, - { - "cell_type": "markdown", - "id": "64b142e7-efbf-4205-bc87-112f21c69c09", - "metadata": { - "tags": [] - }, - "source": [ - "**Instructions - Final assignment**\n", - "\n", - "Follow the example from Bootcamp 4 for creating the quantum walk operator for the case of a circle with 4 nodes, and design the quantum walk operator for the case of a line with 16 nodes:\n" - ] - }, - { - "cell_type": "markdown", - "id": "7a7e4b5d-12fb-482f-9b59-b8bc4949854b", - "metadata": { - "tags": [] - }, - "source": [ - "**Tasks:**\n", - "\n", - "A.\n", - "\n", - "Create a well-detailed Python Jupyter notebook that explains your algorithm, including the code parts covered in class, and pictures/figures where relevant. \n", - "\n", - "Utilize the Python code from class: quantum_walk_circle_example.py. It can be found directly also in the Classiq Git Library in the community/womanium/assignments folder. \n", - "\n", - "Feel free to extend the example beyond the requirements here and what was covered in class.\n", - "\n", - "B.\n", - "\n", - "Contribute your notebook to the Classiq Git Library to the folder community/womanium/assignments. \n", - "\n", - "Follow the contribution guidelines in order to contribute - NO need to open an issue for this, you can directly open a PR.\n", - "\n", - "The PR title should be: Womanium Final Assignment . \n", - "The file name should be in the following format: __hw4.ipynb." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "fd9eebc7-b78b-4aa7-8614-fbd7dc07f452", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", - "qiskit-ibm-runtime 0.25.0 requires pydantic>=2.5.0, but you have pydantic 1.10.17 which is incompatible.\n", - "qc-grader 0.19.7 requires networkx==3.2.1, but you have networkx 2.8.8 which is incompatible.\u001b[0m\u001b[31m\n", - "\u001b[0mNote: you may need to restart the kernel to use updated packages.\n" - ] - } - ], - "source": [ - "%pip install -U -q classiq" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "202628d6-3fe3-47fa-8a15-04b7fd9716f4", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "from classiq import *" - ] - }, - { - "cell_type": "markdown", - "id": "9f608bac-c3eb-495e-9015-3e6396c7543c", - "metadata": { - "tags": [] - }, - "source": [ - "# Implementation\n", - "\n", - "Implementation of a quantum random walk on a circle/one-dimensional line graph with size num_nodes. The core components are:\n", - "\n", - "1. **Initialization**:\n", - " - Setting the number of nodes and the size of the register.\n", - "\n", - "2. **Quantum State Preparation**:\n", - " - The prepare_minus function prepares a quantum state by applying an X gate (bit-flip) followed by a Hadamard gate (superposition) to a qubit x.\n", - " - The diffuzer_oracle function modifies an auxiliary qubit based on whether x is non-zero.\n", - " - The zero_diffuzer function allocates an auxiliary qubit, prepares it in the minus state, and applies the diffuzer_oracle.\n", - "\n", - "3. **W Operator**:\n", - " - The W_iteration function computes probabilities for transitioning between adjacent vertices in a graph.\n", - "\n", - "4. **Edge Oracle**:\n", - " - The edge_oracle function checks whether vertices and adjacent_vertices are adjacent and sets the result in the output qubit res.\n", - "\n", - "5. **Bitwise Swap**:\n", - " - The bitwise_swap function swaps corresponding qubits between two arrays x and y.\n", - "\n", - "6. **S Operator**:\n", - " - The S_operator function applies the edge oracle and swaps qubits if the result is 1.\n", - "\n", - "7. **Main Function**:\n", - " - The main function allocates qubits for vertices and adjacent_vertices.\n", - " - It applies the W operator and S operator sequentially.\n", - "\n", - "In summary, this program simulates a quantum random walk on a graph, where the walker's position is represented by quantum states. \n", - "\n", - "The W operator updates the probabilities for transitioning between adjacent vertices, and the S operator performs a random step by applying an edge oracle to ensure vertex adjacency and swaps qubits accordingly.\n" - ] - }, - { - "cell_type": "markdown", - "id": "bbe3dfa3-2265-44af-b708-9a0ad189f5bf", - "metadata": {}, - "source": [ - "\n", - "## Common functions for circles or lines\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "425c8fd2-f8f5-409b-a569-d923819437c4", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Prepares the minus state (aux qubit) for the diffuzer oracle\n", - "@qfunc\n", - "def prepare_minus(x: QBit):\n", - " X(x)\n", - " H(x)\n", - "\n", - "# x: current node\n", - "@qfunc\n", - "def diffuzer_oracle(aux: Output[QNum],x:QNum):\n", - " aux^=(x!=0)\n", - "\n", - "# Zero diffuser using Grover's algorithm technique\n", - "# x: current node \n", - "@qfunc\n", - "def zero_diffuzer(x: QNum):\n", - " aux = QNum('aux')\n", - " allocate(1,aux)\n", - " within_apply(compute=lambda: prepare_minus(aux),\n", - " action=lambda: diffuzer_oracle)\n", - "\n", - "# non-zero probabilities for allowable transitions\n", - "# @qfunc\n", - "# def W_iteration\n", - "\n", - "# Iterates over all possible positions and applies \n", - "# the W_iteration for each position.\n", - "@qfunc \n", - "def W_operator(vertices:QNum, adjacent_vertices: QNum):\n", - " for i in range(num_nodes):\n", - " W_iteration(i,vertices,adjacent_vertices)\n", - "\n", - "# Edge oracle for checking adjacency of 2 vertices\n", - "#\n", - "#@qfunc\n", - "#def edge_oracle\n", - "\n", - "# Swaps the contents of two quantum registers: moves the walker\n", - "@qfunc \n", - "def bitwise_swap(x: QArray[QBit], y:QArray[QBit]):\n", - " repeat(count= x.len,\n", - " iteration= lambda i: SWAP(x[i],y[i]))\n", - "\n", - "# shift operator moving the walker if vertices adjacent\n", - "@qfunc \n", - "def S_operator(vertices:QNum, adjacent_vertices: QNum):\n", - " res = QNum('res')\n", - " edge_oracle(res,vertices,adjacent_vertices)\n", - " control(ctrl= res==1,\n", - " operand= lambda: bitwise_swap(vertices,adjacent_vertices))\n" - ] - }, - { - "cell_type": "markdown", - "id": "9761696b-cefe-4ea0-9c91-ebd33af62e22", - "metadata": {}, - "source": [ - "## Circle-specific functions\n", - "\n", - "Here we have the function W_iteration with the probability of 0.5 going in either direction.\n", - "\n", - "What is special about a random walk on a circle is that the node (0) and the node (num_nodes-1) are adjacent. This fact is taken care of in the function edge_oracle." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "5ab73e30-56fd-4028-bb13-e2f883a4e3ae", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "\n", - "# non-zero probabilities for allowable transitions\n", - "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", - " prob = [0] * num_nodes\n", - " prob[(i+1)% num_nodes]=0.5\n", - " prob[(i-1)% num_nodes]=0.5\n", - " print(f'State={i}, prob vec ={prob}')\n", - " \n", - " control(ctrl=vertices==i,\n", - " operand=lambda: within_apply(\n", - " compute= lambda: \n", - " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", - " action= lambda: \n", - " zero_diffuzer(adjacent_vertices)))\n", - " \n", - "# Edge oracle for checking adjacency of two vertices \n", - "@qfunc\n", - "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", - " diff = vertices - adjacent_vertices\n", - " mod = diff%num_nodes\n", - " res |= (mod == 1) | (mod == num_nodes-1)\n" - ] - }, - { - "cell_type": "markdown", - "id": "423cf377-1bc7-4637-855c-b82ced39cca9", - "metadata": {}, - "source": [ - "## Circle with 4 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "e39e695c-cc7d-4983-ba7b-2d076262a66b", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Circle with 4 Nodes \n", - "\n", - "# Size of the register required for the number of nodes\n", - "size = 2\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "a863aa31-dc65-4ad4-9985-4fca062ab269", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk operator function\n", - "# applies the W and S operators after initializing\n", - "# vertices\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "1427b784-9701-4338-aec2-5cb5566a6d32", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 0.5, 0, 0.5]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5]\n", - "State=3, prob vec =[0.5, 0, 0.5, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "22cec3d3-aef0-46c6-9de2-74ee40d81b96", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "write_qmod(qmod,\"random4\")" - ] - }, - { - "cell_type": "markdown", - "id": "0c9a5e9c-ed50-44d1-b9ed-665f96274a92", - "metadata": { - "tags": [] - }, - "source": [ - "## Circle with 8 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "a5063b48-425c-4d73-8d6e-8b575cc61be3", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Circle with 8 Nodes \n", - "\n", - "# Size of the register required for the number of nodes\n", - "size = 3\n", - "num_nodes = 8\n" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "d137cf61-e92b-46d4-870e-4d1fc021650c", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk operator function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "94168a88-cdb4-411c-a162-52adf0c622bb", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0.5]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=7, prob vec =[0.5, 0, 0, 0, 0, 0, 0.5, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "7458e3ac-0e87-49e2-9139-59ee31fc27f4", - "metadata": {}, - "source": [ - "## Circle with 16 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "7e7ad59c-80ca-4452-af10-883711c9b104", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Circle with 16 Nodes \n", - "\n", - "# Size of the register required for the number of nodes\n", - "size = 4\n", - "num_nodes = 16\n" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "d3444344-5117-4021-9d15-1476582bf61d", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "d30601d3-5b4f-4b23-af9d-f93d0a4f6777", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", - "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", - "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=15, prob vec =[0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "ccfdf941-9d91-402f-a200-ccc266f73e99", - "metadata": {}, - "source": [ - "## Line-specific functions\n", - "The function W_iteration defines the transition probabilities for a line. At the beginning and at the end of the line the walker can go only in one direction (probability = 1). For all other nodes the probability going in either direction is 0.5.\n", - "\n", - "Here the function edge_oracle just has to check whether the vertices are adjacent (distance = 1)." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "47e777d7-6527-4901-a034-951c624037e4", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "\n", - "# non-zero probabilities for allowable probabilities\n", - "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", - " prob = [0] * (num_nodes)\n", - " if i == 0:\n", - " prob[i + 1] = 1.0\n", - " elif i == (num_nodes) -1:\n", - " prob[i - 1] = 1.0\n", - " else:\n", - " prob[i - 1] = 0.5\n", - " prob[i + 1] = 0.5\n", - " print(f'State={i}, prob vec ={prob}')\n", - " \n", - " control(ctrl=vertices==i,\n", - " operand=lambda: within_apply(\n", - " compute= lambda: \n", - " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", - " action= lambda: \n", - " zero_diffuzer(adjacent_vertices)))\n", - "\n", - "\n", - "# Edge oracle for checking adjacency of two vertices\n", - "@qfunc\n", - "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", - " diff = vertices - adjacent_vertices\n", - " res |= (diff == 1) | (diff == -1)\n" - ] - }, - { - "cell_type": "markdown", - "id": "07488d17-7cac-4e36-8335-e3303cff8efe", - "metadata": {}, - "source": [ - "## Line with 4 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "92d3f78c-ee23-45bf-acba-6d0ff0608847", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Line with 4 Nodes\n", - "\n", - "# Register size to accomodate the number of vertices\n", - "size = 2\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "613c61cc-10ea-4950-a262-3dd572c8701c", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "46fca7f3-3106-416d-a3f8-379f7095f8fa", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 1.0, 0, 0]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5]\n", - "State=3, prob vec =[0, 0, 1.0, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "9dd17d8c-83dd-463d-b155-9b8c949f97d1", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "write_qmod(qmod,\"random4\")" - ] - }, - { - "cell_type": "markdown", - "id": "cfbc239f-2bfb-496a-a752-1a84f657ac3f", - "metadata": { - "tags": [] - }, - "source": [ - "## Line with 8 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "08283335-a49f-4d6e-a702-fb76ab01724b", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Line with 8 Nodes\n", - "\n", - "# Register size to accomodate the number of vertices\n", - "size = 3\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "07a57ceb-c1da-47d7-8d6b-45e18667d747", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "fb711141-eadd-4ac5-bb1d-fbd31bb71f8f", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=7, prob vec =[0, 0, 0, 0, 0, 0, 1.0, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "7b486184-7850-4c58-baac-9e89a942e059", - "metadata": { - "tags": [] - }, - "source": [ - "## Line with 16 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "52ccbff2-f15f-4fe2-86fd-6e1d0128f428", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Line with 16 Nodes\n", - "\n", - "# Register size to accomodate the number of vertices\n", - "size = 4\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "e773bbb1-e532-477e-8891-c47f8f4f1f8d", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "c3833a55-49af-4214-be22-5b52eaa22ba6", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", - "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", - "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=15, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "4b28d548-febf-43b3-9271-6cab28fd2cbb", - "metadata": {}, - "source": [ - "# Results" - ] - }, - { - "cell_type": "markdown", - "id": "b7d6c2a8-063f-4ffe-bf3c-18212aa1d57f", - "metadata": { - "jp-MarkdownHeadingCollapsed": true, - "tags": [] - }, - "source": [ - "## Number of qubits vs. nodes\n", - "\n", - "| random walk | num_nodes | transpiled qubits |\n", - "| :- | :-: | :-: |\n", - "| circle | 4 | 13 |\n", - "| circle | 8 | 22|\n", - "| circle | 16 | 33 |\n", - "| line | 4 | 17 |\n", - "| line | 8 | 25 |\n", - "| line | 16 | 37 |\n", - "\n", - "Here we see that the more nodes we have, the more transpiled qubits are going to be used. Lines need more qubits than circles." - ] - }, - { - "cell_type": "markdown", - "id": "2d8f26a8-18aa-4dda-a3ed-a3974e0184b9", - "metadata": {}, - "source": [ - "## Circle 4 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "335019e0-e185-41d5-b894-6116ada649d6", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('circle4.png')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "6bd34621-0458-4a1b-ac69-62892bcba54c", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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zWj37t2EQiFqa2t56KGHeOqppxgZGWHVqlX5c9xisRjJZNJ3J4tffHJ+Z2cnTz75ZP53yHYrtLW18dxzzzE+Pp4/ipZMJn0XAoXr43kee/fuZdmyZRhjuPPOO3nzzTfp6OggFouxevVqXnrpJaLRKK7r5mdc8evnk0gk+O///m8aGxtpbGxk06ZNPPHEE4yNjbF+/XpSqRTpdDq/rZXLAaj5oDCbgcLxV57nYa2lvr6eM2fOMD4+TltbG3fffTfvv/8+Dz/8MI7jcP78eV5++WVSqZSvdhhgUk0rk8kQCoW46667sNbS2NjICy+8QDwe56abbuLGG28kk8lw8OBBDh065LtAK+R5HqdOnaKqqoqqqio6OzupqanhN3/zNzlx4gQ33ngjzc3NZDIZXn31Vfr6/DcxZKFkMkl3dzcbN26kp6eHeDzO2rVrueOOO/jggw947LHHMMbQ39/Pq6++mp/9wm/b23xTM3OGck1NyIZAT08P0WiUxx57jNtvv50PPviAbdu28f777/PEE08QiURoaWkpcamnVth0huyRtIMHD7J582b27dtHPB7PDwd49tlneeGFF7j55pvznex+U7g+uSmHTpw4wUMPPcSjjz6aH+ycSCR44oknOHjwIDfffDPg3yZnYSB1dnayYMECvvOd77Bjxw7279/Ptm3beOedd/j5z39ObW0tixcvLmFpS0s1szmKx+M8//zzVFdXk0wmefTRR3njjTc4fvw4NTU11NfXMzo6WjbfkqdPn+bnP/851dXVtLa2sn79ep566inGx8fZtGkT4+PjZdGUyYXTO++8Q21tLalUiq1bt+bPEgBoa2vj9OnTpSzmtBljGB8f57nnniMWi5FKpXjsscd49dVX6ejoYMGCBfkplqZ7PdmgUc1sDnIBlU6nGRwcJBqNYq2lvb09P4L78OHDDA4OltXGdfbsWdrb21m5ciWffvop8XictrY2brvtNt54442yCLPC2ubQ0FB+Hfbv348xhltvvZWamhoOHTpU4pJOT277SSaT+W0tnU7T1dWVb0Lv378/EPOrzZZqZrN08fRDxhhGRkZIJBLcfffdtLS0cPTo0fxIbb+bqubY0dHBHXfcwaJFi2hububFF1/0ff9SoYvnumtvb+f2228nHA6TyWTYvXt32Ux8efE0PSMjI2QyGe6++26WLFnCwYMH+fjjj6d8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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('circle4hist.jpg')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "5216c457-12f6-451e-92a8-d43c5a15e98f", - "metadata": {}, - "source": [ - "## Line 8 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "c6ebdc89-ba16-41c4-b623-7862a0ae29af", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('line8.png')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "6dffee97-669a-4c03-a506-55c8ebbe0be1", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" + "cells": [ + { + "cell_type": "markdown", + "id": "b7f74e3a-7dae-4939-a2ef-0ff82d8eadd0", + "metadata": {}, + "source": [ + "\n", + "# Assignment 6.12 - womanium 2024\n" + ] + }, + { + "cell_type": "markdown", + "id": "adc17ffc-b892-4a94-bebb-4ba74d208a9e", + "metadata": { + "tags": [] + }, + "source": [ + "## Advanced Algorithms Design\n", + "## _Quantum random walk_" + ] + }, + { + "cell_type": "markdown", + "id": "64b142e7-efbf-4205-bc87-112f21c69c09", + "metadata": { + "tags": [] + }, + "source": [ + "**Instructions - Final assignment**\n", + "\n", + "Follow the example from Bootcamp 4 for creating the quantum walk operator for the case of a circle with 4 nodes, and design the quantum walk operator for the case of a line with 16 nodes:\n" + ] + }, + { + "cell_type": "markdown", + "id": "7a7e4b5d-12fb-482f-9b59-b8bc4949854b", + "metadata": { + "tags": [] + }, + "source": [ + "**Tasks:**\n", + "\n", + "A.\n", + "\n", + "Create a well-detailed Python Jupyter notebook that explains your algorithm, including the code parts covered in class, and pictures/figures where relevant. \n", + "\n", + "Utilize the Python code from class: quantum_walk_circle_example.py. It can be found directly also in the Classiq Git Library in the community/womanium/assignments folder. \n", + "\n", + "Feel free to extend the example beyond the requirements here and what was covered in class.\n", + "\n", + "B.\n", + "\n", + "Contribute your notebook to the Classiq Git Library to the folder community/womanium/assignments. \n", + "\n", + "Follow the contribution guidelines in order to contribute - NO need to open an issue for this, you can directly open a PR.\n", + "\n", + "The PR title should be: Womanium Final Assignment . \n", + "The file name should be in the following format: __hw4.ipynb." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "fd9eebc7-b78b-4aa7-8614-fbd7dc07f452", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", + "qiskit-ibm-runtime 0.25.0 requires pydantic>=2.5.0, but you have pydantic 1.10.17 which is incompatible.\n", + "qc-grader 0.19.7 requires networkx==3.2.1, but you have networkx 2.8.8 which is incompatible.\u001b[0m\u001b[31m\n", + "\u001b[0mNote: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install -U -q classiq" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "202628d6-3fe3-47fa-8a15-04b7fd9716f4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "from classiq import *" + ] + }, + { + "cell_type": "markdown", + "id": "9f608bac-c3eb-495e-9015-3e6396c7543c", + "metadata": { + "tags": [] + }, + "source": [ + "# Implementation\n", + "\n", + "Implementation of a quantum random walk on a circle/one-dimensional line graph with size num_nodes. The core components are:\n", + "\n", + "1. **Initialization**:\n", + " - Setting the number of nodes and the size of the register.\n", + "\n", + "2. **Quantum State Preparation**:\n", + " - The prepare_minus function prepares a quantum state by applying an X gate (bit-flip) followed by a Hadamard gate (superposition) to a qubit x.\n", + " - The diffuzer_oracle function modifies an auxiliary qubit based on whether x is non-zero.\n", + " - The zero_diffuzer function allocates an auxiliary qubit, prepares it in the minus state, and applies the diffuzer_oracle.\n", + "\n", + "3. **W Operator**:\n", + " - The W_iteration function computes probabilities for transitioning between adjacent vertices in a graph.\n", + "\n", + "4. **Edge Oracle**:\n", + " - The edge_oracle function checks whether vertices and adjacent_vertices are adjacent and sets the result in the output qubit res.\n", + "\n", + "5. **Bitwise Swap**:\n", + " - The bitwise_swap function swaps corresponding qubits between two arrays x and y.\n", + "\n", + "6. **S Operator**:\n", + " - The S_operator function applies the edge oracle and swaps qubits if the result is 1.\n", + "\n", + "7. **Main Function**:\n", + " - The main function allocates qubits for vertices and adjacent_vertices.\n", + " - It applies the W operator and S operator sequentially.\n", + "\n", + "In summary, this program simulates a quantum random walk on a graph, where the walker's position is represented by quantum states. \n", + "\n", + "The W operator updates the probabilities for transitioning between adjacent vertices, and the S operator performs a random step by applying an edge oracle to ensure vertex adjacency and swaps qubits accordingly.\n" + ] + }, + { + "cell_type": "markdown", + "id": "bbe3dfa3-2265-44af-b708-9a0ad189f5bf", + "metadata": {}, + "source": [ + "\n", + "## Common functions for circles or lines\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "425c8fd2-f8f5-409b-a569-d923819437c4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Prepares the minus state (aux qubit) for the diffuzer oracle\n", + "@qfunc\n", + "def prepare_minus(x: QBit):\n", + " X(x)\n", + " H(x)\n", + "\n", + "# x: current node\n", + "@qfunc\n", + "def diffuzer_oracle(aux: Output[QNum],x:QNum):\n", + " aux^=(x!=0)\n", + "\n", + "# Zero diffuser using Grover's algorithm technique\n", + "# x: current node \n", + "@qfunc\n", + "def zero_diffuzer(x: QNum):\n", + " aux = QNum('aux')\n", + " allocate(1,aux)\n", + " within_apply(compute=lambda: prepare_minus(aux),\n", + " action=lambda: diffuzer_oracle)\n", + "\n", + "# non-zero probabilities for allowable transitions\n", + "# @qfunc\n", + "# def W_iteration\n", + "\n", + "# Iterates over all possible positions and applies \n", + "# the W_iteration for each position.\n", + "@qfunc \n", + "def W_operator(vertices:QNum, adjacent_vertices: QNum):\n", + " for i in range(num_nodes):\n", + " W_iteration(i,vertices,adjacent_vertices)\n", + "\n", + "# Edge oracle for checking adjacency of 2 vertices\n", + "#\n", + "#@qfunc\n", + "#def edge_oracle\n", + "\n", + "# Swaps the contents of two quantum registers: moves the walker\n", + "@qfunc \n", + "def bitwise_swap(x: QArray[QBit], y:QArray[QBit]):\n", + " repeat(count= x.len,\n", + " iteration= lambda i: SWAP(x[i],y[i]))\n", + "\n", + "# shift operator moving the walker if vertices adjacent\n", + "@qfunc \n", + "def S_operator(vertices:QNum, adjacent_vertices: QNum):\n", + " res = QNum('res')\n", + " edge_oracle(res,vertices,adjacent_vertices)\n", + " control(ctrl= res==1,\n", + " operand= lambda: bitwise_swap(vertices,adjacent_vertices))\n" + ] + }, + { + "cell_type": "markdown", + "id": "9761696b-cefe-4ea0-9c91-ebd33af62e22", + "metadata": {}, + "source": [ + "## Circle-specific functions\n", + "\n", + "Here we have the function W_iteration with the probability of 0.5 going in either direction.\n", + "\n", + "What is special about a random walk on a circle is that the node (0) and the node (num_nodes-1) are adjacent. This fact is taken care of in the function edge_oracle." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "5ab73e30-56fd-4028-bb13-e2f883a4e3ae", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# non-zero probabilities for allowable transitions\n", + "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", + " prob = [0] * num_nodes\n", + " prob[(i+1)% num_nodes]=0.5\n", + " prob[(i-1)% num_nodes]=0.5\n", + " print(f'State={i}, prob vec ={prob}')\n", + " \n", + " control(ctrl=vertices==i,\n", + " operand=lambda: within_apply(\n", + " compute= lambda: \n", + " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", + " action= lambda: \n", + " zero_diffuzer(adjacent_vertices)))\n", + " \n", + "# Edge oracle for checking adjacency of two vertices \n", + "@qfunc\n", + "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", + " diff = vertices - adjacent_vertices\n", + " mod = diff%num_nodes\n", + " res |= (mod == 1) | (mod == num_nodes-1)\n" + ] + }, + { + "cell_type": "markdown", + "id": "423cf377-1bc7-4637-855c-b82ced39cca9", + "metadata": {}, + "source": [ + "## Circle with 4 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "e39e695c-cc7d-4983-ba7b-2d076262a66b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Circle with 4 Nodes \n", + "\n", + "# Size of the register required for the number of nodes\n", + "size = 2\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "a863aa31-dc65-4ad4-9985-4fca062ab269", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk operator function\n", + "# applies the W and S operators after initializing\n", + "# vertices\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "1427b784-9701-4338-aec2-5cb5566a6d32", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 0.5, 0, 0.5]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5]\n", + "State=3, prob vec =[0.5, 0, 0.5, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "22cec3d3-aef0-46c6-9de2-74ee40d81b96", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "write_qmod(qmod,\"random4\")" + ] + }, + { + "cell_type": "markdown", + "id": "0c9a5e9c-ed50-44d1-b9ed-665f96274a92", + "metadata": {}, + "source": [ + "## Circle with 8 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "a5063b48-425c-4d73-8d6e-8b575cc61be3", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Circle with 8 Nodes \n", + "\n", + "# Size of the register required for the number of nodes\n", + "size = 3\n", + "num_nodes = 8\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "d137cf61-e92b-46d4-870e-4d1fc021650c", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk operator function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "94168a88-cdb4-411c-a162-52adf0c622bb", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0.5]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=7, prob vec =[0.5, 0, 0, 0, 0, 0, 0.5, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "7458e3ac-0e87-49e2-9139-59ee31fc27f4", + "metadata": {}, + "source": [ + "## Circle with 16 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "7e7ad59c-80ca-4452-af10-883711c9b104", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Circle with 16 Nodes \n", + "\n", + "# Size of the register required for the number of nodes\n", + "size = 4\n", + "num_nodes = 16\n" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "d3444344-5117-4021-9d15-1476582bf61d", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "d30601d3-5b4f-4b23-af9d-f93d0a4f6777", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", + "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", + "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=15, prob vec =[0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "ccfdf941-9d91-402f-a200-ccc266f73e99", + "metadata": {}, + "source": [ + "## Line-specific functions\n", + "The function W_iteration defines the transition probabilities for a line. At the beginning and at the end of the line the walker can go only in one direction (probability = 1). For all other nodes the probability going in either direction is 0.5.\n", + "\n", + "Here the function edge_oracle just has to check whether the vertices are adjacent (distance = 1)." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "47e777d7-6527-4901-a034-951c624037e4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# non-zero probabilities for allowable probabilities\n", + "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", + " prob = [0] * (num_nodes)\n", + " if i == 0:\n", + " prob[i + 1] = 1.0\n", + " elif i == (num_nodes) -1:\n", + " prob[i - 1] = 1.0\n", + " else:\n", + " prob[i - 1] = 0.5\n", + " prob[i + 1] = 0.5\n", + " print(f'State={i}, prob vec ={prob}')\n", + " \n", + " control(ctrl=vertices==i,\n", + " operand=lambda: within_apply(\n", + " compute= lambda: \n", + " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", + " action= lambda: \n", + " zero_diffuzer(adjacent_vertices)))\n", + "\n", + "\n", + "# Edge oracle for checking adjacency of two vertices\n", + "@qfunc\n", + "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", + " diff = vertices - adjacent_vertices\n", + " res |= (diff == 1) | (diff == -1)\n" + ] + }, + { + "cell_type": "markdown", + "id": "07488d17-7cac-4e36-8335-e3303cff8efe", + "metadata": {}, + "source": [ + "## Line with 4 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "92d3f78c-ee23-45bf-acba-6d0ff0608847", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Line with 4 Nodes\n", + "\n", + "# Register size to accomodate the number of vertices\n", + "size = 2\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "613c61cc-10ea-4950-a262-3dd572c8701c", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "46fca7f3-3106-416d-a3f8-379f7095f8fa", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 1.0, 0, 0]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5]\n", + "State=3, prob vec =[0, 0, 1.0, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "9dd17d8c-83dd-463d-b155-9b8c949f97d1", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "write_qmod(qmod,\"random4\")" + ] + }, + { + "cell_type": "markdown", + "id": "cfbc239f-2bfb-496a-a752-1a84f657ac3f", + "metadata": {}, + "source": [ + "## Line with 8 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "08283335-a49f-4d6e-a702-fb76ab01724b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Line with 8 Nodes\n", + "\n", + "# Register size to accomodate the number of vertices\n", + "size = 3\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "07a57ceb-c1da-47d7-8d6b-45e18667d747", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "fb711141-eadd-4ac5-bb1d-fbd31bb71f8f", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 1.0, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "7b486184-7850-4c58-baac-9e89a942e059", + "metadata": { + "tags": [] + }, + "source": [ + "## Line with 16 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "52ccbff2-f15f-4fe2-86fd-6e1d0128f428", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Line with 16 Nodes\n", + "\n", + "# Register size to accomodate the number of vertices\n", + "size = 4\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "e773bbb1-e532-477e-8891-c47f8f4f1f8d", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "c3833a55-49af-4214-be22-5b52eaa22ba6", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", + "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", + "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=15, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "4b28d548-febf-43b3-9271-6cab28fd2cbb", + "metadata": {}, + "source": [ + "# Results" + ] + }, + { + "cell_type": "markdown", + "id": "b7d6c2a8-063f-4ffe-bf3c-18212aa1d57f", + "metadata": { + "jp-MarkdownHeadingCollapsed": true, + "tags": [] + }, + "source": [ + "## Number of qubits vs. nodes\n", + "\n", + "| random walk | num_nodes | transpiled qubits |\n", + "| :- | :-: | :-: |\n", + "| circle | 4 | 13 |\n", + "| circle | 8 | 22|\n", + "| circle | 16 | 33 |\n", + "| line | 4 | 17 |\n", + "| line | 8 | 25 |\n", + "| line | 16 | 37 |\n", + "\n", + "Here we see that the more nodes we have, the more transpiled qubits are going to be used. Lines need more qubits than circles." + ] + }, + { + "cell_type": "markdown", + "id": "2d8f26a8-18aa-4dda-a3ed-a3974e0184b9", + "metadata": {}, + "source": [ + "## Circle 4 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "335019e0-e185-41d5-b894-6116ada649d6", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('circle4.png')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "6bd34621-0458-4a1b-ac69-62892bcba54c", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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zWj37t2EQiFqa2t56KGHeOqppxgZGWHVqlX5c9xisRjJZNJ3J4tffHJ+Z2cnTz75ZP53yHYrtLW18dxzzzE+Pp4/ipZMJn0XAoXr43kee/fuZdmyZRhjuPPOO3nzzTfp6OggFouxevVqXnrpJaLRKK7r5mdc8evnk0gk+O///m8aGxtpbGxk06ZNPPHEE4yNjbF+/XpSqRTpdDq/rZXLAaj5oDCbgcLxV57nYa2lvr6eM2fOMD4+TltbG3fffTfvv/8+Dz/8MI7jcP78eV5++WVSqZSvdhhgUk0rk8kQCoW46667sNbS2NjICy+8QDwe56abbuLGG28kk8lw8OBBDh065LtAK+R5HqdOnaKqqoqqqio6OzupqanhN3/zNzlx4gQ33ngjzc3NZDIZXn31Vfr6/DcxZKFkMkl3dzcbN26kp6eHeDzO2rVrueOOO/jggw947LHHMMbQ39/Pq6++mp/9wm/b23xTM3OGck1NyIZAT08P0WiUxx57jNtvv50PPviAbdu28f777/PEE08QiURoaWkpcamnVth0huyRtIMHD7J582b27dtHPB7PDwd49tlneeGFF7j55pvznex+U7g+uSmHTpw4wUMPPcSjjz6aH+ycSCR44oknOHjwIDfffDPg3yZnYSB1dnayYMECvvOd77Bjxw7279/Ptm3beOedd/j5z39ObW0tixcvLmFpS0s1szmKx+M8//zzVFdXk0wmefTRR3njjTc4fvw4NTU11NfXMzo6WjbfkqdPn+bnP/851dXVtLa2sn79ep566inGx8fZtGkT4+PjZdGUyYXTO++8Q21tLalUiq1bt+bPEgBoa2vj9OnTpSzmtBljGB8f57nnniMWi5FKpXjsscd49dVX6ejoYMGCBfkplqZ7PdmgUc1sDnIBlU6nGRwcJBqNYq2lvb09P4L78OHDDA4OltXGdfbsWdrb21m5ciWffvop8XictrY2brvtNt54442yCLPC2ubQ0FB+Hfbv348xhltvvZWamhoOHTpU4pJOT277SSaT+W0tnU7T1dWVb0Lv378/EPOrzZZqZrN08fRDxhhGRkZIJBLcfffdtLS0cPTo0fxIbb+bqubY0dHBHXfcwaJFi2hububFF1/0ff9SoYvnumtvb+f2228nHA6TyWTYvXt32Ux8efE0PSMjI2QyGe6++26WLFnCwYMH+fjjj6d8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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('circle4hist.jpg')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "5216c457-12f6-451e-92a8-d43c5a15e98f", + "metadata": {}, + "source": [ + "## Line 8 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "c6ebdc89-ba16-41c4-b623-7862a0ae29af", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('line8.png')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "6dffee97-669a-4c03-a506-55c8ebbe0be1", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('line8hist.jpg')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "8cb5df08-342e-4cfd-b65e-42a8528b6969", + "metadata": {}, + "source": [ + "## Line 16 nodes\n", + "![alt text](line16.png)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "62827e5d-82f4-433e-80ea-7eecf1dedbfb", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('line16.png')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c2710a88-2fa4-456f-995b-faa3a499dc03", + "metadata": {}, + "outputs": [], + "source": [] } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('line8hist.jpg')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "8cb5df08-342e-4cfd-b65e-42a8528b6969", - "metadata": {}, - "source": [ - "## Line 16 nodes\n", - "![alt text](line16.png)" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "62827e5d-82f4-433e-80ea-7eecf1dedbfb", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 [Default]", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.9" } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('line16.png')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "a29b9882-972f-4f52-b4d2-0eb4d4ee866e", - "metadata": {}, - "source": [ - "eof" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 [Default]", - "language": "python", - "name": "python3" }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file From 273fb0f12fd25aef408637e973cddf1a540a2136 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Fri, 26 Jul 2024 21:20:28 +0200 Subject: [PATCH 65/83] Add files via upload --- community/womanium/assignments/hw4-5.ipynb | 974 +++++++++++++++++++++ 1 file changed, 974 insertions(+) create mode 100644 community/womanium/assignments/hw4-5.ipynb diff --git a/community/womanium/assignments/hw4-5.ipynb b/community/womanium/assignments/hw4-5.ipynb new file mode 100644 index 00000000..c1b26e85 --- /dev/null +++ b/community/womanium/assignments/hw4-5.ipynb @@ -0,0 +1,974 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "b7f74e3a-7dae-4939-a2ef-0ff82d8eadd0", + "metadata": {}, + "source": [ + "\n", + "# Assignment 6.12 - womanium 2024\n" + ] + }, + { + "cell_type": "markdown", + "id": "adc17ffc-b892-4a94-bebb-4ba74d208a9e", + "metadata": { + "tags": [] + }, + "source": [ + "## Advanced Algorithms Design:\n", + "## Quantum random walk" + ] + }, + { + "cell_type": "markdown", + "id": "2060a234-6a10-453e-b4a2-7b644128c3e9", + "metadata": { + "tags": [] + }, + "source": [ + "Following the example of a quantum walk operator for the case of a circle with 4 nodes, a quantum walk operator is designed for the case of a line with 16 nodes.\n", + "\n", + "Using the file quantum_walk_circle_example.py as a template, both the case of a circle and of a line with 4, 8, and 16 nodes are implemented in this notebook.\n" + ] + }, + { + "cell_type": "markdown", + "id": "fe7f2080-a6eb-4aa5-8865-97aa9acd5c14", + "metadata": {}, + "source": [ + "## Environment and imports" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "fd9eebc7-b78b-4aa7-8614-fbd7dc07f452", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", + "qiskit-ibm-runtime 0.25.0 requires pydantic>=2.5.0, but you have pydantic 1.10.17 which is incompatible.\n", + "qc-grader 0.19.7 requires networkx==3.2.1, but you have networkx 2.8.8 which is incompatible.\u001b[0m\u001b[31m\n", + "\u001b[0mNote: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install -U -q classiq" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "202628d6-3fe3-47fa-8a15-04b7fd9716f4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "from classiq import *" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "99432d7f-12fd-4a46-bbf0-cf3651c04076", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg" + ] + }, + { + "cell_type": "markdown", + "id": "59927721-34b7-49e8-8b88-6a75663aef7a", + "metadata": {}, + "source": [ + "## Implementation" + ] + }, + { + "cell_type": "markdown", + "id": "bbe3dfa3-2265-44af-b708-9a0ad189f5bf", + "metadata": {}, + "source": [ + "\n", + "## Common functions for circles or lines\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "425c8fd2-f8f5-409b-a569-d923819437c4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Prepares the minus state (aux qubit) for the diffuzer oracle\n", + "@qfunc\n", + "def prepare_minus(x: QBit):\n", + " X(x)\n", + " H(x)\n", + "\n", + "# x: current node\n", + "@qfunc\n", + "def diffuzer_oracle(aux: Output[QNum],x:QNum):\n", + " aux^=(x!=0)\n", + "\n", + "# Zero diffuser using Grover's algorithm technique\n", + "# x: current node \n", + "@qfunc\n", + "def zero_diffuzer(x: QNum):\n", + " aux = QNum('aux')\n", + " allocate(1,aux)\n", + " within_apply(compute=lambda: prepare_minus(aux),\n", + " action=lambda: diffuzer_oracle)\n", + "\n", + "# non-zero probabilities for allowable transitions\n", + "# @qfunc\n", + "# def W_iteration\n", + "\n", + "# Iterates over all possible positions and applies \n", + "# the W_iteration for each position.\n", + "@qfunc \n", + "def W_operator(vertices:QNum, adjacent_vertices: QNum):\n", + " for i in range(num_nodes):\n", + " W_iteration(i,vertices,adjacent_vertices)\n", + "\n", + "# Edge oracle for checking adjacency of 2 vertices\n", + "#\n", + "#@qfunc\n", + "#def edge_oracle\n", + "\n", + "# Swaps the contents of two quantum registers: moves the walker\n", + "@qfunc \n", + "def bitwise_swap(x: QArray[QBit], y:QArray[QBit]):\n", + " repeat(count= x.len,\n", + " iteration= lambda i: SWAP(x[i],y[i]))\n", + "\n", + "# shift operator moving the walker if vertices adjacent\n", + "@qfunc \n", + "def S_operator(vertices:QNum, adjacent_vertices: QNum):\n", + " res = QNum('res')\n", + " edge_oracle(res,vertices,adjacent_vertices)\n", + " control(ctrl= res==1,\n", + " operand= lambda: bitwise_swap(vertices,adjacent_vertices))\n" + ] + }, + { + "cell_type": "markdown", + "id": "9761696b-cefe-4ea0-9c91-ebd33af62e22", + "metadata": {}, + "source": [ + "## Circle-specific functions\n", + "\n", + "Here we have the function W_iteration with the probability of 0.5 going in either direction.\n", + "\n", + "What is special about a random walk on a circle is that the node (0) and the node (num_nodes-1) are adjacent. This fact is taken care of in the function edge_oracle." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "5ab73e30-56fd-4028-bb13-e2f883a4e3ae", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# non-zero probabilities for allowable transitions\n", + "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", + " prob = [0] * num_nodes\n", + " prob[(i+1)% num_nodes]=0.5\n", + " prob[(i-1)% num_nodes]=0.5\n", + " print(f'State={i}, prob vec ={prob}')\n", + " \n", + " control(ctrl=vertices==i,\n", + " operand=lambda: within_apply(\n", + " compute= lambda: \n", + " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", + " action= lambda: \n", + " zero_diffuzer(adjacent_vertices)))\n", + " \n", + "# Edge oracle for checking adjacency of two vertices \n", + "@qfunc\n", + "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", + " diff = vertices - adjacent_vertices\n", + " mod = diff%num_nodes\n", + " res |= (mod == 1) | (mod == num_nodes-1)\n" + ] + }, + { + "cell_type": "markdown", + "id": "423cf377-1bc7-4637-855c-b82ced39cca9", + "metadata": {}, + "source": [ + "## Circle with 4 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "e39e695c-cc7d-4983-ba7b-2d076262a66b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Circle with 4 Nodes \n", + "\n", + "# Size of the register required for the number of nodes\n", + "size = 2\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "a863aa31-dc65-4ad4-9985-4fca062ab269", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk operator function\n", + "# applies the W and S operators after initializing\n", + "# vertices\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "1427b784-9701-4338-aec2-5cb5566a6d32", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 0.5, 0, 0.5]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5]\n", + "State=3, prob vec =[0.5, 0, 0.5, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "22cec3d3-aef0-46c6-9de2-74ee40d81b96", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "write_qmod(qmod,\"random4\")" + ] + }, + { + "cell_type": "markdown", + "id": "0c9a5e9c-ed50-44d1-b9ed-665f96274a92", + "metadata": { + "tags": [] + }, + "source": [ + "## Circle with 8 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "a5063b48-425c-4d73-8d6e-8b575cc61be3", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Circle with 8 Nodes \n", + "\n", + "# Size of the register required for the number of nodes\n", + "size = 3\n", + "num_nodes = 8\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "d137cf61-e92b-46d4-870e-4d1fc021650c", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk operator function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "94168a88-cdb4-411c-a162-52adf0c622bb", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0.5]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=7, prob vec =[0.5, 0, 0, 0, 0, 0, 0.5, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "7458e3ac-0e87-49e2-9139-59ee31fc27f4", + "metadata": {}, + "source": [ + "## Circle with 16 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "7e7ad59c-80ca-4452-af10-883711c9b104", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Circle with 16 Nodes \n", + "\n", + "# Size of the register required for the number of nodes\n", + "size = 4\n", + "num_nodes = 16\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "d3444344-5117-4021-9d15-1476582bf61d", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "d30601d3-5b4f-4b23-af9d-f93d0a4f6777", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", + "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", + "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=15, prob vec =[0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "ccfdf941-9d91-402f-a200-ccc266f73e99", + "metadata": {}, + "source": [ + "## Line-specific functions\n", + "The function W_iteration defines the transition probabilities for a line. At the beginning and at the end of the line the walker can go only in one direction (probability = 1). For all other nodes the probability going in either direction is 0.5.\n", + "\n", + "Here the function edge_oracle just has to check whether the vertices are adjacent (distance = 1)." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "47e777d7-6527-4901-a034-951c624037e4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# non-zero probabilities for allowable probabilities\n", + "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", + " prob = [0] * (num_nodes)\n", + " if i == 0:\n", + " prob[i + 1] = 1.0\n", + " elif i == (num_nodes) -1:\n", + " prob[i - 1] = 1.0\n", + " else:\n", + " prob[i - 1] = 0.5\n", + " prob[i + 1] = 0.5\n", + " print(f'State={i}, prob vec ={prob}')\n", + " \n", + " control(ctrl=vertices==i,\n", + " operand=lambda: within_apply(\n", + " compute= lambda: \n", + " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", + " action= lambda: \n", + " zero_diffuzer(adjacent_vertices)))\n", + "\n", + "\n", + "# Edge oracle for checking adjacency of two vertices\n", + "@qfunc\n", + "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", + " diff = vertices - adjacent_vertices\n", + " res |= (diff == 1) | (diff == -1)\n" + ] + }, + { + "cell_type": "markdown", + "id": "07488d17-7cac-4e36-8335-e3303cff8efe", + "metadata": {}, + "source": [ + "## Line with 4 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "92d3f78c-ee23-45bf-acba-6d0ff0608847", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Line with 4 Nodes\n", + "\n", + "# Register size to accomodate the number of vertices\n", + "size = 2\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "613c61cc-10ea-4950-a262-3dd572c8701c", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "46fca7f3-3106-416d-a3f8-379f7095f8fa", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 1.0, 0, 0]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5]\n", + "State=3, prob vec =[0, 0, 1.0, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "9dd17d8c-83dd-463d-b155-9b8c949f97d1", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "write_qmod(qmod,\"random4\")" + ] + }, + { + "cell_type": "markdown", + "id": "cfbc239f-2bfb-496a-a752-1a84f657ac3f", + "metadata": { + "tags": [] + }, + "source": [ + "## Line with 8 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "08283335-a49f-4d6e-a702-fb76ab01724b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Line with 8 Nodes\n", + "\n", + "# Register size to accomodate the number of vertices\n", + "size = 3\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "07a57ceb-c1da-47d7-8d6b-45e18667d747", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "fb711141-eadd-4ac5-bb1d-fbd31bb71f8f", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 1.0, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "7b486184-7850-4c58-baac-9e89a942e059", + "metadata": { + "tags": [] + }, + "source": [ + "## Line with 16 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "52ccbff2-f15f-4fe2-86fd-6e1d0128f428", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Line with 16 Nodes\n", + "\n", + "# Register size to accomodate the number of vertices\n", + "size = 4\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "e773bbb1-e532-477e-8891-c47f8f4f1f8d", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "c3833a55-49af-4214-be22-5b52eaa22ba6", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", + "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", + "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=15, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "4b28d548-febf-43b3-9271-6cab28fd2cbb", + "metadata": {}, + "source": [ + "# Results" + ] + }, + { + "cell_type": "markdown", + "id": "b7d6c2a8-063f-4ffe-bf3c-18212aa1d57f", + "metadata": { + "jp-MarkdownHeadingCollapsed": true, + "tags": [] + }, + "source": [ + "## Number of qubits vs. nodes\n", + "\n", + "| random walk | num_nodes | transpiled qubits |\n", + "| :- | :-: | :-: |\n", + "| circle | 4 | 13 |\n", + "| circle | 8 | 22|\n", + "| circle | 16 | 33 |\n", + "| line | 4 | 17 |\n", + "| line | 8 | 25 |\n", + "| line | 16 | 37 |\n", + "\n", + "Here we see that the more nodes we have, the more transpiled qubits are going to be used. Lines need more qubits than circles." + ] + }, + { + "cell_type": "markdown", + "id": "2d8f26a8-18aa-4dda-a3ed-a3974e0184b9", + "metadata": {}, + "source": [ + "## Circle 4 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "335019e0-e185-41d5-b894-6116ada649d6", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('circle4.png')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "6bd34621-0458-4a1b-ac69-62892bcba54c", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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zWj37t2EQiFqa2t56KGHeOqppxgZGWHVqlX5c9xisRjJZNJ3J4tffHJ+Z2cnTz75ZP53yHYrtLW18dxzzzE+Pp4/ipZMJn0XAoXr43kee/fuZdmyZRhjuPPOO3nzzTfp6OggFouxevVqXnrpJaLRKK7r5mdc8evnk0gk+O///m8aGxtpbGxk06ZNPPHEE4yNjbF+/XpSqRTpdDq/rZXLAaj5oDCbgcLxV57nYa2lvr6eM2fOMD4+TltbG3fffTfvv/8+Dz/8MI7jcP78eV5++WVSqZSvdhhgUk0rk8kQCoW46667sNbS2NjICy+8QDwe56abbuLGG28kk8lw8OBBDh065LtAK+R5HqdOnaKqqoqqqio6OzupqanhN3/zNzlx4gQ33ngjzc3NZDIZXn31Vfr6/DcxZKFkMkl3dzcbN26kp6eHeDzO2rVrueOOO/jggw947LHHMMbQ39/Pq6++mp/9wm/b23xTM3OGck1NyIZAT08P0WiUxx57jNtvv50PPviAbdu28f777/PEE08QiURoaWkpcamnVth0huyRtIMHD7J582b27dtHPB7PDwd49tlneeGFF7j55pvznex+U7g+uSmHTpw4wUMPPcSjjz6aH+ycSCR44oknOHjwIDfffDPg3yZnYSB1dnayYMECvvOd77Bjxw7279/Ptm3beOedd/j5z39ObW0tixcvLmFpS0s1szmKx+M8//zzVFdXk0wmefTRR3njjTc4fvw4NTU11NfXMzo6WjbfkqdPn+bnP/851dXVtLa2sn79ep566inGx8fZtGkT4+PjZdGUyYXTO++8Q21tLalUiq1bt+bPEgBoa2vj9OnTpSzmtBljGB8f57nnniMWi5FKpXjsscd49dVX6ejoYMGCBfkplqZ7PdmgUc1sDnIBlU6nGRwcJBqNYq2lvb09P4L78OHDDA4OltXGdfbsWdrb21m5ciWffvop8XictrY2brvtNt54442yCLPC2ubQ0FB+Hfbv348xhltvvZWamhoOHTpU4pJOT277SSaT+W0tnU7T1dWVb0Lv378/EPOrzZZqZrN08fRDxhhGRkZIJBLcfffdtLS0cPTo0fxIbb+bqubY0dHBHXfcwaJFi2hububFF1/0ff9SoYvnumtvb+f2228nHA6TyWTYvXt32Ux8efE0PSMjI2QyGe6++26WLFnCwYMH+fjjj6d8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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('circle4hist.jpg')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "5216c457-12f6-451e-92a8-d43c5a15e98f", + "metadata": {}, + "source": [ + "## Line 8 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "c6ebdc89-ba16-41c4-b623-7862a0ae29af", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('line8.png')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "6dffee97-669a-4c03-a506-55c8ebbe0be1", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('line8hist.jpg')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "8cb5df08-342e-4cfd-b65e-42a8528b6969", + "metadata": {}, + "source": [ + "## Line 16 nodes\n", + "![alt text](line16.png)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "62827e5d-82f4-433e-80ea-7eecf1dedbfb", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('line16.png')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "a29b9882-972f-4f52-b4d2-0eb4d4ee866e", + "metadata": {}, + "source": [ + "eof" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 [Default]", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From aedf4b9ad46865405355fd3bae36c4014c1261f5 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Fri, 26 Jul 2024 21:31:07 +0200 Subject: [PATCH 66/83] Add files via upload --- community/womanium/assignments/hw4-5-1.ipynb | 979 +++++++++++++++++++ 1 file changed, 979 insertions(+) create mode 100644 community/womanium/assignments/hw4-5-1.ipynb diff --git a/community/womanium/assignments/hw4-5-1.ipynb b/community/womanium/assignments/hw4-5-1.ipynb new file mode 100644 index 00000000..1d455d23 --- /dev/null +++ b/community/womanium/assignments/hw4-5-1.ipynb @@ -0,0 +1,979 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "b7f74e3a-7dae-4939-a2ef-0ff82d8eadd0", + "metadata": {}, + "source": [ + "\n", + "# Assignment 6.12 - womanium 2024\n" + ] + }, + { + "cell_type": "markdown", + "id": "adc17ffc-b892-4a94-bebb-4ba74d208a9e", + "metadata": { + "tags": [] + }, + "source": [ + "## Advanced Algorithms Design:\n", + "## Quantum random walk" + ] + }, + { + "cell_type": "markdown", + "id": "2060a234-6a10-453e-b4a2-7b644128c3e9", + "metadata": { + "tags": [] + }, + "source": [ + "Following the example of a quantum walk operator for \n", + "the case of a circle with 4 nodes, a quantum walk \n", + "operator is designed for the case of a line with 16 \n", + "nodes.\n", + "\n", + "Using the file quantum_walk_circle_example.py as a \n", + "template, both the case of a circle and of a line with \n", + "4, 8, and 16 nodes are implemented in this notebook.\n" + ] + }, + { + "cell_type": "markdown", + "id": "fe7f2080-a6eb-4aa5-8865-97aa9acd5c14", + "metadata": {}, + "source": [ + "## Environment and imports" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "fd9eebc7-b78b-4aa7-8614-fbd7dc07f452", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", + "qiskit-ibm-runtime 0.25.0 requires pydantic>=2.5.0, but you have pydantic 1.10.17 which is incompatible.\n", + "qc-grader 0.19.7 requires networkx==3.2.1, but you have networkx 2.8.8 which is incompatible.\u001b[0m\u001b[31m\n", + "\u001b[0mNote: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install -U -q classiq" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "202628d6-3fe3-47fa-8a15-04b7fd9716f4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "from classiq import *" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "99432d7f-12fd-4a46-bbf0-cf3651c04076", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg" + ] + }, + { + "cell_type": "markdown", + "id": "59927721-34b7-49e8-8b88-6a75663aef7a", + "metadata": {}, + "source": [ + "## Implementation" + ] + }, + { + "cell_type": "markdown", + "id": "bbe3dfa3-2265-44af-b708-9a0ad189f5bf", + "metadata": {}, + "source": [ + "\n", + "## Common functions for circles or lines\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "425c8fd2-f8f5-409b-a569-d923819437c4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Prepares the minus state (aux qubit) for the diffuzer oracle\n", + "@qfunc\n", + "def prepare_minus(x: QBit):\n", + " X(x)\n", + " H(x)\n", + "\n", + "# x: current node\n", + "@qfunc\n", + "def diffuzer_oracle(aux: Output[QNum],x:QNum):\n", + " aux^=(x!=0)\n", + "\n", + "# Zero diffuser using Grover's algorithm technique\n", + "# x: current node \n", + "@qfunc\n", + "def zero_diffuzer(x: QNum):\n", + " aux = QNum('aux')\n", + " allocate(1,aux)\n", + " within_apply(compute=lambda: prepare_minus(aux),\n", + " action=lambda: diffuzer_oracle)\n", + "\n", + "# non-zero probabilities for allowable transitions\n", + "# @qfunc\n", + "# def W_iteration\n", + "\n", + "# Iterates over all possible positions and applies \n", + "# the W_iteration for each position.\n", + "@qfunc \n", + "def W_operator(vertices:QNum, adjacent_vertices: QNum):\n", + " for i in range(num_nodes):\n", + " W_iteration(i,vertices,adjacent_vertices)\n", + "\n", + "# Edge oracle for checking adjacency of 2 vertices\n", + "#\n", + "#@qfunc\n", + "#def edge_oracle\n", + "\n", + "# Swaps the contents of two quantum registers: moves the walker\n", + "@qfunc \n", + "def bitwise_swap(x: QArray[QBit], y:QArray[QBit]):\n", + " repeat(count= x.len,\n", + " iteration= lambda i: SWAP(x[i],y[i]))\n", + "\n", + "# shift operator moving the walker if vertices adjacent\n", + "@qfunc \n", + "def S_operator(vertices:QNum, adjacent_vertices: QNum):\n", + " res = QNum('res')\n", + " edge_oracle(res,vertices,adjacent_vertices)\n", + " control(ctrl= res==1,\n", + " operand= lambda: bitwise_swap(vertices,adjacent_vertices))\n" + ] + }, + { + "cell_type": "markdown", + "id": "9761696b-cefe-4ea0-9c91-ebd33af62e22", + "metadata": {}, + "source": [ + "## Circle-specific functions\n", + "\n", + "Here we have the function W_iteration with the probability of 0.5 going in either direction.\n", + "\n", + "What is special about a random walk on a circle is that the node (0) and the node (num_nodes-1) are adjacent. This fact is taken care of in the function edge_oracle." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "5ab73e30-56fd-4028-bb13-e2f883a4e3ae", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# non-zero probabilities for allowable transitions\n", + "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", + " prob = [0] * num_nodes\n", + " prob[(i+1)% num_nodes]=0.5\n", + " prob[(i-1)% num_nodes]=0.5\n", + " print(f'State={i}, prob vec ={prob}')\n", + " \n", + " control(ctrl=vertices==i,\n", + " operand=lambda: within_apply(\n", + " compute= lambda: \n", + " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", + " action= lambda: \n", + " zero_diffuzer(adjacent_vertices)))\n", + " \n", + "# Edge oracle for checking adjacency of two vertices \n", + "@qfunc\n", + "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", + " diff = vertices - adjacent_vertices\n", + " mod = diff%num_nodes\n", + " res |= (mod == 1) | (mod == num_nodes-1)\n" + ] + }, + { + "cell_type": "markdown", + "id": "423cf377-1bc7-4637-855c-b82ced39cca9", + "metadata": {}, + "source": [ + "## Circle with 4 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "e39e695c-cc7d-4983-ba7b-2d076262a66b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Circle with 4 Nodes \n", + "\n", + "# Size of the register required for the number of nodes\n", + "size = 2\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "a863aa31-dc65-4ad4-9985-4fca062ab269", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk operator function\n", + "# applies the W and S operators after initializing\n", + "# vertices\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "1427b784-9701-4338-aec2-5cb5566a6d32", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 0.5, 0, 0.5]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5]\n", + "State=3, prob vec =[0.5, 0, 0.5, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "22cec3d3-aef0-46c6-9de2-74ee40d81b96", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "write_qmod(qmod,\"random4\")" + ] + }, + { + "cell_type": "markdown", + "id": "0c9a5e9c-ed50-44d1-b9ed-665f96274a92", + "metadata": { + "tags": [] + }, + "source": [ + "## Circle with 8 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "a5063b48-425c-4d73-8d6e-8b575cc61be3", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Circle with 8 Nodes \n", + "\n", + "# Size of the register required for the number of nodes\n", + "size = 3\n", + "num_nodes = 8\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "d137cf61-e92b-46d4-870e-4d1fc021650c", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk operator function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "94168a88-cdb4-411c-a162-52adf0c622bb", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0.5]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=7, prob vec =[0.5, 0, 0, 0, 0, 0, 0.5, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "7458e3ac-0e87-49e2-9139-59ee31fc27f4", + "metadata": {}, + "source": [ + "## Circle with 16 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "7e7ad59c-80ca-4452-af10-883711c9b104", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Circle with 16 Nodes \n", + "\n", + "# Size of the register required for the number of nodes\n", + "size = 4\n", + "num_nodes = 16\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "d3444344-5117-4021-9d15-1476582bf61d", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "d30601d3-5b4f-4b23-af9d-f93d0a4f6777", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", + "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", + "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=15, prob vec =[0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "ccfdf941-9d91-402f-a200-ccc266f73e99", + "metadata": {}, + "source": [ + "## Line-specific functions\n", + "The function W_iteration defines the transition probabilities for a line. At the beginning and at the end of the line the walker can go only in one direction (probability = 1). For all other nodes the probability going in either direction is 0.5.\n", + "\n", + "Here the function edge_oracle just has to check whether the vertices are adjacent (distance = 1)." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "47e777d7-6527-4901-a034-951c624037e4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# non-zero probabilities for allowable probabilities\n", + "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", + " prob = [0] * (num_nodes)\n", + " if i == 0:\n", + " prob[i + 1] = 1.0\n", + " elif i == (num_nodes) -1:\n", + " prob[i - 1] = 1.0\n", + " else:\n", + " prob[i - 1] = 0.5\n", + " prob[i + 1] = 0.5\n", + " print(f'State={i}, prob vec ={prob}')\n", + " \n", + " control(ctrl=vertices==i,\n", + " operand=lambda: within_apply(\n", + " compute= lambda: \n", + " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", + " action= lambda: \n", + " zero_diffuzer(adjacent_vertices)))\n", + "\n", + "\n", + "# Edge oracle for checking adjacency of two vertices\n", + "@qfunc\n", + "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", + " diff = vertices - adjacent_vertices\n", + " res |= (diff == 1) | (diff == -1)\n" + ] + }, + { + "cell_type": "markdown", + "id": "07488d17-7cac-4e36-8335-e3303cff8efe", + "metadata": {}, + "source": [ + "## Line with 4 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "92d3f78c-ee23-45bf-acba-6d0ff0608847", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Line with 4 Nodes\n", + "\n", + "# Register size to accomodate the number of vertices\n", + "size = 2\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "613c61cc-10ea-4950-a262-3dd572c8701c", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "46fca7f3-3106-416d-a3f8-379f7095f8fa", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 1.0, 0, 0]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5]\n", + "State=3, prob vec =[0, 0, 1.0, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "9dd17d8c-83dd-463d-b155-9b8c949f97d1", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "write_qmod(qmod,\"random4\")" + ] + }, + { + "cell_type": "markdown", + "id": "cfbc239f-2bfb-496a-a752-1a84f657ac3f", + "metadata": { + "tags": [] + }, + "source": [ + "## Line with 8 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "08283335-a49f-4d6e-a702-fb76ab01724b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Line with 8 Nodes\n", + "\n", + "# Register size to accomodate the number of vertices\n", + "size = 3\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "07a57ceb-c1da-47d7-8d6b-45e18667d747", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "fb711141-eadd-4ac5-bb1d-fbd31bb71f8f", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 1.0, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "7b486184-7850-4c58-baac-9e89a942e059", + "metadata": { + "tags": [] + }, + "source": [ + "## Line with 16 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "52ccbff2-f15f-4fe2-86fd-6e1d0128f428", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Line with 16 Nodes\n", + "\n", + "# Register size to accomodate the number of vertices\n", + "size = 4\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "e773bbb1-e532-477e-8891-c47f8f4f1f8d", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "c3833a55-49af-4214-be22-5b52eaa22ba6", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", + "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", + "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=15, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "4b28d548-febf-43b3-9271-6cab28fd2cbb", + "metadata": {}, + "source": [ + "# Results" + ] + }, + { + "cell_type": "markdown", + "id": "b7d6c2a8-063f-4ffe-bf3c-18212aa1d57f", + "metadata": { + "jp-MarkdownHeadingCollapsed": true, + "tags": [] + }, + "source": [ + "## Number of qubits vs. nodes\n", + "\n", + "| random walk | num_nodes | transpiled qubits |\n", + "| :- | :-: | :-: |\n", + "| circle | 4 | 13 |\n", + "| circle | 8 | 22|\n", + "| circle | 16 | 33 |\n", + "| line | 4 | 17 |\n", + "| line | 8 | 25 |\n", + "| line | 16 | 37 |\n", + "\n", + "Here we see that the more nodes we have, the more transpiled qubits are going to be used. Lines need more qubits than circles." + ] + }, + { + "cell_type": "markdown", + "id": "2d8f26a8-18aa-4dda-a3ed-a3974e0184b9", + "metadata": {}, + "source": [ + "## Circle 4 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "335019e0-e185-41d5-b894-6116ada649d6", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('circle4.png')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "6bd34621-0458-4a1b-ac69-62892bcba54c", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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zWj37t2EQiFqa2t56KGHeOqppxgZGWHVqlX5c9xisRjJZNJ3J4tffHJ+Z2cnTz75ZP53yHYrtLW18dxzzzE+Pp4/ipZMJn0XAoXr43kee/fuZdmyZRhjuPPOO3nzzTfp6OggFouxevVqXnrpJaLRKK7r5mdc8evnk0gk+O///m8aGxtpbGxk06ZNPPHEE4yNjbF+/XpSqRTpdDq/rZXLAaj5oDCbgcLxV57nYa2lvr6eM2fOMD4+TltbG3fffTfvv/8+Dz/8MI7jcP78eV5++WVSqZSvdhhgUk0rk8kQCoW46667sNbS2NjICy+8QDwe56abbuLGG28kk8lw8OBBDh065LtAK+R5HqdOnaKqqoqqqio6OzupqanhN3/zNzlx4gQ33ngjzc3NZDIZXn31Vfr6/DcxZKFkMkl3dzcbN26kp6eHeDzO2rVrueOOO/jggw947LHHMMbQ39/Pq6++mp/9wm/b23xTM3OGck1NyIZAT08P0WiUxx57jNtvv50PPviAbdu28f777/PEE08QiURoaWkpcamnVth0huyRtIMHD7J582b27dtHPB7PDwd49tlneeGFF7j55pvznex+U7g+uSmHTpw4wUMPPcSjjz6aH+ycSCR44oknOHjwIDfffDPg3yZnYSB1dnayYMECvvOd77Bjxw7279/Ptm3beOedd/j5z39ObW0tixcvLmFpS0s1szmKx+M8//zzVFdXk0wmefTRR3njjTc4fvw4NTU11NfXMzo6WjbfkqdPn+bnP/851dXVtLa2sn79ep566inGx8fZtGkT4+PjZdGUyYXTO++8Q21tLalUiq1bt+bPEgBoa2vj9OnTpSzmtBljGB8f57nnniMWi5FKpXjsscd49dVX6ejoYMGCBfkplqZ7PdmgUc1sDnIBlU6nGRwcJBqNYq2lvb09P4L78OHDDA4OltXGdfbsWdrb21m5ciWffvop8XictrY2brvtNt54442yCLPC2ubQ0FB+Hfbv348xhltvvZWamhoOHTpU4pJOT277SSaT+W0tnU7T1dWVb0Lv378/EPOrzZZqZrN08fRDxhhGRkZIJBLcfffdtLS0cPTo0fxIbb+bqubY0dHBHXfcwaJFi2hububFF1/0ff9SoYvnumtvb+f2228nHA6TyWTYvXt32Ux8efE0PSMjI2QyGe6++26WLFnCwYMH+fjjj6d8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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('circle4hist.jpg')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "5216c457-12f6-451e-92a8-d43c5a15e98f", + "metadata": {}, + "source": [ + "## Line 8 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "c6ebdc89-ba16-41c4-b623-7862a0ae29af", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('line8.png')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "6dffee97-669a-4c03-a506-55c8ebbe0be1", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('line8hist.jpg')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "8cb5df08-342e-4cfd-b65e-42a8528b6969", + "metadata": {}, + "source": [ + "## Line 16 nodes\n", + "![alt text](line16.png)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "62827e5d-82f4-433e-80ea-7eecf1dedbfb", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('line16.png')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "a29b9882-972f-4f52-b4d2-0eb4d4ee866e", + "metadata": {}, + "source": [ + "eof" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 [Default]", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 9f707817494a18656099ea465d62b0f581c791fc Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Fri, 26 Jul 2024 21:36:54 +0200 Subject: [PATCH 67/83] Add files via upload --- community/womanium/assignments/hw4-5-2.ipynb | 989 +++++++++++++++++++ 1 file changed, 989 insertions(+) create mode 100644 community/womanium/assignments/hw4-5-2.ipynb diff --git a/community/womanium/assignments/hw4-5-2.ipynb b/community/womanium/assignments/hw4-5-2.ipynb new file mode 100644 index 00000000..50400e74 --- /dev/null +++ b/community/womanium/assignments/hw4-5-2.ipynb @@ -0,0 +1,989 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "b7f74e3a-7dae-4939-a2ef-0ff82d8eadd0", + "metadata": {}, + "source": [ + "\n", + "# Assignment 6.12 - womanium 2024\n" + ] + }, + { + "cell_type": "markdown", + "id": "adc17ffc-b892-4a94-bebb-4ba74d208a9e", + "metadata": { + "tags": [] + }, + "source": [ + "## Advanced Algorithms Design:\n", + "## Quantum random walk" + ] + }, + { + "cell_type": "markdown", + "id": "2060a234-6a10-453e-b4a2-7b644128c3e9", + "metadata": { + "tags": [] + }, + "source": [ + "Following the example of a quantum walk operator for \n", + "the case of a circle with 4 nodes, a quantum walk \n", + "operator is designed for the case of a line with 16 \n", + "nodes.\n", + "\n", + "Using the file quantum_walk_circle_example.py as a \n", + "template, both the case of a circle and of a line with \n", + "4, 8, and 16 nodes are implemented in this notebook.\n" + ] + }, + { + "cell_type": "markdown", + "id": "fe7f2080-a6eb-4aa5-8865-97aa9acd5c14", + "metadata": {}, + "source": [ + "## Environment and imports" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "fd9eebc7-b78b-4aa7-8614-fbd7dc07f452", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", + "qiskit-ibm-runtime 0.25.0 requires pydantic>=2.5.0, but you have pydantic 1.10.17 which is incompatible.\n", + "qc-grader 0.19.7 requires networkx==3.2.1, but you have networkx 2.8.8 which is incompatible.\u001b[0m\u001b[31m\n", + "\u001b[0mNote: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install -U -q classiq" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "202628d6-3fe3-47fa-8a15-04b7fd9716f4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "from classiq import *" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "99432d7f-12fd-4a46-bbf0-cf3651c04076", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg" + ] + }, + { + "cell_type": "markdown", + "id": "59927721-34b7-49e8-8b88-6a75663aef7a", + "metadata": {}, + "source": [ + "## Implementation" + ] + }, + { + "cell_type": "markdown", + "id": "bbe3dfa3-2265-44af-b708-9a0ad189f5bf", + "metadata": {}, + "source": [ + "\n", + "## Common functions for circles or lines\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "425c8fd2-f8f5-409b-a569-d923819437c4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Prepares the minus state (aux qubit) for the diffuzer oracle\n", + "@qfunc\n", + "def prepare_minus(x: QBit):\n", + " X(x)\n", + " H(x)\n", + "\n", + "# x: current node\n", + "@qfunc\n", + "def diffuzer_oracle(aux: Output[QNum],x:QNum):\n", + " aux^=(x!=0)\n", + "\n", + "# Zero diffuser using Grover's algorithm technique\n", + "# x: current node \n", + "@qfunc\n", + "def zero_diffuzer(x: QNum):\n", + " aux = QNum('aux')\n", + " allocate(1,aux)\n", + " within_apply(compute=lambda: prepare_minus(aux),\n", + " action=lambda: diffuzer_oracle)\n", + "\n", + "# non-zero probabilities for allowable transitions\n", + "# @qfunc\n", + "# def W_iteration\n", + "\n", + "# Iterates over all possible positions and applies \n", + "# the W_iteration for each position.\n", + "@qfunc \n", + "def W_operator(vertices:QNum, adjacent_vertices: QNum):\n", + " for i in range(num_nodes):\n", + " W_iteration(i,vertices,adjacent_vertices)\n", + "\n", + "# Edge oracle for checking adjacency of 2 vertices\n", + "#\n", + "#@qfunc\n", + "#def edge_oracle\n", + "\n", + "# Swaps the contents of two quantum registers: moves the walker\n", + "@qfunc \n", + "def bitwise_swap(x: QArray[QBit], y:QArray[QBit]):\n", + " repeat(count= x.len,\n", + " iteration= lambda i: SWAP(x[i],y[i]))\n", + "\n", + "# shift operator moving the walker if vertices adjacent\n", + "@qfunc \n", + "def S_operator(vertices:QNum, adjacent_vertices: QNum):\n", + " res = QNum('res')\n", + " edge_oracle(res,vertices,adjacent_vertices)\n", + " control(ctrl= res==1,\n", + " operand= lambda: bitwise_swap(vertices,adjacent_vertices))\n" + ] + }, + { + "cell_type": "markdown", + "id": "9761696b-cefe-4ea0-9c91-ebd33af62e22", + "metadata": {}, + "source": [ + "## Circle-specific functions\n", + "\n", + "Here we have the function W_iteration with the \n", + "probability of 0.5 going in either direction.\n", + "\n", + "What is special about a random walk on a circle is that \n", + "the node (0) and the node (num_nodes-1) are adjacent. \n", + "This fact is taken care of in the function edge_oracle." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "5ab73e30-56fd-4028-bb13-e2f883a4e3ae", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# non-zero probabilities for allowable transitions\n", + "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", + " prob = [0] * num_nodes\n", + " prob[(i+1)% num_nodes]=0.5\n", + " prob[(i-1)% num_nodes]=0.5\n", + " print(f'State={i}, prob vec ={prob}')\n", + " \n", + " control(ctrl=vertices==i,\n", + " operand=lambda: within_apply(\n", + " compute= lambda: \n", + " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", + " action= lambda: \n", + " zero_diffuzer(adjacent_vertices)))\n", + " \n", + "# Edge oracle for checking adjacency of two vertices \n", + "@qfunc\n", + "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", + " diff = vertices - adjacent_vertices\n", + " mod = diff%num_nodes\n", + " res |= (mod == 1) | (mod == num_nodes-1)\n" + ] + }, + { + "cell_type": "markdown", + "id": "423cf377-1bc7-4637-855c-b82ced39cca9", + "metadata": {}, + "source": [ + "## Circle with 4 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "e39e695c-cc7d-4983-ba7b-2d076262a66b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Circle with 4 Nodes \n", + "\n", + "# Size of the register required for the number of nodes\n", + "size = 2\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "a863aa31-dc65-4ad4-9985-4fca062ab269", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk operator function\n", + "# applies the W and S operators after initializing\n", + "# vertices\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "1427b784-9701-4338-aec2-5cb5566a6d32", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 0.5, 0, 0.5]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5]\n", + "State=3, prob vec =[0.5, 0, 0.5, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "22cec3d3-aef0-46c6-9de2-74ee40d81b96", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "write_qmod(qmod,\"random4\")" + ] + }, + { + "cell_type": "markdown", + "id": "0c9a5e9c-ed50-44d1-b9ed-665f96274a92", + "metadata": { + "tags": [] + }, + "source": [ + "## Circle with 8 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "a5063b48-425c-4d73-8d6e-8b575cc61be3", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Circle with 8 Nodes \n", + "\n", + "# Size of the register required for the number of nodes\n", + "size = 3\n", + "num_nodes = 8\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "d137cf61-e92b-46d4-870e-4d1fc021650c", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk operator function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "94168a88-cdb4-411c-a162-52adf0c622bb", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0.5]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=7, prob vec =[0.5, 0, 0, 0, 0, 0, 0.5, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "7458e3ac-0e87-49e2-9139-59ee31fc27f4", + "metadata": {}, + "source": [ + "## Circle with 16 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "7e7ad59c-80ca-4452-af10-883711c9b104", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Circle with 16 Nodes \n", + "\n", + "# Size of the register required for the number of nodes\n", + "size = 4\n", + "num_nodes = 16\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "d3444344-5117-4021-9d15-1476582bf61d", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "d30601d3-5b4f-4b23-af9d-f93d0a4f6777", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", + "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", + "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=15, prob vec =[0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "ccfdf941-9d91-402f-a200-ccc266f73e99", + "metadata": {}, + "source": [ + "## Line-specific functions\n", + "The function W_iteration defines the transition \n", + "probabilities for a line. At the beginning and at the \n", + "end of the line the walker can go only in one direction \n", + "(probability = 1). For all other nodes the probability \n", + "going in either direction is 0.5.\n", + "\n", + "Here the function edge_oracle just has to check whether \n", + "the vertices are adjacent (distance = 1)." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "47e777d7-6527-4901-a034-951c624037e4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# non-zero probabilities for allowable probabilities\n", + "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", + " prob = [0] * (num_nodes)\n", + " if i == 0:\n", + " prob[i + 1] = 1.0\n", + " elif i == (num_nodes) -1:\n", + " prob[i - 1] = 1.0\n", + " else:\n", + " prob[i - 1] = 0.5\n", + " prob[i + 1] = 0.5\n", + " print(f'State={i}, prob vec ={prob}')\n", + " \n", + " control(ctrl=vertices==i,\n", + " operand=lambda: within_apply(\n", + " compute= lambda: \n", + " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", + " action= lambda: \n", + " zero_diffuzer(adjacent_vertices)))\n", + "\n", + "\n", + "# Edge oracle for checking adjacency of two vertices\n", + "@qfunc\n", + "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", + " diff = vertices - adjacent_vertices\n", + " res |= (diff == 1) | (diff == -1)\n" + ] + }, + { + "cell_type": "markdown", + "id": "07488d17-7cac-4e36-8335-e3303cff8efe", + "metadata": {}, + "source": [ + "## Line with 4 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "92d3f78c-ee23-45bf-acba-6d0ff0608847", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Line with 4 Nodes\n", + "\n", + "# Register size to accomodate the number of vertices\n", + "size = 2\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "613c61cc-10ea-4950-a262-3dd572c8701c", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "46fca7f3-3106-416d-a3f8-379f7095f8fa", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 1.0, 0, 0]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5]\n", + "State=3, prob vec =[0, 0, 1.0, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "9dd17d8c-83dd-463d-b155-9b8c949f97d1", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "write_qmod(qmod,\"random4\")" + ] + }, + { + "cell_type": "markdown", + "id": "cfbc239f-2bfb-496a-a752-1a84f657ac3f", + "metadata": { + "tags": [] + }, + "source": [ + "## Line with 8 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "08283335-a49f-4d6e-a702-fb76ab01724b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Line with 8 Nodes\n", + "\n", + "# Register size to accomodate the number of vertices\n", + "size = 3\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "07a57ceb-c1da-47d7-8d6b-45e18667d747", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "fb711141-eadd-4ac5-bb1d-fbd31bb71f8f", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 1.0, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "7b486184-7850-4c58-baac-9e89a942e059", + "metadata": { + "tags": [] + }, + "source": [ + "## Line with 16 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "52ccbff2-f15f-4fe2-86fd-6e1d0128f428", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Line with 16 Nodes\n", + "\n", + "# Register size to accomodate the number of vertices\n", + "size = 4\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "e773bbb1-e532-477e-8891-c47f8f4f1f8d", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "c3833a55-49af-4214-be22-5b52eaa22ba6", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", + "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", + "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=15, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "4b28d548-febf-43b3-9271-6cab28fd2cbb", + "metadata": {}, + "source": [ + "# Results" + ] + }, + { + "cell_type": "markdown", + "id": "b7d6c2a8-063f-4ffe-bf3c-18212aa1d57f", + "metadata": { + "jp-MarkdownHeadingCollapsed": true, + "tags": [] + }, + "source": [ + "## Number of qubits vs. nodes\n", + "\n", + "| random walk | num_nodes | transpiled qubits |\n", + "| :- | :-: | :-: |\n", + "| circle | 4 | 13 |\n", + "| circle | 8 | 22|\n", + "| circle | 16 | 33 |\n", + "| line | 4 | 17 |\n", + "| line | 8 | 25 |\n", + "| line | 16 | 37 |\n", + "\n", + "Here we see that the more nodes we have, the more \n", + "transpiled qubits are going to be used. Lines need more \n", + "qubits than circles." + ] + }, + { + "cell_type": "markdown", + "id": "2d8f26a8-18aa-4dda-a3ed-a3974e0184b9", + "metadata": {}, + "source": [ + "## Circle 4 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "335019e0-e185-41d5-b894-6116ada649d6", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('circle4.png')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "6bd34621-0458-4a1b-ac69-62892bcba54c", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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zWj37t2EQiFqa2t56KGHeOqppxgZGWHVqlX5c9xisRjJZNJ3J4tffHJ+Z2cnTz75ZP53yHYrtLW18dxzzzE+Pp4/ipZMJn0XAoXr43kee/fuZdmyZRhjuPPOO3nzzTfp6OggFouxevVqXnrpJaLRKK7r5mdc8evnk0gk+O///m8aGxtpbGxk06ZNPPHEE4yNjbF+/XpSqRTpdDq/rZXLAaj5oDCbgcLxV57nYa2lvr6eM2fOMD4+TltbG3fffTfvv/8+Dz/8MI7jcP78eV5++WVSqZSvdhhgUk0rk8kQCoW46667sNbS2NjICy+8QDwe56abbuLGG28kk8lw8OBBDh065LtAK+R5HqdOnaKqqoqqqio6OzupqanhN3/zNzlx4gQ33ngjzc3NZDIZXn31Vfr6/DcxZKFkMkl3dzcbN26kp6eHeDzO2rVrueOOO/jggw947LHHMMbQ39/Pq6++mp/9wm/b23xTM3OGck1NyIZAT08P0WiUxx57jNtvv50PPviAbdu28f777/PEE08QiURoaWkpcamnVth0huyRtIMHD7J582b27dtHPB7PDwd49tlneeGFF7j55pvznex+U7g+uSmHTpw4wUMPPcSjjz6aH+ycSCR44oknOHjwIDfffDPg3yZnYSB1dnayYMECvvOd77Bjxw7279/Ptm3beOedd/j5z39ObW0tixcvLmFpS0s1szmKx+M8//zzVFdXk0wmefTRR3njjTc4fvw4NTU11NfXMzo6WjbfkqdPn+bnP/851dXVtLa2sn79ep566inGx8fZtGkT4+PjZdGUyYXTO++8Q21tLalUiq1bt+bPEgBoa2vj9OnTpSzmtBljGB8f57nnniMWi5FKpXjsscd49dVX6ejoYMGCBfkplqZ7PdmgUc1sDnIBlU6nGRwcJBqNYq2lvb09P4L78OHDDA4OltXGdfbsWdrb21m5ciWffvop8XictrY2brvtNt54442yCLPC2ubQ0FB+Hfbv348xhltvvZWamhoOHTpU4pJOT277SSaT+W0tnU7T1dWVb0Lv378/EPOrzZZqZrN08fRDxhhGRkZIJBLcfffdtLS0cPTo0fxIbb+bqubY0dHBHXfcwaJFi2hububFF1/0ff9SoYvnumtvb+f2228nHA6TyWTYvXt32Ux8efE0PSMjI2QyGe6++26WLFnCwYMH+fjjj6d8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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('circle4hist.jpg')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "5216c457-12f6-451e-92a8-d43c5a15e98f", + "metadata": {}, + "source": [ + "## Line 8 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "c6ebdc89-ba16-41c4-b623-7862a0ae29af", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('line8.png')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "6dffee97-669a-4c03-a506-55c8ebbe0be1", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('line8hist.jpg')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "8cb5df08-342e-4cfd-b65e-42a8528b6969", + "metadata": {}, + "source": [ + "## Line 16 nodes\n", + "![alt text](line16.png)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "62827e5d-82f4-433e-80ea-7eecf1dedbfb", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('line16.png')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "a29b9882-972f-4f52-b4d2-0eb4d4ee866e", + "metadata": {}, + "source": [ + "eof" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 [Default]", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 72780a924a522f4b44f4ff76f313ba401579375a Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Fri, 26 Jul 2024 22:01:48 +0200 Subject: [PATCH 68/83] Add files via upload --- community/womanium/assignments/hw4-5-2a.ipynb | 968 ++++++++++++++++++ 1 file changed, 968 insertions(+) create mode 100644 community/womanium/assignments/hw4-5-2a.ipynb diff --git a/community/womanium/assignments/hw4-5-2a.ipynb b/community/womanium/assignments/hw4-5-2a.ipynb new file mode 100644 index 00000000..1278db3b --- /dev/null +++ b/community/womanium/assignments/hw4-5-2a.ipynb @@ -0,0 +1,968 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "b7f74e3a-7dae-4939-a2ef-0ff82d8eadd0", + "metadata": {}, + "source": [ + "\n", + "# Assignment 6.12 - womanium 2024\n" + ] + }, + { + "cell_type": "markdown", + "id": "adc17ffc-b892-4a94-bebb-4ba74d208a9e", + "metadata": { + "tags": [] + }, + "source": [ + "## Advanced Algorithms Design:\n", + "## Quantum random walk" + ] + }, + { + "cell_type": "markdown", + "id": "2060a234-6a10-453e-b4a2-7b644128c3e9", + "metadata": { + "tags": [] + }, + "source": [ + "Following the example of a quantum walk operator for \n", + "the case of a circle with 4 nodes, a quantum walk \n", + "operator is designed for the case of a line with 16 \n", + "nodes.\n", + "\n", + "Using the file quantum_walk_circle_example.py as a \n", + "template, both the case of a circle and of a line with \n", + "4, 8, and 16 nodes are implemented in this notebook.\n" + ] + }, + { + "cell_type": "markdown", + "id": "fe7f2080-a6eb-4aa5-8865-97aa9acd5c14", + "metadata": {}, + "source": [ + "## Environment and imports" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "fd9eebc7-b78b-4aa7-8614-fbd7dc07f452", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", + "qiskit-ibm-runtime 0.25.0 requires pydantic>=2.5.0, but you have pydantic 1.10.17 which is incompatible.\n", + "qc-grader 0.19.7 requires networkx==3.2.1, but you have networkx 2.8.8 which is incompatible.\u001b[0m\u001b[31m\n", + "\u001b[0mNote: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install -U -q classiq" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "202628d6-3fe3-47fa-8a15-04b7fd9716f4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "from classiq import *" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "99432d7f-12fd-4a46-bbf0-cf3651c04076", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg" + ] + }, + { + "cell_type": "markdown", + "id": "59927721-34b7-49e8-8b88-6a75663aef7a", + "metadata": {}, + "source": [ + "## Implementation" + ] + }, + { + "cell_type": "markdown", + "id": "bbe3dfa3-2265-44af-b708-9a0ad189f5bf", + "metadata": {}, + "source": [ + "\n", + "## Common functions for circles or lines\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "425c8fd2-f8f5-409b-a569-d923819437c4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Prepares the minus state (aux qubit) for the diffuzer oracle\n", + "@qfunc\n", + "def prepare_minus(x: QBit):\n", + " X(x)\n", + " H(x)\n", + "\n", + "# x: current node\n", + "@qfunc\n", + "def diffuzer_oracle(aux: Output[QNum],x:QNum):\n", + " aux^=(x!=0)\n", + "\n", + "# Zero diffuser using Grover's algorithm technique\n", + "# x: current node \n", + "@qfunc\n", + "def zero_diffuzer(x: QNum):\n", + " aux = QNum('aux')\n", + " allocate(1,aux)\n", + " within_apply(compute=lambda: prepare_minus(aux),\n", + " action=lambda: diffuzer_oracle)\n", + "\n", + "# non-zero probabilities for allowable transitions\n", + "# @qfunc\n", + "# def W_iteration\n", + "\n", + "# Iterates over all possible positions and applies \n", + "# the W_iteration for each position.\n", + "@qfunc \n", + "def W_operator(vertices:QNum, adjacent_vertices: QNum):\n", + " for i in range(num_nodes):\n", + " W_iteration(i,vertices,adjacent_vertices)\n", + "\n", + "# Edge oracle for checking adjacency of 2 vertices\n", + "#\n", + "#@qfunc\n", + "#def edge_oracle\n", + "\n", + "# Swaps the contents of two quantum registers: moves the walker\n", + "@qfunc \n", + "def bitwise_swap(x: QArray[QBit], y:QArray[QBit]):\n", + " repeat(count= x.len,\n", + " iteration= lambda i: SWAP(x[i],y[i]))\n", + "\n", + "# shift operator moving the walker if vertices adjacent\n", + "@qfunc \n", + "def S_operator(vertices:QNum, adjacent_vertices: QNum):\n", + " res = QNum('res')\n", + " edge_oracle(res,vertices,adjacent_vertices)\n", + " control(ctrl= res==1,\n", + " operand= lambda: bitwise_swap(vertices,adjacent_vertices))\n" + ] + }, + { + "cell_type": "markdown", + "id": "9761696b-cefe-4ea0-9c91-ebd33af62e22", + "metadata": {}, + "source": [ + "## Circle-specific functions\n", + "\n", + "Here we have the function W_iteration with the \n", + "probability of 0.5 going in either direction.\n", + "\n", + "What is special about a random walk on a circle is that \n", + "the node (0) and the node (num_nodes-1) are adjacent. \n", + "This fact is taken care of in the function edge_oracle." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "5ab73e30-56fd-4028-bb13-e2f883a4e3ae", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# non-zero probabilities for allowable transitions\n", + "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", + " prob = [0] * num_nodes\n", + " prob[(i+1)% num_nodes]=0.5\n", + " prob[(i-1)% num_nodes]=0.5\n", + " print(f'State={i}, prob vec ={prob}')\n", + " \n", + " control(ctrl=vertices==i,\n", + " operand=lambda: within_apply(\n", + " compute= lambda: \n", + " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", + " action= lambda: \n", + " zero_diffuzer(adjacent_vertices)))\n", + " \n", + "# Edge oracle for checking adjacency of two vertices \n", + "@qfunc\n", + "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", + " diff = vertices - adjacent_vertices\n", + " mod = diff%num_nodes\n", + " res |= (mod == 1) | (mod == num_nodes-1)\n" + ] + }, + { + "cell_type": "markdown", + "id": "423cf377-1bc7-4637-855c-b82ced39cca9", + "metadata": {}, + "source": [ + "## Circle with 4 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "e39e695c-cc7d-4983-ba7b-2d076262a66b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Circle with 4 Nodes \n", + "\n", + "# Size of the register required for the number of nodes\n", + "size = 2\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "a863aa31-dc65-4ad4-9985-4fca062ab269", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk operator function\n", + "# applies the W and S operators after initializing\n", + "# vertices\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "1427b784-9701-4338-aec2-5cb5566a6d32", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 0.5, 0, 0.5]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5]\n", + "State=3, prob vec =[0.5, 0, 0.5, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "22cec3d3-aef0-46c6-9de2-74ee40d81b96", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "write_qmod(qmod,\"random4\")" + ] + }, + { + "cell_type": "markdown", + "id": "0c9a5e9c-ed50-44d1-b9ed-665f96274a92", + "metadata": { + "tags": [] + }, + "source": [ + "## Circle with 8 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "a5063b48-425c-4d73-8d6e-8b575cc61be3", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Circle with 8 Nodes \n", + "\n", + "# Size of the register required for the number of nodes\n", + "size = 3\n", + "num_nodes = 8\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "d137cf61-e92b-46d4-870e-4d1fc021650c", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk operator function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "94168a88-cdb4-411c-a162-52adf0c622bb", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0.5]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=7, prob vec =[0.5, 0, 0, 0, 0, 0, 0.5, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "7458e3ac-0e87-49e2-9139-59ee31fc27f4", + "metadata": {}, + "source": [ + "## Circle with 16 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "7e7ad59c-80ca-4452-af10-883711c9b104", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Circle with 16 Nodes \n", + "\n", + "# Size of the register required for the number of nodes\n", + "size = 4\n", + "num_nodes = 16\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "d3444344-5117-4021-9d15-1476582bf61d", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "d30601d3-5b4f-4b23-af9d-f93d0a4f6777", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", + "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", + "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=15, prob vec =[0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "ccfdf941-9d91-402f-a200-ccc266f73e99", + "metadata": {}, + "source": [ + "## Line-specific functions\n", + "The function W_iteration defines the transition \n", + "probabilities for a line. At the beginning and at the \n", + "end of the line the walker can go only in one direction \n", + "(probability = 1). For all other nodes the probability \n", + "going in either direction is 0.5.\n", + "\n", + "Here the function edge_oracle just has to check whether \n", + "the vertices are adjacent (distance = 1)." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "47e777d7-6527-4901-a034-951c624037e4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# non-zero probabilities for allowable probabilities\n", + "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", + " prob = [0] * (num_nodes)\n", + " if i == 0:\n", + " prob[i + 1] = 1.0\n", + " elif i == (num_nodes) -1:\n", + " prob[i - 1] = 1.0\n", + " else:\n", + " prob[i - 1] = 0.5\n", + " prob[i + 1] = 0.5\n", + " print(f'State={i}, prob vec ={prob}')\n", + " \n", + " control(ctrl=vertices==i,\n", + " operand=lambda: within_apply(\n", + " compute= lambda: \n", + " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", + " action= lambda: \n", + " zero_diffuzer(adjacent_vertices)))\n", + "\n", + "\n", + "# Edge oracle for checking adjacency of two vertices\n", + "@qfunc\n", + "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", + " diff = vertices - adjacent_vertices\n", + " res |= (diff == 1) | (diff == -1)\n" + ] + }, + { + "cell_type": "markdown", + "id": "07488d17-7cac-4e36-8335-e3303cff8efe", + "metadata": {}, + "source": [ + "## Line with 4 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "92d3f78c-ee23-45bf-acba-6d0ff0608847", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Line with 4 Nodes\n", + "\n", + "# Register size to accomodate the number of vertices\n", + "size = 2\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "613c61cc-10ea-4950-a262-3dd572c8701c", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "46fca7f3-3106-416d-a3f8-379f7095f8fa", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 1.0, 0, 0]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5]\n", + "State=3, prob vec =[0, 0, 1.0, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "9dd17d8c-83dd-463d-b155-9b8c949f97d1", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "write_qmod(qmod,\"random4\")" + ] + }, + { + "cell_type": "markdown", + "id": "cfbc239f-2bfb-496a-a752-1a84f657ac3f", + "metadata": { + "tags": [] + }, + "source": [ + "## Line with 8 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "08283335-a49f-4d6e-a702-fb76ab01724b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Line with 8 Nodes\n", + "\n", + "# Register size to accomodate the number of vertices\n", + "size = 3\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "07a57ceb-c1da-47d7-8d6b-45e18667d747", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "fb711141-eadd-4ac5-bb1d-fbd31bb71f8f", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 1.0, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "7b486184-7850-4c58-baac-9e89a942e059", + "metadata": { + "tags": [] + }, + "source": [ + "## Line with 16 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "52ccbff2-f15f-4fe2-86fd-6e1d0128f428", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Line with 16 Nodes\n", + "\n", + "# Register size to accomodate the number of vertices\n", + "size = 4\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "e773bbb1-e532-477e-8891-c47f8f4f1f8d", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "c3833a55-49af-4214-be22-5b52eaa22ba6", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", + "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", + "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=15, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "4b28d548-febf-43b3-9271-6cab28fd2cbb", + "metadata": {}, + "source": [ + "# Results" + ] + }, + { + "cell_type": "markdown", + "id": "b7d6c2a8-063f-4ffe-bf3c-18212aa1d57f", + "metadata": { + "jp-MarkdownHeadingCollapsed": true, + "tags": [] + }, + "source": [ + "## Number of qubits vs. nodes\n", + "\n", + "| random walk | num_nodes | transpiled qubits |\n", + "| :- | :-: | :-: |\n", + "| circle | 4 | 13 |\n", + "| circle | 8 | 22|\n", + "| circle | 16 | 33 |\n", + "| line | 4 | 17 |\n", + "| line | 8 | 25 |\n", + "| line | 16 | 37 |\n", + "\n", + "Here we see that the more nodes we have, the more \n", + "transpiled qubits are going to be used. Lines need more \n", + "qubits than circles." + ] + }, + { + "cell_type": "markdown", + "id": "2d8f26a8-18aa-4dda-a3ed-a3974e0184b9", + "metadata": {}, + "source": [ + "## Circle 4 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "335019e0-e185-41d5-b894-6116ada649d6", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('circle4.png')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "6bd34621-0458-4a1b-ac69-62892bcba54c", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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zWj37t2EQiFqa2t56KGHeOqppxgZGWHVqlX5c9xisRjJZNJ3J4tffHJ+Z2cnTz75ZP53yHYrtLW18dxzzzE+Pp4/ipZMJn0XAoXr43kee/fuZdmyZRhjuPPOO3nzzTfp6OggFouxevVqXnrpJaLRKK7r5mdc8evnk0gk+O///m8aGxtpbGxk06ZNPPHEE4yNjbF+/XpSqRTpdDq/rZXLAaj5oDCbgcLxV57nYa2lvr6eM2fOMD4+TltbG3fffTfvv/8+Dz/8MI7jcP78eV5++WVSqZSvdhhgUk0rk8kQCoW46667sNbS2NjICy+8QDwe56abbuLGG28kk8lw8OBBDh065LtAK+R5HqdOnaKqqoqqqio6OzupqanhN3/zNzlx4gQ33ngjzc3NZDIZXn31Vfr6/DcxZKFkMkl3dzcbN26kp6eHeDzO2rVrueOOO/jggw947LHHMMbQ39/Pq6++mp/9wm/b23xTM3OGck1NyIZAT08P0WiUxx57jNtvv50PPviAbdu28f777/PEE08QiURoaWkpcamnVth0huyRtIMHD7J582b27dtHPB7PDwd49tlneeGFF7j55pvznex+U7g+uSmHTpw4wUMPPcSjjz6aH+ycSCR44oknOHjwIDfffDPg3yZnYSB1dnayYMECvvOd77Bjxw7279/Ptm3beOedd/j5z39ObW0tixcvLmFpS0s1szmKx+M8//zzVFdXk0wmefTRR3njjTc4fvw4NTU11NfXMzo6WjbfkqdPn+bnP/851dXVtLa2sn79ep566inGx8fZtGkT4+PjZdGUyYXTO++8Q21tLalUiq1bt+bPEgBoa2vj9OnTpSzmtBljGB8f57nnniMWi5FKpXjsscd49dVX6ejoYMGCBfkplqZ7PdmgUc1sDnIBlU6nGRwcJBqNYq2lvb09P4L78OHDDA4OltXGdfbsWdrb21m5ciWffvop8XictrY2brvtNt54442yCLPC2ubQ0FB+Hfbv348xhltvvZWamhoOHTpU4pJOT277SSaT+W0tnU7T1dWVb0Lv378/EPOrzZZqZrN08fRDxhhGRkZIJBLcfffdtLS0cPTo0fxIbb+bqubY0dHBHXfcwaJFi2hububFF1/0ff9SoYvnumtvb+f2228nHA6TyWTYvXt32Ux8efE0PSMjI2QyGe6++26WLFnCwYMH+fjjj6d8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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('circle4hist.jpg')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "5216c457-12f6-451e-92a8-d43c5a15e98f", + "metadata": {}, + "source": [ + "## Line 8 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "c6ebdc89-ba16-41c4-b623-7862a0ae29af", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('line8.png')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "6dffee97-669a-4c03-a506-55c8ebbe0be1", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('line8hist.jpg')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "8cb5df08-342e-4cfd-b65e-42a8528b6969", + "metadata": {}, + "source": [ + "## Line 16 nodes\n", + "![alt text](line16.png)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "62827e5d-82f4-433e-80ea-7eecf1dedbfb", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('line16.png')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "a29b9882-972f-4f52-b4d2-0eb4d4ee866e", + "metadata": {}, + "source": [ + "eof" + ] + } + ] +} From 1a7af3129005c7071d6635720f96c44572394c57 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Fri, 26 Jul 2024 22:11:51 +0200 Subject: [PATCH 69/83] Add files via upload --- community/womanium/assignments/hw4-5-2b.ipynb | 969 ++++++++++++++++++ 1 file changed, 969 insertions(+) create mode 100644 community/womanium/assignments/hw4-5-2b.ipynb diff --git a/community/womanium/assignments/hw4-5-2b.ipynb b/community/womanium/assignments/hw4-5-2b.ipynb new file mode 100644 index 00000000..852fa348 --- /dev/null +++ b/community/womanium/assignments/hw4-5-2b.ipynb @@ -0,0 +1,969 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "b7f74e3a-7dae-4939-a2ef-0ff82d8eadd0", + "metadata": {}, + "source": [ + "\n", + "# Assignment 6.12 - womanium 2024\n" + ] + }, + { + "cell_type": "markdown", + "id": "adc17ffc-b892-4a94-bebb-4ba74d208a9e", + "metadata": { + "tags": [] + }, + "source": [ + "## Advanced Algorithms Design:\n", + "## Quantum random walk" + ] + }, + { + "cell_type": "markdown", + "id": "2060a234-6a10-453e-b4a2-7b644128c3e9", + "metadata": { + "tags": [] + }, + "source": [ + "Following the example of a quantum walk operator for \n", + "the case of a circle with 4 nodes, a quantum walk \n", + "operator is designed for the case of a line with 16 \n", + "nodes.\n", + "\n", + "Using the file quantum_walk_circle_example.py as a \n", + "template, both the case of a circle and of a line with \n", + "4, 8, and 16 nodes are implemented in this notebook.\n" + ] + }, + { + "cell_type": "markdown", + "id": "fe7f2080-a6eb-4aa5-8865-97aa9acd5c14", + "metadata": {}, + "source": [ + "## Environment and imports" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "fd9eebc7-b78b-4aa7-8614-fbd7dc07f452", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", + "qiskit-ibm-runtime 0.25.0 requires pydantic>=2.5.0, but you have pydantic 1.10.17 which is incompatible.\n", + "qc-grader 0.19.7 requires networkx==3.2.1, but you have networkx 2.8.8 which is incompatible.\u001b[0m\u001b[31m\n", + "\u001b[0mNote: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install -U -q classiq" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "202628d6-3fe3-47fa-8a15-04b7fd9716f4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "from classiq import *" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "99432d7f-12fd-4a46-bbf0-cf3651c04076", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg" + ] + }, + { + "cell_type": "markdown", + "id": "59927721-34b7-49e8-8b88-6a75663aef7a", + "metadata": {}, + "source": [ + "## Implementation" + ] + }, + { + "cell_type": "markdown", + "id": "bbe3dfa3-2265-44af-b708-9a0ad189f5bf", + "metadata": {}, + "source": [ + "\n", + "## Common functions for circles or lines\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "425c8fd2-f8f5-409b-a569-d923819437c4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Prepares the minus state (aux qubit) for the diffuzer oracle\n", + "@qfunc\n", + "def prepare_minus(x: QBit):\n", + " X(x)\n", + " H(x)\n", + "\n", + "# x: current node\n", + "@qfunc\n", + "def diffuzer_oracle(aux: Output[QNum],x:QNum):\n", + " aux^=(x!=0)\n", + "\n", + "# Zero diffuser using Grover's algorithm technique\n", + "# x: current node \n", + "@qfunc\n", + "def zero_diffuzer(x: QNum):\n", + " aux = QNum('aux')\n", + " allocate(1,aux)\n", + " within_apply(compute=lambda: prepare_minus(aux),\n", + " action=lambda: diffuzer_oracle)\n", + "\n", + "# non-zero probabilities for allowable transitions\n", + "# @qfunc\n", + "# def W_iteration\n", + "\n", + "# Iterates over all possible positions and applies \n", + "# the W_iteration for each position.\n", + "@qfunc \n", + "def W_operator(vertices:QNum, adjacent_vertices: QNum):\n", + " for i in range(num_nodes):\n", + " W_iteration(i,vertices,adjacent_vertices)\n", + "\n", + "# Edge oracle for checking adjacency of 2 vertices\n", + "#\n", + "#@qfunc\n", + "#def edge_oracle\n", + "\n", + "# Swaps the contents of two quantum registers: moves the walker\n", + "@qfunc \n", + "def bitwise_swap(x: QArray[QBit], y:QArray[QBit]):\n", + " repeat(count= x.len,\n", + " iteration= lambda i: SWAP(x[i],y[i]))\n", + "\n", + "# shift operator moving the walker if vertices adjacent\n", + "@qfunc \n", + "def S_operator(vertices:QNum, adjacent_vertices: QNum):\n", + " res = QNum('res')\n", + " edge_oracle(res,vertices,adjacent_vertices)\n", + " control(ctrl= res==1,\n", + " operand= lambda: bitwise_swap(vertices,adjacent_vertices))\n" + ] + }, + { + "cell_type": "markdown", + "id": "9761696b-cefe-4ea0-9c91-ebd33af62e22", + "metadata": {}, + "source": [ + "## Circle-specific functions\n", + "\n", + "Here we have the function W_iteration with the \n", + "probability of 0.5 going in either direction.\n", + "\n", + "What is special about a random walk on a circle is that \n", + "the node (0) and the node (num_nodes-1) are adjacent. \n", + "This fact is taken care of in the function edge_oracle." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "5ab73e30-56fd-4028-bb13-e2f883a4e3ae", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# non-zero probabilities for allowable transitions\n", + "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", + " prob = [0] * num_nodes\n", + " prob[(i+1)% num_nodes]=0.5\n", + " prob[(i-1)% num_nodes]=0.5\n", + " print(f'State={i}, prob vec ={prob}')\n", + " \n", + " control(ctrl=vertices==i,\n", + " operand=lambda: within_apply(\n", + " compute= lambda: \n", + " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", + " action= lambda: \n", + " zero_diffuzer(adjacent_vertices)))\n", + " \n", + "# Edge oracle for checking adjacency of two vertices \n", + "@qfunc\n", + "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", + " diff = vertices - adjacent_vertices\n", + " mod = diff%num_nodes\n", + " res |= (mod == 1) | (mod == num_nodes-1)\n" + ] + }, + { + "cell_type": "markdown", + "id": "423cf377-1bc7-4637-855c-b82ced39cca9", + "metadata": {}, + "source": [ + "## Circle with 4 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "e39e695c-cc7d-4983-ba7b-2d076262a66b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Circle with 4 Nodes \n", + "\n", + "# Size of the register required for the number of nodes\n", + "size = 2\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "a863aa31-dc65-4ad4-9985-4fca062ab269", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk operator function\n", + "# applies the W and S operators after initializing\n", + "# vertices\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "1427b784-9701-4338-aec2-5cb5566a6d32", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 0.5, 0, 0.5]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5]\n", + "State=3, prob vec =[0.5, 0, 0.5, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "22cec3d3-aef0-46c6-9de2-74ee40d81b96", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "write_qmod(qmod,\"random4\")" + ] + }, + { + "cell_type": "markdown", + "id": "0c9a5e9c-ed50-44d1-b9ed-665f96274a92", + "metadata": { + "tags": [] + }, + "source": [ + "## Circle with 8 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "a5063b48-425c-4d73-8d6e-8b575cc61be3", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Circle with 8 Nodes \n", + "\n", + "# Size of the register required for the number of nodes\n", + "size = 3\n", + "num_nodes = 8\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "d137cf61-e92b-46d4-870e-4d1fc021650c", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk operator function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "94168a88-cdb4-411c-a162-52adf0c622bb", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0.5]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=7, prob vec =[0.5, 0, 0, 0, 0, 0, 0.5, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "7458e3ac-0e87-49e2-9139-59ee31fc27f4", + "metadata": {}, + "source": [ + "## Circle with 16 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "7e7ad59c-80ca-4452-af10-883711c9b104", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Circle with 16 Nodes \n", + "\n", + "# Size of the register required for the number of nodes\n", + "size = 4\n", + "num_nodes = 16\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "d3444344-5117-4021-9d15-1476582bf61d", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "d30601d3-5b4f-4b23-af9d-f93d0a4f6777", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", + "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", + "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=15, prob vec =[0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "ccfdf941-9d91-402f-a200-ccc266f73e99", + "metadata": {}, + "source": [ + "## Line-specific functions\n", + "The function W_iteration defines the transition \n", + "probabilities for a line. At the beginning and at the \n", + "end of the line the walker can go only in one direction \n", + "(probability = 1). For all other nodes the probability \n", + "going in either direction is 0.5.\n", + "\n", + "Here the function edge_oracle just has to check whether \n", + "the vertices are adjacent (distance = 1)." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "47e777d7-6527-4901-a034-951c624037e4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# non-zero probabilities for allowable probabilities\n", + "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", + " prob = [0] * (num_nodes)\n", + " if i == 0:\n", + " prob[i + 1] = 1.0\n", + " elif i == (num_nodes) -1:\n", + " prob[i - 1] = 1.0\n", + " else:\n", + " prob[i - 1] = 0.5\n", + " prob[i + 1] = 0.5\n", + " print(f'State={i}, prob vec ={prob}')\n", + " \n", + " control(ctrl=vertices==i,\n", + " operand=lambda: within_apply(\n", + " compute= lambda: \n", + " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", + " action= lambda: \n", + " zero_diffuzer(adjacent_vertices)))\n", + "\n", + "\n", + "# Edge oracle for checking adjacency of two vertices\n", + "@qfunc\n", + "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", + " diff = vertices - adjacent_vertices\n", + " res |= (diff == 1) | (diff == -1)\n" + ] + }, + { + "cell_type": "markdown", + "id": "07488d17-7cac-4e36-8335-e3303cff8efe", + "metadata": {}, + "source": [ + "## Line with 4 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "92d3f78c-ee23-45bf-acba-6d0ff0608847", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Line with 4 Nodes\n", + "\n", + "# Register size to accomodate the number of vertices\n", + "size = 2\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "613c61cc-10ea-4950-a262-3dd572c8701c", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "46fca7f3-3106-416d-a3f8-379f7095f8fa", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 1.0, 0, 0]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5]\n", + "State=3, prob vec =[0, 0, 1.0, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "9dd17d8c-83dd-463d-b155-9b8c949f97d1", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "write_qmod(qmod,\"random4\")" + ] + }, + { + "cell_type": "markdown", + "id": "cfbc239f-2bfb-496a-a752-1a84f657ac3f", + "metadata": { + "tags": [] + }, + "source": [ + "## Line with 8 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "08283335-a49f-4d6e-a702-fb76ab01724b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Line with 8 Nodes\n", + "\n", + "# Register size to accomodate the number of vertices\n", + "size = 3\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "07a57ceb-c1da-47d7-8d6b-45e18667d747", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "fb711141-eadd-4ac5-bb1d-fbd31bb71f8f", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 1.0, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "7b486184-7850-4c58-baac-9e89a942e059", + "metadata": { + "tags": [] + }, + "source": [ + "## Line with 16 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "52ccbff2-f15f-4fe2-86fd-6e1d0128f428", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Line with 16 Nodes\n", + "\n", + "# Register size to accomodate the number of vertices\n", + "size = 4\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "e773bbb1-e532-477e-8891-c47f8f4f1f8d", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "c3833a55-49af-4214-be22-5b52eaa22ba6", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", + "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", + "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=15, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "4b28d548-febf-43b3-9271-6cab28fd2cbb", + "metadata": {}, + "source": [ + "# Results" + ] + }, + { + "cell_type": "markdown", + "id": "b7d6c2a8-063f-4ffe-bf3c-18212aa1d57f", + "metadata": { + "jp-MarkdownHeadingCollapsed": true, + "tags": [] + }, + "source": [ + "## Number of qubits vs. nodes\n", + "\n", + "| random walk | num_nodes | transpiled qubits |\n", + "| :- | :-: | :-: |\n", + "| circle | 4 | 13 |\n", + "| circle | 8 | 22|\n", + "| circle | 16 | 33 |\n", + "| line | 4 | 17 |\n", + "| line | 8 | 25 |\n", + "| line | 16 | 37 |\n", + "\n", + "Here we see that the more nodes we have, the more \n", + "transpiled qubits are going to be used. Lines need more \n", + "qubits than circles." + ] + }, + { + "cell_type": "markdown", + "id": "2d8f26a8-18aa-4dda-a3ed-a3974e0184b9", + "metadata": {}, + "source": [ + "## Circle 4 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "335019e0-e185-41d5-b894-6116ada649d6", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXUAAAGFCAYAAAACb2PRAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAABtU0lEQVR4nO3dd3hc133g/e+dPpiK3kmCBAkSJEES7L2LFEWZqlaLN145sa3NZp848b7ZJ9ns7rub18m+8ZuN7ThO4li2Y8WyZHWSkth77wUgwAKCRO/AANNn7n3/gHAFEKCEMuAUnM/zyJYGd+785tx7f3PuOeeeIymKoiAIgiAkBE20AxAEQRAiRyR1QRCEBCKSuiAIQgIRSV0QBCGBiKQuCIKQQERSFwRBSCAiqQuCICQQkdQFQRASiG64G+bk5IxnHIIgCMKXqK+v/9JtRE1dEAQhgYikLgiCkEBEUhcEQUggIqkLgiAkEJHUBUEQEohI6oIgCAlEJHVBEIQEIpK6IAhCAhFJXRAEIYGIpC4IgpBARFIXBEFIICKpC4IgJBCR1AVBEBKISOqCIAgJZNhT7yYKRVEG/LckSVGKRBAEIfImTFLvS+Y6nQ6tVgtAOBwmFAoBIrkLgpAYJkRSVxQFo9HIypUree6555g1axZarZYbN27w3nvvceTIEXw+HyCSuyAI8U1SHmyPeIh4XflIURRMJhOvvfYa3/rWt7Db7WriVhSFnp4eXn/9dX74wx/i8XhEUhcEIWaJlY/orXlv2bKF1157bUBC7/ubzWbj93//99mxYweSJA1qcxcEQYgnCd38oigKFouFV155BavV+tBauNls5uWXX+bQoUO0tLQgyzIAFosFo9EIgCzLdHZ2qu+x2+3odL3FFwwG6e7uBnp/KOx2u9pu7/F4BjTtOJ1ONY7u7m6CwSCKoqDVaklKSlL37/V6CYVCSJKE2WzGbDar36mzs1P98bFarRgMBqC3j8Dlcql/s9ls6PV6AHw+Hx6PR92/0+lEo+n9TXe73fj9fgA0Gg12u139W1+MAEajEYvFou6jq6uLcDislmFfjLIs43K5hixHv9+P2+0eshz7x/hgOfaPUa/XY7PZ1H08LEZFUXC5XEPG2P+Y9S9HRVHw+XxqjH1x9JWj1+vF6/UCoNVqB1QURhPjg8csKSkJk8kEQCgUwuVyDYrxwXJ88Jg9GKPD4VD30T9Gg8GA1Wod8pj1j/HBc99sNqPX65FlmVAopH5WXxx9xywQCNDT06OWY/9zv3+MOp0Om82mVqr6H7P+5fjguW8ymdRr5ovO/QfLsf+5/7ByfPD8iCcJndSh90KYOXMmoVCI+/fvEwgEBvxdp9MxdepUpk2bxvr169m1axc9PT1IksScOXOYOnUqAE1NTRw+fFg96ZcsWUJ6ejoAd+/e5cyZMyiKgsFgYMWKFTidTgAuXrxIZWUlAMnJyWzcuFFNYkeOHKGurg6r1crmzZt58sknSU5OpqmpiXfeeYdjx47h9/uZPn06s2fPBnoT6f79+9XvUVJSwuTJk9UYjxw5QjgcRqvVsnjxYjIzMwG4ceMGly9fVstk/fr1avI4d+4ct2/fVmPcsGEDOp0OWZY5ceIEtbW1AOTn57N48WKg96Lct2+fekE8GOO+ffuQZRlJkpg7dy4FBQUAVFdXc/r0abWfY/Xq1djt9kExWiwWNm7cqP4YXLhwgZs3bwKQkZHBqlWr1IvvwIEDdHR0AJCXl8eSJUvUGPfs2aMmjxkzZlBcXDyorHQ6HcuWLSMtLY3k5GSys7OxWq2Ew2Fu3LhBMBgkGAwiSRLl5eVcuXIF6E0O69evR6/XEw6HOXbsGA0NDQCkpaWxbt06oDep7Nu3T02MkydPZuHChWpZHThwAL/fj0ajYcGCBUyaNAmA1tZW9u3bB/QmnOXLl5OWljbonEtKSmLdunWYzWYUReHcuXPcuXMH6E1ujz32mJowDx8+TGNjo1qOK1euRKPR4PF4OHDggJqEi4uLmTlzJgA9PT3s3r2bcDiMRqNh06ZNrF27lvz8fHw+H4cPH+bAgQM0NzezcuVK9UekrKyMq1evAr0JeOPGjWqiPX36NHfv3lXLcd26dej1egKBAIcOHaK9vR2AqVOnUlpaCvT+SOzatUv9UZo9ezYzZswAoLOzk4MHD+L3+9HpdCxZsoSMjAwAqqqqOHPmDND7I7dmzRr1B+vq1auUlZWp51xfOXq9Xs6fP6+e+/EkodvUFUUhJyeHI0eOIEkSP//5z2lpaRmwjdVq5Q//8A/xeDw8//zzlJeXP7J2dUVRmDRpEn/+53/O5s2b1SQLvTW73/72t3z/+9+nq6vrkcQzkWm1Wnbs2MGf/MmfMHnyZPUckGWZO3fu8Jd/+ZccPHhQ/VGfaPruJrdu3cqf/umfMnXqVLW2K8syd+/e5a//+q/Zs2ePWssWIm84beoJn9SdTifvvfeeWut4mKqqKp555hmam5sfSVJXFAWr1crf/u3f8sQTT6DRaPD7/Xz88cds27YNo9FIMBjkpz/9KX/1V3+lNsUIkacoCqtXr+bHP/6xWhO+cuUKwWCQxYsXoygKtbW1fPOb31TvJCbasVAUhaVLl/KTn/yErKwsJEmirKwMn8/HwoULURSFxsZGvv3tb3P27NmEKh+HwxEzFasJ3VGanp7O6tWrMZlM7NmzB0VRkCRpyH9kWebAgQO0trY+0hjXrVvHli1b1BpPIBDg4MGD6th5vV7PCy+8QHFxMVqtFo1Gk5D/RFNf88W3v/1t0tLS1GaKc+fOqc1mkiSRl5fHq6++il6vj8qxiHYZmUwmvvnNb6oJHaCyspJbt24BvWWUlZXFN7/5TYxG4yMtm/H+AfnKV76iNpnGg/iJdBhycnIoLi7G5XIxf/587t69y5NPPsm//du/sXDhQlauXKkm8j6yLHPx4kV+9rOfqW3Aj4KiKCxbtgy9Xk8wGCQcDuP3+5FlGb/fj1arRa/Xk5KSwu9/+3do7biNwTBOh0sChnO/9uB2o31f/9eBG9fqOHv6OrduVg1jZ5GXkpLCnDlzANRjEAqFCIVC+Hw+JEnCYDCwevUq/uRPv47VoedR1kMV4Mb1Os6dvsatm3cf4Sd/zul0UlJSgqIoBAIBFEUhFAoRDAYHlNGSJYv54z/9Ohab9pGUkSRJ1NW2cuLINa5fuzkuTT/9BzDEg4RK6jt27ODy5cts3LgRn89HeXk5xcXFNDU18d3vfpf/9J/+E5s3b8bpdKq97AcPHuSHP/wh9+/ff+Tx9nVifvLJJ+zbt49wOExFRQX/9b/+V7RaLV//+tcpLS2loEhHYeZ9kiz6Rx7jo7DqGQNP3nqMv/0fpzh7+soj//ykpCT1FvsHP/gBra2t1NfXI8syFy5cICUlhT//8z8nyaJn3rousqc++ucZ1jxr5Kk7W/n+fzsZlTIymUzY7Xa1jNra2mhqaiIUCnH27FkcDgff+c53MCcZmLfGRVZBN5LmEZWRouXZVx/j/V8s4B9/9LZ6pxsp8daPklBJXZIktaYVCATIz8/H7/ejKAr379/nz/7sz3j77bdZsmQJlZWV3Lt3j3v37qm96Y/6Qu1rH3vsscdYu3Ytbreb//W//hd/8Rd/QVJSklpD8MttJGm8yAQfaXyPjOQhY7qHb39nI9f//U08Hu8j/fienh46OjrIyMjgj//4jwmHw7zxxhsYjUa++tWvotFo0Ov19Hh8KBoXMgGkR1pXByQP6dPcfPe/PcnvvViFy/Voh9t5vV46OzvJy8vjT/7kT5Blmd27d+P3+3nmmWeQJAmLxYKrpxlZciHjfXRlJIFkvcb235nJwX2TKb9+J6K7P378eFx1/iZUm/ru3bvJz89HkiQ+/vhj0tLS+PjjjwmHw0iSRCAQ4Nq1a3z44Yfs27ePmzdv4vf7BzXJPAqSJHHixAl8Ph8mkwmHw4HNZkOn02G323E4HOj1elw9rfiUSvT6hDpUg0kB8qYHychIf+Qf3dHRwaVLl9SH0ex2O0ajEbPZrB4XUKhvvYLZ/mh/cPpTpADJOa3k5GY88s/u7OzkwoULahk5HA5MJpNaRn3ju5vayzBae3jUv3lIYHTUsnb9oojv+saNG3H1UGJC1dTv3btHTU0Nt2/fprq6Wh0H20eSJHw+H7W1tTHRO3/s2DF27tzJs88+i1arxWQy8eKLL6oPmIRCAW7VfooltRWNNsGTOqAz+siflEt19aNrCpMkCa/Xyz/+4z9SUlJCTk4OkiSxevVq9SEaRVFo66yl2bOH9MzoHgfJ0EF6RjIVNx7hZ352B/zP//zPLFy4UK04LViwQG2aUBSFru5G6rs/Jn1KlMpIE8DpzIvOZ8eQMZV+RkYGkiSRm5tLYWEhRqOR0tJSsrOzIxXfiMmyTFlZWcz/svYlk+9973u89dZbuFwudDodK1euRKfT0d3TxpVbb+MxfIrNoeHRV32iQSFav7UXLlzgv/yX/0JFRQXhcJiZM2cyffp0QqEgdU3lXLv/E5w5zeh0EtE9FkrUKiRXr17lu9/9LtevXycYDFJQUMC0adMIhYI0ttzk8t0f48iuR6d/9He+fcbjc/s/txAPRl1T1+l0fO1rX2PXrl184xvfoK2tjZqaGjo6Opg9eza/+tWvIhlnxBiNRpKSktQnEKOtqamJP/uzP+O3v/0tv/etV8gt0OAPteKWy0hKaSbNqUHSELVkNxFIkkQ4HGb//v1cu3aN7duf4OkXViHpOnGHqgnrK0nO92M0az/bPsoBR0Hf0N9jx47xyiuvsHnzJp5/ZR2GJA+e4D2C+gqc+T5Mn5VRItmyZQuvv/56xDtgx8uYauqSJFFYWMi5c+f46U9/ypw5c7h8+TJz5syJ2WFAOTk5rFixItphAJ/XKvx+P+fPn6epvQw55UMM2QfJLGjBkdKX0CdgFnnE+sq4qamJkydPICedQ0n7AMekq2RMCmI0awZsNxH1ffeWlhYOHjyAT3cCJfV97JMukzkpgClByyjevs+YG7/65msIhUJoNBo6Ojpobm7+0ic4hV79H4IymQxYbDrMSTq0Ok1UOnAnsr7y1mg1JFmNWGx6DEYtGo0kjsVn1PNVoyHJYpgQZRRvQxrHnNT9fj9Wq5WkpCRCoRBarRar1TpgVrdYoihK3B0kQRCi55133ombpheIwOiX8vJyXnvtNYqKijh9+rQ6R8y9e/fGHNx4qK2tHTAFrSAIwheJlf634Rp1Uu+b5Kimpobvfe97GAwGOjo6eOaZZzh8+HDMDtYPhUI0NzdHOwxBEIRxMeqkHg6Heffdd9XJ9ft8+umng+YsFwRBiFdz5syhvLw8bpptx9Sm3reSS3/d3d3qY/exKDU1lSlTpkQ7DEEQ4sSKFSuiPlPmSMRPpBFit9vV1W8EQRC+TLyN6JlwSR3i7yAJghA9/dfUjQcTLqmHQiEx+kUQhGH78MMPJ9aQxnhTX18/aJ1SQRCEh+nufrTTHI/VhKuph8NhfD5ftMMYFllWqLzW8YWTk7W3+GhtGtt0sF3tfprqPr976X1Aa+QTovm8IcovtxPwx+ZwVmF89a6GJBMMyBGbUK/vXIz1CfpiyYRL6vEkHFbY8/59/L4woZCMIiv4vCH1ovH7wtwq7+T2jS7CIRmvJ4QcVggGZHzeEAF/GJ83RCjYu33ve8PIcu97g0GZgD9M9e1uyq+0A70XUY8ryKlDjYRCcu9nB3v/3+/rfW/ffmVZUT83HJa5eq6Nhlp37xTHn8UZDn/2WYHe9/fF5feFxYWaYDra/Lzz89u8+8s7lF1qV1/vS/Z950woKKvnoqIo6vmgnpcBmUCg91wJhxTOHG7E6w6p75NlRT2flFFUPkZqyZIlcTX6ZcI1v2RkZJCcnKwuKhzrXB0BPnnnPgajhqI5Ti6daUWrlViyJpNDu2vpcQWZvzSdw5/U0dLoY8p0G3X33OgNGhpq3OROtqLRwOwFKZw52oQkSSxamcGn791j0coMKq914vWEmDbToX7m3ZsuPn33Ho5kAyf2NbBkTSZ3KroIBGQWrcrgxL4GbA49s0tTaKjx0FzvYVKhjcprndjsem7f6OTahXb0eg1Ti+xcONnC9GIHdyq60Ok0GM1awiGF9dtyycyNzYnfhJHraOldcGb9E7l0d30+3DkUlNn/YS3uniBTpttpa/bhcQeRwworNmZz4kAD4ZDColUZfPx2Ncs2ZNFw30Nnh585C1LY+0ENNqeBqkoXfm+YwlkObpV3YrHq2fiV/HGfGXLBggVcvHhxYoxTHwmtVsuiRYtIT08nKyuLBQsWoNfrmTdvHrm5uSQnJ7N48WKMRiOzZs2ioKAAi8XC0qVLsVgsTJs2jZkzZ2IymVi0aBFOp5P8/HxKSkowGAyUlpaSnp5Oeno6paWlGI1GSkpKyM3Nxel0smjRIkwmE3PmzGHJkiVYLBYWL16s7nvWrFmYTCYWL16M0+kkNzd3wL4zMzPJyMigtLQUvV5PSUkJkyZNwul0snjxYkwmE0VFRUybNo2kpCSWLl2K1WqloKCA4uJiDAYDixYtIiUlhdzcXObPn49Op2PBggWkpKRgs9lITk4ZVG52p4HHn5tM9a1uDCYtyalGbpd3UXmtgwXL0lm4sncVHGeKEYtNx/ULbWg0Eis2ZmG16Vn9WA7N9V4MRi0paSYaaz24OgNMmW5Hb9BQPD+ZZeuykD47EyRJYsp0O7MXpGC1G5g2y8HUmXZSM0x0dwVoqvOQlZfE4tUZNNZ60OkkLDY96ZlmiuY4mb8sjesX2tn8lXzMFh3Vt1zMLHGSnZfE1CI7JYtTycm3MLnQRn3NwFEFGo2GWcXFJCcnk5eXx7x589Dr9SxYsIDMzEzS09NZuHAhRqOROXPmkJ+fj91uZ8mSJZjNZoqKiigsLCQpKYnFixdjs9mYOnUqxcXFGI1GFi1aRHJyMjk5OcybNw+j0ajuOy0tjfnz56PVasnJyUGvj836jkajZdasWaSmppKdnc38+fPR6/XMnz+fnJwcUlNTWbx4MQaDgeLiYiZPnozVamXp0qUkJSVRWFjIjBkzMJvNLF68GIfDweTJk5k7dy56vZ6FCxeSlpZGZmYmCxYswGg0Mm/ePHJyckhOTlbLKD8vD4PROCC2vAIrcxamcvJAI+2tnz+r0tURoLPDz9ZnJ3OnootwWGbZuiwsdj3H9zVQf89Nd1eQ6lsusvIsFM9LITnNiM8Txt0TYk5pCiazFr1ew5ZnJlF920U4pLB8QxZG08AUlpubq16DS5YswWazUVBQwOzZszEYDCxcuFC9BufNm4fBYFDPgdTU1AHn16RJk7Db7eTk5KjX94wZMwacX5MnT2b27Nnq+ZWSkkJWVhbz58/HYDAMOC4LFy7EYDAwe/ZspkyZgs1mY+nSpZjN5gHHZcmSJdjtdiZNmsScOXPUHNS7AteXe2RnrqIoeDweQqEQsizj9XpRFAWv10swGCQcDuPxeHqbCXw+da1Rt9uNLMv4/X7C4TCyLOPxeAiHwwSDQXU/ffsG8Hg86mf033ff2qV9MfTftyzL6r77Vknvv+9gMKj+e1/cffvq27fP51Nj7L/v/t//YXEbDAYUZXBNQNJI6HQSiqJw/UI7SVYdpiQtdqeBe3e6CfhlUtKNXL/UxtyFqTTXe5Ek0EgSOr0GjQZkReHm9U4kCSxWHYoCWq2EPdnItXOtGIxajKbPazsajYTH3dtMotVK1H120TmcBhRZQauTkDQSsqJg0GvJyDFz/WIb6dm9te7kNCNVN7vocQVIzTCj1fZOCK/RSGi1Elqd9FmZDD5P+sowEAgMOEf6jln/sg4EAoTD4SHPEbfbTTgc/sLy73+O9O1bURS0Gm0MNw0pahn1P4/6vkcoFMLtdqvXUSAQGHQ+ajSaAddR/7LuOx/7/v3B68jr7e2/kSRpUBnVVvfQXO9hapGdimsdLF7VW+EwmXXIYYW7N12YLToCfpn7Vd10tgWYMt2GwahhynQ7NoeervZW2lp8VN9ykZphAkBWes8VV2eAuzddGIxaAn5ZnRmyv0AgMCB39H2/vnj7vt9Q37nvWu5/fYfDYe7du6eec30TAvbPJw/uR6PRDDq/+u/7Ycelb876/nH7fL4BnzcckjLMs7dvoq541/dLfvTo0WiHMoBOp+Ov/+41Fm67jUJvIpLl3mQ8Y46Tm9c7ycwx9zZxOPQUFDm4VdZJOKyQN8VKV4ef7s4A9mQjBoOGzNwktfnl3m0X6dlmyi934Eg2kJWbhM8bJjPHzI0rHQQCMkkWHZdOtyCHFUoWp6EoCunZZiR67wKunm/DYtWRmmlGDis4kg24ugKg9DbXFM1NJhyWMZl16A0arl9oIyXdRGqGiVBAxmDS4vWEMBq1BIO9J6dGI6kXLgDeqfyP/1DG0SOnIlauTqcTv9+vJqPhKJ49kx+8sQWt41rE4ogU2ZfG//wPdzl6+FzE9pmcnIzX6x3RAIKs7Ez+8e3t2HM/XzIyFJSpvNZJZ7ufKTNsnD3SjLsnyIzZTnImWai718OseSkc31ePwahl0lQb02bauXWjix5XkKI5Ttpb/WTnJ1F2oR2NViJnkgV3dxCdXoMsKzTUeJi9IIXWJi85kywYjJ9XRiQM7PvFNL73P388ou+v1WpJSUl56Ki4vh/BWNC3WP0Xic17zHFUV1c3rIIZrr6mnlOnRpeIXnrpJfbu3UtXV9egv2k0EjNLkgHU/1+2Pkv9+7wlaeq/Z2SbB71/ynQ7AIXFTgCW93tvnzkLU4HemmxhsUP9XI1mYA1oyZrMQe+12PQAZOdbBv1t8erB29udhkGvjQdJkti+fTtXrlwhKyuLhoYGampqHslnx5MNGzbQ0NCAw+GgpqaGurq6Me1Pp9cwu7S3CVFRFL7y0hQUeu8aJQ3kTbECkJJmYvpsp/qDPnNusroPm6P3HFmw/PMFyNOzPj+3J03tbYKw2vVjihV6f8y2bt3Krl27WLBgAXv37h1yu1hJ6MOVsEl95syZbNiwgddff31QDSRSt9Y2m40XX3wRk8lEfX09Tz/9NGazmXfffZdVq1aRlZXF7t272bZtG7IsU1tby7lz53j66acJBAKcPXuWl19+GVmWeffddyMS02hJkvTZ+puxbcWKFciyTHt7O7NmzaKzs5NVq1ZRU1NDeXk5Tz75JNXV1WzevJkpU6Zw//59enp62LZtG6Wlpdy+fZt9+/bx4osv4nA4ePfdd0lNTWX9+vU0NTXF7DKMI1FaWorT6aSiooJ169bR0NDAypUrqa6u5vLly3z1q1/l7t27rFmzhqqqKsrKyujo6GD79u3Mnz+fmzdvsmfPHp5//nkyMzP55JNPsFgsrF27loaGhmGVkSR93sz2oKXrBv/gR5LZbObll1/m17/+NU8//TTnzp1j48aNpKWlsXv3blavXo3RaMTtdrN161aqqqrIz88nOTmZr3/965hMJj744AMcDgcbNmygqamJ9957jxdffJGUlBT27t3LuXORu1OKtIRK6mvXrqW4uJhAIMCePXuwWq3qivDjobu7m6NHj5KUlISiKLS2tpKVlcWWLVtIT09n9+7dzJ8/n1u3btHa2sqaNWuYOXMmjY2NTJ06latXr3LlypVR1/InotbWVrZv305nZydNTU288sorHDp0iI0bN6LVauns7OTtt98mOTmZo0ePsmLFCsLhMKtXr+b//J//w5o1a3jiiSfIz8+nrq6Op59+GlmWqampwePxYDYPvuOJN/X19TzxxBOkpqai0Wh4+eWXOXDgAJs3b1abWd5++220Wi03b96kpKQEn8/HqlWr+Lu/+zvWrl2rXkvl5eU8//zzdHd3U11djc/nG3MZjfc0HX6/H7PZzNKlSykqKsLn81FYWEh1dTU7duzA4XDwk5/8BK/XS05ODnV1dTz11FNs2rSJ+vp6rl+/zrRp09i2bRunTp1i/fr11NXVMXv2bHbv3h2zS3X2iZ/Bl8Mwf/58du3ahcVioaWlZcg5G/pGnkRKONw71nbq1KlkZmZSU1ODyWQiFArR1taGxWKhrq6O1tZWoLd2397ezv79+7l58yaKIh6sGIn79++TlpbG9OnTqaysRKfT0dXVxXvvvUdbWxsdHR1qh1RfuRqNRoLBIC0tLZw5cwadTofL5eLmzZvs37+fI0eOEAwG1ZEP8a6trY1QKMTChQspKytDq9Xicrl455136OjooLOzU+2M619GgUCAlpYWTp8+jVarpaenh5qaGnbt2sXBgweRZZnS0lIMhkfTjDZasixz9uxZtm/fzq1bt7BYLHR2dnLr1i327dtHIBCgtbVVnWW2rwwcDgd1dXVUV1dz8+ZNDAYDXV1dtLW1cevWLfbu3UtxcXHMz/KaUEm9ubmZDRs2qEN/hpoa2GAwkJubG7HP7OzspLS0FK1WS25uLqWlperIBFmWOXHiBM899xwvvfQSiqJw8OBBZs+ezdy5c9FoNLhcLpYvXx6xeBKdz+ejvLycpqYm7t+/z6VLl5g3bx5FRUXIsqyO3GhtbWXlypXIskxjYyPt7e185zvf4cUXX+TSpUskJyczd+5cHA4Hs2fPJjc3F41GkxA/sMFgkKtXrxIKhbhx4wZXr16lpKRkQBlB74o+K1asQFEUGhoacLlcfOc73+GrX/0q5eXlmEwm5s6dS1paGnPnziU7O3tc73wjqbKyEofDwfnz5zl+/DhOp5M5c+aoHeeKouD3+3E4HBQUFBAIBDh+/Djbtm3jj/7ojygoKODMmTPqOWI0GlmyZAkGgyHmJwRMqNEvRqOR1NRUvvKVr/DTn/4Us9msDu/q0zdufPfu3RH5TJ1OR0pKCh0dHSQnJw8YNuZ2u8nKyqK0tJT8/HxcLhdvvvkmKSkpyLKs1uT1ej3d3d2DRr9MOMMc/WIymdBoNHg8HoxGIykpKXg8Hvx+P1qtFrfbjdlsJikpSR3iptVqcTqddHd309PTQ0pKCnq9nvb2djQaDcnJyfh8Pjo7OxNi9IvBYMBoNNLd3Y3JZCI5ORmPx4PX68VgMNDT04PRaMRut6tDiPvKyOVy4Xa7cTqdmEwmtYycTqdaRkONfom2/qNfJEnC4XDgcrmQZZnk5GSMRiPt7e0kJSXhcrlQFIWUlBR8Ph96vZ6uri5SUlLQarW0tbWpo2IWLVrEp59+is1mw2g00tHREbU1I6Iy+sVgMKhjih81v99PfX09v/zlLwmHw/T09AzapqOjY8y9/P31Xx5vqGXyXC4XWq2WpqYmDhw4MGg5vb4YdbqE6t4YV/07vv1+Pw0NDYO28Xq9g4Yx9v/v9vb2AX9rbGyMcJTRFQgE1BXIfD7fgDLqe93v9w8axte/jB5cPD6eykhRlAHx919ntP/KbG1tbQPe1/+/w+EwjY2NfPzxx8iyHDdrlY46k2g0GtauXcvp06fZtm0bTqeTvXv3UlpaSk1NDRcvXoxknCPyRWOSOzs7uXLlyiOLxeVy8f777z+yzxMEIbLibUjjqNvUNRoNCxcupLS0lIKCAu7cucPLL79MTU0NGzdujOl2p0RoNxUE4dEwmUxfvlEMGXNHaWpqKrdv3+bSpUs4nU6qqqpwOp1kZQ1+0CUWaLXahBjhIAjCo/Hkk0/GVfPomJO6JA2cf8Hr9dLc3Ex+fv5Ydz0usrOzxWgTQRCGLSVl8ER7sWzMSb2zs5PJkydTVFRET08PFouF7Oxsbt26FYn4Ik6v12OxDH6sXRAEIRGMKakrisLFixdxuVysWbOG3/72t8yaNYv79+/HTU+xIAjCF7ly5UpcdZaOuqEoHA5z+PBhenp6eP3119XX8/Ly2LdvX0SCGw+tra1UVVVFOwxBEOLE6dOnox3CiIw6qSuKwoULFwa9fujQoTEFNN66u7u5ceNGtMMQBEEYFxGfJkDMZTJ64bACxO5Q0PGmEH9jgie22JtlRB5ioZmxSk1Njfg+x1PsHZVxptPpYnLcqSzLNNd7kJSxzxMdr4I+HdXV96MdhjAMHreHcMAa7TAGUMJGGhtrI77fHTt2TKwhjfEmLy+PdevWRTuMQWRZ5uzp68juKb1V1olGNlB320hnhyvakQjD4Ha7uX6+G8LDWzdz3Cnga5/MuVORX1Ber4+vilb8/PxEiCRJMTvT3KkTF3njH7J48VuFGO3tIIWjHdK4k9BA2ErtjUy+/3+/Q0/P4OmShdgTDsv84w8/JCVjByWr7KAdPM/SI6MY8HVk8PO/q6Dixu3oxREjJlxSj2WhUIhf/sturpyfy9z5BaRnOIdcnDmRBPwhqqsaOHH8I9paxTDYeNJQ18L//Z/fZ+68mcycnYPFMrrmmJkzZ1JTUzPk+gdfJhAIUHu/letXz3Oz8s6oPv/LfPLJJ4TD8VPBmnBJvaGhIaY748KhMBfOX+bC+cvRDkUQvlRraxuHDpzg0IHRvV+SJL761a9y4MABdSGZWHP/fnz180y4NnWfz8e9e/eiHYYgCMK4mHBJXRCE2KEoCnV1dVFbdGI48vPzY3rW2QdNuKRut9vJyMiIdhiCIHzm5MmTdHd3RzuMh9qyZUvMDq4YyoRL6qmpqZSWlkY7DEEQPhPLfVxAXCV0mIBJHeLvIAlCIov1xZz7L38XDxI2qSclJZGbm4vZbB7wuizLcXeQBCFRSZLE+vXrcTgc0Q7loT7++GMxpDFaLBYLmZmZ+Hw+Vq9ejV6vR5Zl3nzzTXU+moaGBjEtsCDEEKfTGdOP4Tc1NUU7hBGJ3ZIcheeffx6Px8PUqVP5+c9/Tn5+Pnl5eQO26b/KuiAIQqJJqOYXu93OmTNn8Hq9WCwWFixYwIEDB8SskYIQoxRF4caNG3g8nmiH8lBFRUUx3eb/oIRK6qdPn2br1q04HA6WLl2KyWRixYoVaDSff82UlJRBtXdBEKLn6tWrMZ3U161bF1eDKxKq+eXs2bNcuHCBDRs2cODAgSGHSjkcDoqLi6mtjfwUnYIgCNE2ppp635SURqMRs9mMJEnk5+djt9sjEtxohMNh9u3bF/NjXwVB6GWxWAbcTccalyu+poMedU1dq9Xy6quvsnPnTr797W8jSRKHDh3C6XQSCATYtWtXJOOMGDGkURBihyRJbN68maNHj9Le3h7tcIb0/vvvEwqFoh3GsI3651GSJGw2G3PnzuXWrVv80z/9E+vXr+fSpUssX748ZieWr6mp4fDhw9EOQxCEzxiNxpiuqft8vmiHMCJjblM3mUy4XC5cLhd6vZ6mpiZ6enqYPn065eXlA7a12+1x1YssTEw2mw1NjJ6nkiRhsVhj+mGdkdBoNCQlJWG32wkGg9EOJ6YN9wGoMSf1cDiM2WxGp9Mhy7K68PSDv7w6nY6NGzeSlJQ01o8UhHGVnZOF3qAlFm+4NVotS5cuJcWZE+1QIsZisbB69eqYbeIoLi6moqIi6v10zc3Nw9puzEm9urqa3/md3yEzM5Nbt26RmpqK3W7n5s2bA7YLhUJ88MEHY/24McvMzMTpdFJZGfm1DIXEUDx7JltffgxN7K1PTjgU4tChgxw9fC7aoUwY3/rWt3jrrbfi5k5i1EldURTcbjcVFRX8/Oc/x263U1ZWxtatWzl79uyQnZGx8BCQ2Wxm2rRpVFRURDsUIUYpihLTa3/33Q0Lj4aiKGorRDwYdVIPh8O8+eabhEKhAbXe8+fP09XVFZHgBEFIfOnp6XR0dMRs80tTU1PcJHQY4zj1zs7OQa/dv38/ppO62+2O2aFTgjDRSJLE2rVrY7rjd9euXWKWxljW3NwskrogxBCtVhvTo+Ji9Q7iYWJ3cOg4ireDJAiJLBwOx3TzRjzN+wITMKlLkhR3B0kQEpWiKBw5ciSmm2wfe+yxuMoZEy6pZ2VlsXjx4miHIQjCZ1paWmL67nnSpEkx3Tz0oAmX1E0mE6mpqdEOQxAEYVxMuKQuCEJsmTZtGiZTDD7p9Zm7d+/GdJv/gyZcUu/s7KSxsTHaYQiCQG8f16JFi7BardEO5aH27t0bV0MaJ1xS7+jo4MKFC9EOQxAEYVxMuKQuCEJs8fl8UZ8s64vE2ySEEy6pS5IU03M3C8JEoigK+/btG/Lp9Fjx9NNPo9PFz3OaEy675eXlsXbt2miHIQjCZzweT0zX1GO5vX8o8fPzM0IzZ86kuLiYy5cvU1VVpb6u0+ni7nZKEGKZRqPBYDBE7Q44EAwQCsbuOPdHLaGS+syZM5k/fz5dXV00NzfT1dXFqlWr4m5IkiDEA0mSmFFUwI5n1zKl0InRNMqkLkkw2utTgqYGF8cO3OTooXO43Z7R7ecLnDp1KqbvJB6UUEl98+bN7N+/n61bt3Lq1Cm2bNkyaGL71tbWATV3QRBGZ+HiOfy372/BnnsLWaqDKM1CX4DEqidmsPTdIv7qf/wCvz+yC8tfvXo1ovsbbwnVpu7z+cjLy8NsNrNlyxZaW1sxGo0DHvHt7u7mxo0bUYxSEOKfTqfjD/74SWy5ZchSNxACwlH6J0RId4dVTyiULCga/y8f4xIqqb/33nu43W6CwSBHjx6lp6eHDz/8MK5unQQhHjgcdpzZLhTJH+1QVFpLPctXlER8v8nJyRHf53hKqOaXtrY2Tp06xb1792hoaKChoWHQNn2LZHd3d0chQkFIDHqDHknjjXYYA0lhrFZnxHe7Y8cO3njjjZiedKy/UdfUJUli+vTpaDQaSkpKWLVqFVarlbVr1zJ16tRIxjgiiqJQV1f30L9nZWWxbNmyRxiRIAjxzGg0RjuEERl1UtdqtezYsYOSkhKef/55ZsyYwSuvvIIkSWzevDmSMUacwWCIdgiCIMSJeGu+HXOben5+PpcvX+a9995j8uTJlJeXU1BQELNrDvatDC4IgjAchw8fnlgTemk0GnU5Ko1GQ1dXF42NjcyYMSMS8UVcc3MzFy9ejHYYgiDEiVu3bsXVcy5j7ij1eDxMmjSJ1NRU/H4/RqORtLQ06uvrIxFfxHk8HjyeyD+gIAiCEAvGXFO/evUqubm5fOMb32Dfvn1MmTKF7u7uIUeeCIIgxJucnJy4Ws5u1DV1WZYpLy+npaWF733ve0iSRCgU4qmnnuLAgQMx225ts9nQ6/W0t7dHOxRBEOLAE088wc9//vPEH9IoyzIff/wxsiwTCoUIBoMoisKuXbu4dOlSJGOMqLS0NDGkURCEYYu3qboj/vDRg3OtxKJ4upUSBCG6/P7YeWp2OOLrJyhC4qknWxCE6Prwww/jpukFEmyagOGoq6ujtbU12mEIghAnOjo6oh3CiEy4pB4IBAgEIjs1pyAIQqyYkM0vgiAIwzV//vy46iyNn0gjJDk5mby8vGiHIcQZvz9MMCgTDITxeUOEwzI+T2TaWRVZIRSMzSHAI6EoCj2uAB2tPsKhyHwfRVEIBuWo9oMtXbo0rpL6hGt+cTqdzJw5k9ra2miHIsSRiisdhMMKPm+IxloPpcvTqbnbw+rHcoDe5NPZHkCRFZypRjrb/YRDCjaHAb1Bor3FT5JFh1Yn0eMKYrHp6XEFMZq09LiCXDrdwmNPTaLbFUCSJOxOA64OPxqNhCMlPmYJbKrzsu+jGmx2PblTLCxelQn0lo3XE6bHFSA5zUTAF8bjDmE0abE59HR1BJBlBbvTQFd7AL1RgyIrBAMyFque/TtrWLUpG4NJi7s7REq6EU9PiGBAxplqRKsVo9n6m3BJHeJv3KkQfWmZJq6cbSXgl+lxBbl9o4u8KZ+vMl93z82J/Q3odBKzS1PZ+Zu7LF6dSVe7n6y8JJrqvAT8YbLzLdyp6GJOaQp19930dAWZPN1G+eV2CmbYuXGlA0VRKJ6fwv6Patj0lfy4SeoBfxidTmL+0jSMJq36ut8n88lv72FK0mKx6enuDKDVaXB1+lm0KpOLp1qQgOIFyex9v4YN2/OovdtDZ4ef6cVOblxup3CWg2sX2kmyaHEkG6m+5SI738KaLTlotdqHBxUB8bb2wiNL6lqtlnXr1lFRUYFer2fKlCmcPHmSpUuXUl9fT09PDyUlJZw4cYI5c+bQ09NDXV0dy5Yt49SpU0yZMgWDwcCNGzdYvnw5V65cISUlhbS0NC5cuMDy5cu5efOmOs/76dOnWbhwIQ0NDbhcLubNm8fJkyeZOXMmycnJOBwOlixZwtmzZ5k0aRImk4ny8nJWrlzJxYsXcTgcZGVlqfu+ffs2AIWFhZw8eZLFixfT3NxMR0cHCxYs4Pjx48yaNYtgMEh1dTXLly/nzJkz5ObmYrFYuHbtGitXruT69etYLBZyc3M5ffo0y5cvp7q6mmAwyKxZszh58iTz58+nvb2dlpYWFi1axMmTJ5kxYwaKonD79m2WLl3KxYsXycrKwm63c+XKFVasWEFZWRkmk4lJkyZx7tw5lixZwr179/D7/RQXF3PixAkWLFigTrq2cOFCTp8+TWFhIdA7cdHKlSs5e/YsGRkZpKSkcOnSJVauXMmNGzcwGAzqcVu2bBl1dXW43W7mzp3LsWPHKCkpGfK46fV6KioqWLFiBZcvXyYlJYX09HTOnj3LypUruXXrFpIkUVhYOOi4zZ8/nxMnTjB79mx8Ph/3799Xj9vkyZMxGo2UlZWxcuVKLl++jMPhIDMzk4sXL7Js2TJu3boFwPTp0wcdt75zori4mEAgoB43l2vwaIeUNBMNtR4yss1MLrRRVemidHm6+vfauz0sWJaGTq+h8lon5iQdqzdn884v7nD+eDPmJB3driCpmSbmL00jNaN3f00NXkpXpDO1yEFddQ+LVmXgdYcou9hOdr6FWfMGrrqj1WpZvHgJtypr1WN96tQpli9fTk1NDV6vlzlz5nDs2DHmzZuHy+WioaGBpUuXcvLkSaZOnYpWq6WyspIVK1Zw6dIl0tLSSE1N5fz586xcuVK9RgsKCjhz5gyLFi2itrYWt9utnqNFM2ZgMpsHxJaebWbFhiwqr3WiM2jIzrcA0N0VIBgM8/gTk9n55l1sDgOly9O4eq6N88eaqL/vxp5soLXRx6RpNqbNdNDS6KXzdgC/L8y0mQ50Og0Op4GVm7PZ90ENOr2GhSsz0BsGVtCmTZvG3Llz1WN59uxZ8vLysFqtXL58mZUrV1JWVqZeg2fPnmXZsmVUVVURDAYpLi5Wr8GOjg5aWlro6enBZDJRVFSELMvcvn2bZcuWcf78ebKysnA4HFy9epUVK1Zw7do1zGYzkydP5vTp0yxbtkw9Lg9egw0NDSxZsoQTJ04wbdo0NBoNN2/eZOXKlVy4cEE9LhcuXGDFihVcuXJlWLn2kSV1WZapqKigs7MTSZLw+/2EQiFu3bqFx+MhGAxSXl5OIBDg7t27hEIhvF4vZWVleL1eamtr0Wq1+P1+bty4QXd3N4FAgM7OToLBIJWVlXR1dQFQWVlJIBDg9u3beDweAoEAN27cIBAIcP78eSRJwuv1Ul5ejtfrpa6uTt13eXk5PT09BAIBenp6htx3MBjk9u3beL1e9T2BQIB79+4hy7Iat8fjob6+Hp1Op8bQ1dWlTioWCoW4efMm3d3dyLKsxnjnzh38fj8+n4/y8nL8fj/3799HURR8Ph83btzA7XbT0NBAa2srgUCAiooKurq66Onpwe/3EwgEBu07GAxy584dgsEgHo+H8vJyNVFC70MWZWVluN1uGhsb6ejoIBgMqsdNo9EMOG59SweWl5cTDAYfetz63ldeXq4et66uLkKh0Jcet76yra6uJhwODzhufedE33bd3d34/X71M77suPWVd3V19YDjlpaWMuj8NSVpCfjDpGWacaYYuXCiBbvToLb1ZuaauXS6Fb1BQ36BjQsnmzl9pAmA4gWpKLKCzaFHUQAJqipdKApYbTq0Og0drT6mzXRw7VwrYRkKiuxUVXYNeR1VV1erx9rn86nnUU9PD+FweMDxCAQCeDweysrK8Pl81NbWqtdf37keCoXo6OggFAoNONZ9I8X6jnXf54TDYdra2ggGg/RfmaChxsO18204Uw10tvnVsrHYer/3uWNNOFMMeNxhrp5ro7nBy7wlaZjMOrLyk8jINtPW4qOjzc+9292kZpg++84QCim0t/o4f6wJm0NPMBBGYvCDhC0tLdTV1anXjsfjoa6uDr1er57Lfddg3/lbWVk56BqsqqrC7/fj9Xq5cOECPp+Pe/fuqddg374bGhpoa2tTr2+Xy4Xb7Vavk/7Hpf81GAgE1POt77j0XYP9j0tnZ6d6nbjd7mHlWkkZZg9ETk7OsHYoCNnZ2SiKgtVqpaamZkxP5EmSNKpOsr735eXl0d3drSb34SiePZMfvLEFrePagNfbW32YzDp0Oomu9gCurgAn9jeg1UqsfTwXAFlWyMxJ4sf/z1W+8lIBWXkWjCYt96u6sdj0WGw6NBoJjUai5m4PVpue1AwTjXW9dwEtjV40GonM3CS6OvykppsGJC7Zl8b//A93OXr43JCxazQaioqK1GTQ0tIy4rLr80Vln5WdyT++vR177t3PY5MV6u+7cXcHSc0wcfiTOtzdIYrmOima46S12Ud+gZVDu+tIyzSRP9VGZraZxjoPHneI3MkW3N0hnCkGaqp70EgSyWlG/L4wkkZC+uwYTJpqw9UZwJliRKf/vKYuYWDfL6bxvf/544d+p6lTp9LV1UVycjJ37tyJSgdsX7lOnz5dvUsfruHMfpvQbeoajQZFUcQTpONIq9Wqk7lJkoRWq2Xt2rX4fD6am5tpbGwkGAwOmHdfp+s97fq/R5Z7Rzj0tY/KskxpaSkFBQX89re/VT+v/zHt+/cH36/RaHjxxRc5c+YMBoOBUCiEy+VCp9MRDoeRZXnIuBVF+cLFEFLSTOq/p2ebSc82M23m4MVgQiGZ2aWpFBY71deG2m7G7M//PnmaDYBJU23qa2kZ5gffMoAkSYO+k8Vi4dVXX+VXv/oVbreb1tbWAd9tqPf0lUPfvyuKgl6v57XXXuP1118f8IOo1WoJh8NoNRp4oJas0UgD+hme+3rhgL8nf1Z+OZMsTC604fysr6CvmQbAZO49N6YU2tXXbP2KLiW9dx9pmV9eNg9+b71ez3PPPcfhw4fR6XRUVVWp59tQ54FGo0Gj0bB8+XJOnz6t5hFZltm+fTstLS2cOnWq3/fXIMsykiSpP8R9570kSWg0GhwOB1/72tf40Y9+RGZmJjU1Nep7+l8fD8bQ97fhSKikrtFoMBgM6gn78ssvU19fz4EDB9Rt0tPTyc7O5urVq1GMNDHk5OTw9a9/HZPJxM6dO0lKSuLxxx8nLS2N3bt3s3jxYhoaGnjyySdJTk6mvLycCxcu8PWvfx1FUXj//feZNGkSpaWluFwujh49yksvvURTUxPt7e1kZWUxefJkDhw4oM6quXbtWrRaLW1tbRQVFeH3+5k3bx6dnZ1cvnyZZ555hosXL7Jx40asVisul4uysjI2b95MYWEhTU1N7Nq1i1deeYWkpCQ+/PBDMjMzWbp0KS6Xi5/85CdjLhedTsOWpyeNeT9fRKPR8Nxzz1FUVERPTw+/+tWv+Na3voVeryc9PZ0pU6bgdruZNm0ay5YtIxwO8w//8A9s375dLYePP/6Yl19+maSkJD766CO2b99OZ2cnVquVw4cPs2HDBioqKvj000/VO69vfetb/NM//ROvfuMb2O2jW5dg3pK0CJfGYCtXrmTDhg1IksQ//MM/sHHjRubMmcO0adM4fvw4y5Yto62tja9+9asYDAbefvttMjIyWLduHV6vl3/913/lmWeeIS0tjUmTJjF16lQKCgoAOH78OFu2bKG5uZlLly7h8/kAeOWVVzh//jyFhYUEAgFmzpxJamoq586dw2q1smDBAmpra9m0aZPa3l5bW8tLL72E0Wjk9OnTdHZ2snXrVhRF4ac//SnPP/88KSkpXL9+nXfffXdY3z2hhoE88cQT/O7v/i6vvfYaxcXFTJkyBfMDnTlWq5X8/PwoRZh4GhsbCYfDrFq1ik2bNvHTn/6U48ePA70zYur1etra2mhsbGTdunVs3ryZY8eO8bOf/Yz09HSeffZZWlpamDt3Lvn5+TQ3N/Pmm29SWFjIsWPHOHfu3IBpku/cucOiRYtYtmwZ7e3tPPXUUzQ0NFBSUkJBQQE3btzg17/+NZcuXeL48ePYbDYmTZpEcXEx3//+9ykvL2fjxo1kZmbS09PD5s2bmTp1Kg0NDdy6dStuRkZJkoTb7ebevXssWLCA1atX4/F4+PGPf0xHRwdWqxWr1UogEKCmpoaioiLmzp3LzJkz+cEPfsCNGzfYtGkTKSkpdHd3s3nzZqxWK++88w6SJNHU1ER5eTmnTp1Sa4h9bcMrV64kOTl52G280RAMBqmtrSU/P5+SkhIWLlzID3/4Q8rLy9FoNKSlpaEoitqcsXr1ajZu3MjPfvYz9u7dy7Jly5gzZw6tra1YLBacTidHjx7l0KFDagfy8ePH1YQOUFVVxYoVK5g3bx5JSUnMnTuXxsZGNm7cSGpqKgcPHuTNN9+krKyMs2fPkp6eTmlpKa2trfzwhz9ElmVeeukluru7yczMZP78+eTn53Pt2jVaW1uHPRFhfJzBw1RQUMDu3bvR6XQ8/vjj6kiYeLlQ482MGTOw2+1cu3ZtwG18/9vErKwsiouLOX/+/IBmGJ/Ph8fjwev1cvnyZf7lX/6FtrY2PB4Pfr8fSZIGNA/0aWxsxGKxMGXKFCoqKvB6vVy5coXXX3+d5uZmvF4vwWBQfS+g7quvGUZRFKqrqzl48CC7du3i8uXL3L17lzVr1sTs2roPSkpKYu3atVy5coX29na1WaT/OgZ6vZ5169Zx+/ZtGhoa1GaqUChEV1cXiqJw9+5dDh06xAcffEAwGMTn8w1ognrw2jl16hQvvPACZWVlhGN0kqu+JsDa2lru378/oEml/7lZWlqKRqPh6tWr6mL0oVCI7u5utT/i5MmTnDlzBlmW1XOzrxz7mhH73Lhxg9LSUoLBII2NjTQ1NXHmzBl+9atf4ff71cERfc08gNrsEgwG6e7uJhwOc/36dX71q19RUVHB3r170Wg0rFmzZtDnPUxCZbuqqiqefPJJLBYLP/nJT/jkk08oKysbcKK73e4RdZoJD9fU1EReXh6LFi2iu7ubI0eO8NprrzFv3jx1ycDOzk4AduzYgdvt5ujRo6xfv57XXnsNv9/PkSNH2LJlC0uWLMHv9+NyuQiHw7S3t9PY2MjUqVMpKioiLy+PvLw8jEYj58+fp6Kigrq6Oo4dO8a2bdtYtGgRfr+fnp4eFEXh3r17rFy5Eo/HQ21tLXfu3OE//+f/zIoVKzh27Bipqals3boVp9NJVlYWixcvpqurK6Zrn/35/X7q6+t59tln0Wq1lJeX43Q6+YM/+AM1eYXDYe7du8fWrVux2Ww0NjZy9+5d/uiP/ogVK1Zw5MgRsrOz2bJlC8nJyXR0dBAOh+ns7MTv99PQ0MCmTZvIz88nLy+PrKwsKisr6ejoiOk1E/pGCK1fv5709HRaW1u5du0af/RHf0ROTo7aMVlbW0tRURGLFi2is7OTY8eO8fu///s8++yzXL58GbfbzeOPP05NTY1aJn2jq+7du8fixYuZMmUKeXl55Obm4vF4uHXrFufPn+f69eu43W6eeOIJJk+eTHd3t1qR6e7uZs2aNXR0dHD58mVycnL4zne+Q0pKCjt37mTt2rWsW7cOSZIoKSlhxowZ1NbWDnvx64Qa/aLRaDCbzTz99NO8+eabagfEg6sw9XVoCGNnNBpRFAVZlgmHwxgMvcP8srOz+eM//mO+973v0d7erpZ5MBjEYDCow+o0Gg16vV59v0ajIRQKodfrCYVCGAwG1q5dS0FBAYqicPr0aa5fv67WcPr3o/R1SPW9rtPpkGVZPQ/6hrWFw2H0er06bK/vb33xPWz0SyzoP/pFq9Wq3zEUCqHT6dBoNGi1Wl577TWuXbvGgQMH1I63vjulh5WDTqcjGAyqHalarZacnBwee+wxtFotXV1d6jS0aWkp/OSB0S/R1n/0S9/3VBRFnTZXr9cDsGTJEjZs2MD3vvc9tbO9//nbdx7odDp1OHL/nNHXmWw2m9m2bRspKSmEw2E+/fRTGhsb1XOu//v73iPLshqXJEkEg8EBxwBQr6G+Y9J3XMLhcHRGv9hsNnWc9KMmyzJut5tf//rX6gEY6jdLJPTIeXC4Yt9/y7LMv/7rv9LS0jKovPufG7IsD9hH37Z9tSm/38/evXvVJpgHj6csywPaNfu//uA52L+m038YmaIocbcQAqD+kPXp+056vZ7Tp09z9erVQds87D39/70vCYZCIe7fv8/PfvYzYGDZx/p4sgfPK0Bt1uvu7uYXv/jFkEMJ+78nFAqpFYyhtnW73fz2t7996LnZ9/4HPbivB/97qBhGYtRJXaPR8PTTT7Nv3z6+9rWvYbPZ+OijjyguLqapqYljx46NdtdjJpJ29NXU1FBTUxOx/YlhqcMXDAY5ceJExPaXSGWvKAqXL18e0Xu2b9/ORx999NDmj1grn1G3qWs0GgoKCli4cCGKovDxxx/z7LPPcuPGDdatWxeznZPZ2dksX7482mEIghAnMjIy4moJzDFnXrvdTn19Pffu3SMpKYmamhp0Oh2TJo3vON3RMplMpKQMfgxcEAQhEYw5qfc92df3S+b3++ns7CQ1NXXMwQmCIERbRUVFzDWxfJExd5Q2NzezYcMGvF4vLS0t2O12MjMzqaysjER8EedyuWhqaop2GIIgxIkjR45EO4QRGXVS7xsq1DeVampqKm+++Sbz58+noqKCnp6eSMYZMW1tbXG3kKwgCMJwjTqpy7LMzp078fv9fPzxx+rrubm53LhxIyLBjRcxOkYQhOEym814vd5ohzFso25TVxRlyKkrz58/H9NLxen1eozG+FhJRhCE6Hv66aeH/Yh+LIjNcYfjKDc3VwxpFISIiL1EFw5Hfj4am8325RvFkAmX1CVJwmKxfPmGgiA8VLerm6DXAsTO+G0llERd3f1ohxF1Ey6pC4Iwdl6vj9OHmiCYTEyM9lMkuhsnc+Lo9Yjv+ty5c3HVDxd790/jrL29nfLy8miHIQhxTZZlfvaTj3CkPM2a7RlI+q4HF0IaNkmSQFFGPZ+MEjbRXuvgh//PCarvRr4/7+LFixHf53iacEm9q6tLTL0rCBHQ2dnN//4f7/DGv2RTVDwZS5Jl5DN9SRILFy7sXSTd5RpxDIFggLqaZqqqamhpbh3x+xPRhEvqgiBEjtvt4WblHW5W3hnV+yVJorXJw7lz52K2suVwOGI2tqFMuDZ1s9lMUlJStMMQBIHeodGHDx/GNYpa+qPy1FNPiSGNsSwzM5NVq1ZFOwxBED7z4BKIscZkMkU7hBGZcEm9b5UbQRBiQ996nbFqpItURNuES+qCIMQOSZJYtWoVdrs92qE81J49e4a9PmgsiJ+GoghpampSF0UWBCH6srKyMBgM0Q7joWJ52pOhJGxST01NpbCwkPb2dm7fvq222Xk8HpHUBUFIWAmV1NPS0igsLKSrq4upU6diNptpamqK6U4YQZjIFEWhpqYmphf+njx5Mvfv34+bPJJQberPPPMMFouFJ598ElmWKSgoYP78+QPWF7RYLGI5O0GIISdPnqS7uzvaYTzU1q1bY74zt7+ESuoGg4GGhgZCoRCtra3s3LmTgoKCAQckIyODxYsXRzFKQRCE8ZNQSX3fvn3MmzcPk8lEZ2cnJSUlHDp0aNCQpHh6kEAQEp1erx9wNx1rAoFAtEMYkYTKbpWVldy6dYsFCxZw+/Ztbt26NWibcDhMMBiMQnSCIDxIkiQee+wxTp48GbPLTH744YdxNVZ9TEnd6XTS1dVFamoqBoOBlpYWZsyYQXNzMy0tLZGKcURkWebChQsP/XttbW3MnjyCMBFZrdaYbrNub2+PdggjMuqkrtVq+frXv87OnTv55je/SU9PD+Xl5fj9fubOnctvfvObSMYZMbIsx3SnjCAIwliMuk1dkiR0Oh1FRUVcvHiRn/zkJ5SWlnLp0iXmz58fd/MlCILw6CmKwrVr13C73dEO5aFKSkrQaOKn+3HMbeoGgwGfz0cgEECr1dLW1kZrayszZ87k8uXL6naSJJGVlRX12yybzYbD4Yi7p8SERycrMxNtjF7EkiSRlp5OXl5etEOJmO7ublJTU6MdxkM9/vjjdHd3R70vbrgdtmNO6oFAALvdjtFoJBwOo9FoMJlMg57a1Gq1lJSUYDabx/qRY5KRkUFubi6XLl2KahxC7MrLy0Gn0xGLXWMajZYZ02cgB2P3sfpEk5eXR2lpadTnf2lraxvWdmNO6jdv3uSb3/wm06dP59KlS+o8DlVVVQO2C4VC7NmzZ6wfN2YFBQUUFxeze/fuaIcixKji2TPZ8Y0taKNb/xhSOBzi5MkTHD18LtqhRIzdbsftdkc9aT6M1WqNqxEwo07qiqLQ0tLC3bt3+f73v4/JZKKhoYGnn36aY8eOxWwB+P3+mH4kWRAmEkmS2LBhA0ePHo3ZUSbvv/9+zOazoYw6qYfDYd566y3C4TDNzc3q6/v378fr9UYkuPHQ2Ng47NsYQRDGn9FojOmOyFjuxB3KmJpffD7foNdi9de2jyzLoqYuCDFEluWYnixLo9Egy3K0wxi22P15FAQh4SmKwunTp2P62ZH169dHfdTeSEy4pJ6WlkZJSUm0wxAE4TM1NTUxPb9KYWFhTM9N86AJl9RtNhv5+fnRDkMQBGFcTLikLghCbMnMzIzpxeAbGhpius3/QRMuqXu9XlwuV7TDEASB3iGN69atw+FwRDuUh/roo49idgz9UBJq6t3hEEMaBUFIZBOupg5EfQ4HQRA+Fw6HY7p5I5bH0A8lvqKNAI1GE3cHSRASlaIo7N+/n87OzmiH8lBPPvmkGNIYy/Ly8li6dGm0wxAE4TOdnZ0x3WadlZUlhjTGMq1WS0pKSrTDEARBGBcTLqkLghBbioqKoj4l9xeprKyM6Tb/ByVsUk9LS+Oll14iOzt7wOsul4vq6uroBCUIwgCSJDFv3jwsFku0Q3moI0eOxHTz0IMSakjj0qVLmTdvHh6PB71ej8vlGjRjZFtbmxjSKAgxJNbbq+Oplg4JVlNftmwZe/bsITMzk5ycHCRJ4rnnnhOjXQQhhsXyAhnQOzVwPEmobNfR0cGyZcswmUxUVFRgMBgGTZmp1+vR6RLqBkUQ4paiKBw4cICurq5oh/JQTz31VFzljPiJdBjeeecdcnJyyMjI4NNPPyU9PZ3W1tYBiT07O5upU6dy+PDh6AUqCIIqlhfVAXA6ndEOYUQintS1Wm3UJr33eDzcvn2bX/7yl7jd7iFXLNFqtTHdKSMIE40kSTHdbh3LsQ1l1M0vkiSxbNkyDAYDW7Zs4atf/SqZmZls2bKFOXPmRDLGERMTdglC/CgtLY3pitaJEycmxspHWq2WVatWUVpaSmlpKT09Pbzyyiu0tbWxadOmmO3Rbm9v58aNG9EOQxAEeiuHhYWFMT1OvaysbGIk9T4ZGRlUVFRw4sQJ0tPTuXXrFunp6aSnp0civojr6uqiqqoq2mEIgiCMizG3qT/YHuZ2u2lqamLKlCk0Nzerr2u1WtasWYPJZBrrRwrCuMqflIvBoCcWB9lptVoWL16CxZwW7VAiQpIkpk+fjizL9PT0RDucISUlJeH1eqPett7R0TGs7cac1F0uF8XFxUyePBmPx4PZbCYrK2tQbViWZaqqqqI+NMhoNKLT6YbsRBUEAFkOEQ7boh3GkGRFoba2lps3b0Y7lIiprKyMdghf6IUXXuDdd98lFApFNQ6fzzes7cacYS9evMicOXPYsWMHH3zwATNmzBhyIQpFUbh3795YP27MCgoKmDZtGvv37492KEKMMpr0hMPFxOJkq4os09BQz507d6IdyoTR1tbGnTt3op7Uh2vUSV2WZU6dOoXL5eJHP/qR+vrjjz/Ovn37on6r8kXi7QkxQRCiJ5Zz2VBG3VEqyzInTpwY9IX37NkT06NLFEWJq55sQUhkkiSxYcOGmF6j9NNPP43paQweFPEG7lhPmHV1dXg8nmiHIQjCZ9LT09Hr9dEO46Hu378f7RBGJKHmfhmOYDA4YFSOIAhCIplwSV0QhNihKApVVVXDHtkRDVOmTInZhymHMuGSutVqJTc3N9phCILwmfPnz8fsGHWATZs2iYWnY1l6ejrz5s2LdhiCIHwm1keXxFNChwmY1CH2V1oRhInEZDLF9DUZDAajHcKITLikHgqF4mp4kiAksr4hjbE8Z/nOnTvjKmck1CIZw9HQ0BDTq6wIwkRjs9liuomjpaUl2iGMyISsqYv51gVBSFQTLqkLghA7FEXh6tWrMT3B3qJFi+Jq8fr4iTRCHA4HBQUF0Q5DEITP3LhxI6bXKV24cKFI6rHAbreTmpqK3W4f8HpKSgrFxcVRikoQBGF8JVRHqclkwul0EgwGmTFjBgUFBWRkZPCjH/0ornqvBWEisdlseDyemL1Gu7u7ox3CiCRUUn/mmWfQ6XRkZWXxt3/7t1itVm7fvj3gZAkGgzH9SLIgTCSSJLFlyxYOHTo0aA2GWPHWW2/F7A/OUBKq+SUtLY1Dhw7h8/kwm83MmDGD69evD9imtraWkydPRilCQRAepNVqY/rho3hK6JBgSf3SpUs8+eSTOBwOMjMzKS8vH3Ka3VjulBEEQRiLhErqx44d45/+6Z+4fPkyVVVVHDp0KNohCYLwBRRF4dixYzH97MiGDRti+uGoB40pqfcN89FoNOqXzszMJCkpaeyRjVI4HGbnzp0PXawjJydHTOglCDGkvr6eQCAQ7TAeavr06THdPPSgUXeUarVa/t2/+3fs3r2bb37zmxgMBj799FOys7Pp6elhz549kYwzYoxGI3l5eVy5ciXaoQiCIETcqGvqkiSRmprKvHnzqKur4xe/+AVbtmzhypUrrFq1Cp0uoQbWCIIwTnJzczEYDNEO46Hq6+tjfnrg/saceZOSkujo6KCtrQ2j0UhDQwN+v59p06ZRWVk5YFuz2Rz12xhJkujp6YlqE5EQ23qngo12FA8hSRiNxoQ5fyVJYt26dRw5coT29vZohzOko0ePYjQaox3GsEfhjDmpy7KM0WhEo9GgKArhcBi/34/JZBr4QTod27Zti/rJKEkSGo2GSZMmRTUOIXZl52RiNGiIxVm0dVotq1atJisjMaa6kCSJhQsXYrfbY3r1o1gw3LWVx5zUa2pqeO6557BarVRXV5OSkkJKSsqgWnooFOLDDz8c68cJwrgrnj2Tx17aiMb05ds+aqFQmMNHDnPs8LlohxIRGo0Gj8fDsWPHYvbhI51ORzgcjnoTzHA/f9RJXVEUvF4vZWVlaDQanE4n58+fZ926dVy8eHHIpzZDodBoPy5itFotiqI8dHSMIIRCIWK3CVUhHArFxLUUKfv376e7uztmH/LZunUrn3zySczG96BRJ/VwOMzbb79NMBjk4sWL6us3btyI2bYxgOzsbPLy8jh9+nS0QxEEAejs7Ix2CF8oNzc36n2BIzGm5pehVgS5devWWHY57vR6PampqdEOQxAEYVwk1BOlghAJgUAgZm+1tdhQlMS6bIuKijCbzdEO46GuXbsWV821iXV2DENPTw+1tbXRDkOIYa0tbfi6LRBr7eoK+N0mau83RDuSiJEkifnz52OxWKIdykOdPHlSJPVY1tLSIp4mFb5Ql8vFsT3NSMHc2EnsCkhyKqf2d1NX1xjtaIQYJh77FIQHKLLCT374GwLBbWz76gKM1u7oPoyk6Aj7rZw95OUH/+8vY3qelNGI5QUyoPdhtHhag0FShjn4MScnZ7xjeSS0Wi0ajYZgMBYfLRFiiU6nw+G0M3PmNCQpeje1gUCAxsYWGhuaEy6hQ+/ghd5hpLFyWzTQ7/7u7/Jv//ZvMTGMtL6+/ku3mXA19by8PCZPnszRo0ejHYoQ40KhEG2t7Zw4HrtDdBNBrFewHnw6PtZNuDZ1jUaDzWaLdhiCIAjjYsIldUEQYsvSpUuxWq3RDuOhTpw4EVejXyZc80tjY2PMtt0JwkQjSRJTpkzhzp07MTuh14PrHMe6CVdT93q9VFdXRzsMQRCEcTHhkrogCLGlubk5pjtL421akYRtfsnPz2fOnDlcv36dmpoa9fW+BQY6OjqiGJ0gJA5JktBqtaOe9Or06dOEw2H0ev2o3h8Oh8e1zfvJJ5/kjTfeiIkhjcORUEm9oKCAuXPn0tXVRWFhIZ2dnWzcuJFf/vKXajt6VlYWM2fOjNk1VAUhnuRPyuHx7auZNiMdo1n7yD9fkqChtoNjh8o4f/Yafn/kx/HHwqpHI5FQSX3btm2cOHGCTZs20dzcTEFBwaDB+hqNRqyfKggRMGfuDP7H/7eDtKl3UTR3iNacCiWKhq0vLuWTX8/l//y//0YgENmmnFh+2nUoCdWmHg6HsVgs6HQ6bDYbZ8+exW63o9F8/jVlWY6r4UmCEIt0Oh3/6f96mtRp5ciadhT8KASi84/kQzZVsPE5E8VzpkX8ux48eDCuEntCJfUPPviApKQkZFnmo48+QqfT8eGHHw44II2NjVy6dCmKUQpC/LPZraRP8qJI3miHotLbalm1ZkHE91tVVRVXw6ATqh2isbGRpqYm7ty5Q21t7YAO0j5+v5/GRjHLnSCMhdFoRNK4ox3GQFIIuy052lFE3ahr6pIkkZ+fjyRJFBYWMn/+fMxmM8uXL2fSpEmRjHFEFEWJu19WQRAiZBym05wxY0ZcLWc36qSu1Wp54YUXmD17Nr/3e7/H6tWrefHFF7FarWzatCmSMUZUUlISGRkZ0Q5DEIQ4sX79erTaRz+yZ7TG3KY+ZcoUzp8/zxtvvMH06dO5du0aRUVFMTuXQ2ZmJosXL452GIIgCONizG3qOp2OUCiELMtoNBo6OztpbGxk5syZnD9/Xt1Oo9EwY8aMUT9gECm5ublMnjyZuXPnRjUOQYhnaWkpUb+Wh5KWlhbxazszM5O5c+dG/eEjt3t4fRhjTuper5fMzEzsdjvBYBCdTofT6aSlpWXAdpIk4XQ6oz6Q32azYTKZSElJiWocghDPHE4nkib2Bs+Nx7V96tQp7HZ7RPc5GsNtAhpzUr9+/TqrV6+mqKiIQ4cOkZ+fTyAQGDTyJBwOc/r06bF+3JhptVrsdruYJkAQxiArO5Ov+7cTa8tH1NbWcuTIkWiHEVWjTuqyLFNVVUVDQwN/+Zd/iU6nw+Px8Mwzz3Do0KGYfcAnHA6LhC4IQsIaU1L/4IMPkGV5wKKsu3btiqunrwRBEL7IokWLuHjxYsxWVB80pkaxob6kz+eL6Wk0MzIymD59erTDEAQhTixcuHDAVCOxLn4ijRCLxcKMGTOiHYYgCMK4mHBJXRAEYSS6urqiHcKITLikHggE6O7ujnYYgiDEiY8++ijqY9RHIqEm9BqOhoaGQWPoBUEQHsbj8UQ7hBGZcDV1WZYJBCK/OoogCIkpnibzggmY1OPtAAmCEF2rVq0So19iWd88DoIgCMNRXFwsknosM5vNUZ3vXRAEYTxNuKQuCIIwEtXV1XG16M6EG/3i9/tpb2+PdhiCIMSJPXv2RDuEEZlwSb2+vp76+vpohyEIgjAuEiqpS5KkdmisX7+emTNncvr06QGLdQiCIIyEJEmi+SVaNm/ezLRp09DpdGi1Wo4fP87SpUsHzLDWN6Qxng6SIAjR89xzz/H+++/HzVOlCdVROmvWLHbt2oVGo+HIkSNDzq6Wm5vLokWLohShIAjxJt5WSUuopF5TU8PWrVux2Ww0NTUhyzLHjh0bMEWwXq8nIyMjilEKgiCMn4Rqfvnoo4+w2+089dRTtLW18etf/zru5m0QBCG2XL9+PW4WyIBxSOpms5lgMBiV9qdQKER7ezu/+tWvCAaD+P3+Qdu0tbVx9+7dRx6bIAjx6eTJk3HVBzfqpK7RaNi6dStHjhzhueeew+Fw8PHHH1NSUkJdXR1nzpyJZJwj8kUrL7lcLsrLyx9hNIIgxLN4SugwhjZ1jUZDcXExixYtwul0cvr0aV544QVu377Nxo0bxcRZgiAkBIvFEu0QRmTMHaVOp5N79+5RWVmJ1Wrl3r17mM1mcnNzIxFfxOl0OpKSkqIdhiDENanf/ya6HTt2oNPFT/djRCLtXyv3+Xy0tbWRnZ1NbW3t5x+k07Ft27aoJ9Tk5GTS09O5efNmVOMQhHjmcNgwJ5miHcYgRUVFvPjiixHd55o1a5AkiXA4HNH9jtRwF/cZc1Jva2tj+fLltLe309nZidVqJTs7e1DSDIfDHD9+POpTWE6ePJkZM2awf//+qMYhCPEsMzOdJ353NfpoB/KA+/fvR/zazsnJ4eDBg1/YV/coDPfzR53UFUVBlmUuXrxITk4Os2bN4je/+Q1z587l9u3bgxZrVRQlJibSslqtdHV10draGu1QBCFu6fRa5CjXXIfi9Xojfm0fOnRIfe4lHow6qcuyzJ49e/B6vbz99tvq6/n5+TFdC25paaGysjLaYQiCECcuXboU7RBGZEw19bKyskGvnzhxIqaHALndbu7cuRPtMARBEMZFxBu4YzmhC4IgjFR2dnZcDdFOqLlfhkOv12Oz2aIdhiAIcWL79u1otdpohzFsEy6p5+XlsXr16miHIQhCnIj2iL2Riq9oIySebqUEQRBGYkImddHuLwjCcH3wwQdRf/BoJOLn2dcIqaurG3L2RkEQhKE0NTVFO4QRmXA19UAgIBaeFgQhYU24pC4IgjAShYWFcdUPN+GSutPpjNkZJAVBiD3r168XQxpjWXJyMiUlJdEOQxCEOCGGNMaBeDtIgiBEj8/ni3YII5JQ2U2r1ZKbm4ter8dqtTJ9+vRBq5aEw+G4O0iCIETPzp07o7Lm8mjF/ZDGpKQkpk2bht/vR6fT8eqrr/L3f//3rFmzhkAgwPLly3njjTfUaTPr6+vFtLuCIAxbLEwZPhJxX1N/7LHHKCoq4nd+53eoqqri0qVLaLVaHA4Hx48fJzk5eUBzSygUwuPxRDFiQRCE8RP3Sd1ms1FRUUF3d7f6pGjfAh52u51wOCyeIBUEYdRKSkriqh8ufiJ9iGPHjlFaWkpaWhoAd+7coauriyNHjrB48WIOHz484BHftLQ0CgoKohWuIAhxZvny5XGV1OO+Tb26uprq6mrWrFlDOBzm9OnTQO/aqdevXx+0vc1mo7i4mLt37z7qUAVBEMbdmH5+kpKSgN51P5OTk9FqtRQWFpKcnByR4Ebi6NGjcdVDLQhCfGhra4t2CCMy6pq6Vqvl1Vdf5aOPPuLb3/42wWCQM2fOoNfr0Wq1vPfee5GMM2JCoRBerzfaYQhCwvH7wpw92kR3V4DFqzNJzzKPaj99XWCS1Ns/Vn/fTWZuEjqd5qHbjacPP/wwriqMo07qkiRhMpmYPXs2169f5+DBg/zH//gf+ed//mdee+01du3aRSAQiGSsEVFbWysm9BKEcVB920VjnYfl67OoquxSk7osK1y/0Ma9292UrkinpdFLQ40Hu1NP6YoMzh5tIuAPU7o8g+P76pky3U53V4DO9gAzS5J54x8qeOEb0/F6wtTd72HxqgzuVLrweUKs3JSNyTy+rcjBYHBc9x9pYy4No9GI2+3G4/Gg0+loaWmhs7OToqIirl27pm4nSRIpKSlx1eEgCMLQ0lJT0TwwH0reZCtVFS4unmxh0aoM9XVXZ4Br59vY+GQex/c1YDRrmVOayvULbRzdU09bsw+TWcu1C210dQSYPM3GrfJO/L4wzQ0eiuenYLbquHG1g6VrMzl9uIme7iDrHs/FaBoYQ5LZTHp6+iMpg0dtuD8uY07qwWAQi8WCXq9XH/DRarWDble0Wi0rVqxQ2+EFQYhfDocNo9E44LX2Vj9Fc51odRoO7q7ld14rAkAO97aTGM06ZFlBQkKj6W0z8XvDBP1h8qZYSMsw097sw+sJUVXpIhiQCQUVNFoJOayg1UmYzFoURUGnk7Da9INmT8yfNIkNGzZE9LvOnz+fq1evqvktWlpaWoa13ZiT+p07d3j11VeZMmUKZWVlZGRkYLFYuH379oDtQqEQO3fuHOvHjVl2djYpKSmUlZVFOxRBiFtZ2Zls+9p29P3GRNideg5/3IK7O8jchalcOdOK3x8mLdNEwQw7+z64z4Ll6ZRf7uDY3npS0k2s2pzNif0NtLX4mTbLSUaOmSSrDkUBU5KW1AwTiqLg6QnhTDFyYGcti1ZlUHu3B51+8F1/ZWUlb731VkS/q9Pp5J133ombZphRJ3VFUejs7OTWrVv8/d//PRaLhbt37/Lkk09y8uTJmC0Ak8mk/gAJghA5jmQjO17pfQYkEAhTfasbvUGDOUnH8g1Zaq367k0Xy9bmk5nbe9f++HOT1X3kTuqdq+nF35/+hZ81tcgxHl/hoeLpAcZRJ/VwOMxvfvMbwuEw9+/fV18/duwYPT09EQlOEIT4ZDBomTHbOeTflm/IwjzOnZuRdP/+/YmR1IEhk3djY+NYdjnuXC4Xzc3N0Q5DECYsm90Q7RBGZO/evWLh6VjW1tZGR0dHtMMQBCFOxFNChwSY+2U0ot2LLQhC/NDr9dEOYUQmXFLXaDRxd5AEQYiebdu2iTVKY1l2djZLly6NdhiCIMSJrKysQePhY9mES+oGgwGH49EOhxIEQXhUJlxSFwRBGInKysqJM6QxHrW3t1NTUxPtMARBiBOHDx+OdggjMuFq6l1dXVy9ejXaYQiCIIyLCZfUBUEQRsJut0c7hBGZcEldDGkUBGEknnrqKXS6+GmpnnBJPT8/n3Xr1kU7DEEQ4oTZPLoVnKIloZJ6cnIyzz33HE6nk9zcXJ599lkMhoHzTGg0mkGvCYIgJIr4uad4iKlTp7JmzRpkWebw4cNMnToVh8OBwWCguLiYTz/9NCaX1RMEIT4cOnQoruZ/ifua+sqVKzl37hyZmZk0NTVRV1eHoihUVVXR3t4+aPvm5mYqKyujEKkgCPHo5s2bcTVOPe6TeldXF8XFxUM+JTrUgXC73YNWZRIEQUgUcZ/U9+3bR1lZGW63G+id+7ipqYlwOMx7772H1+uNcoSCIMSzzMzMiT33y6P+8l6vl/Lycv7lX/6FQCBAS0sLfr8f6F2w48Fpdi0WC8nJyUPtShAEYZAnnnhiYszSKEkSJSUl6HQ6VqxYweOPP05ycjKbNm2iqKgokjEOS0tLy7DavTIyMliyZMkjiEgQhEQQb8+1jDqpa7VaHnvsMebPn8/mzZux2Wy88soreL1eNm/eHNO3K/H0IIEgCNEVTyNfIALNL9nZ2Vy7do29e/eSm5tLRUUFeXl5MdvEoSgKoVAo2mEIghAnJtwapRqNBlmW1aaP7u5uGhoaKCws5OzZs+p2Wq2WJUuWYDQax/qRY2I2m0lKShJPlQrCGKSkOKN+LQ9lvJ4Ynzp1asT3OVJdXV3D2m7MSb2np4fCwkKys7Px+XyYTCYyMzO5d+/egO0URaG9vT3u2qcEQRiKTFjOinYQg3g9HlpbW6MdxrjoG+H3Zcac1C9fvszChQt5+eWX+eijj5g2bRptbW00NzcP2E6WZfHQjyAkiKzsTELB6dEOY5DWtjauX78e0X1OmTKFe/fuxc0DSKNO6rIsc/HiRdrb2/mbv/kboLc2/pWvfIX9+/fHbAE4HA5MJhNNTU3RDkUQhDjw2GOP8frrr8dNX9yoO0plWebgwYMoiqL+A7B7926uXbsWsQAjLSUlhUWLFkU7DEEQ4kQsj+QbSsTH9sVTL7EgCMKX8Xg80Q5hROJ+moCRUhRF/PAIgjBs77//ftw0vUACTL07UrW1taI9XRCEYevp6Yl2CCMy4ZJ6KBSKq19dQRCEkZhwzS+CIAgjsWzZMjSa+EmV8RNphKSlpVFQUBDtMARBiBPz5s0TST2W2Ww2Zs2aFe0wBEEQxsWES+oQf+NOBUGInqGWxYxlEy6pe71eXC5XtMMQBCFOfPjhh3E1uGLCjX5pbGykra0t2mEIghAnAoFAtEMYkQlXUwcIBoPRDkEQhDgRb821CZfUjUYjkiSh1WpJSkoacm3BeOrJFgQhutavXz8x1iiNFVqtFofDgdVqZfr06fzFX/wFubm5bN++na997Ws88cQTA35pMzMzKS0tjWLEgiDEk+nTp8dVbT3u29TXrFnDjBkzyM7O5vvf/z537txBp9Nx5coVqqqqmDNnzoDtk5KSyMzMjFK0giAI4yvua+qTJk3i4MGDuFwugsEggUAAWZZxu90sX76cffv2xezc7oIgxL76+vq4yiFxn9SvXbvGY489Rk5ODgAdHR2Ew2G2bt2Kw+GgtLR0QBt6d3e3GP0iCMKw7d69O65mdo375peLFy9y+fJlnn/+eWRZ5pNPPkFRFN544w0kSRqwgAdAa2trwq5hKAhC5MmyHO0QRiTiNfXk5GRMJlOkd/uFZFnmrbfeIhgMqglcURRkWY6r2yZBEGKP0WiMdggjMuqkrtVqefnll0lJSeG73/0u//2//3cWLFjApk2bWL58eSRjFARBiJodO3ag08VPo8aok7okSeTk5LBgwQJcLhdvvfUWX/nKV7h69Spr166N2XGdubm5rF69OtphCIIQJ5KTk6MdwoiM+efHarXS3NxMQ0MDZrOZuro6FEVhypQp3Llz5/MNFQX9WD8sAix6PSkWC3rRLCMIoxar149GliMemzYcxgBIUf7Ow/30MSd1WZYxGAxqp2QoFKKnpwe73T7og77i85EU5YJJa24mW6PB7vVGNQ5BiGeOjg6SYm2SK1lmZkMDL0b42k7fuZPnu7uRo5y7mof5JPyYk3pDQwNPPPEEGo2G+vp6nE4n6enpVFZWDtguBOw2mYj2c1kOnY58s5nrZnOUIxGE+JXpdLJZp8MW7UD602i4mZXFO5G+thsb4REP/hjKcAdVjjqpK4pCIBDg6tWrmM1mUlJS+PWvf83SpUu5evUqHo9n4BskCd9oPyyCvC4XTeXlKHH02K8gxBqfRjPs5oBHKaTV4p3g1/aok3o4HObdd98lEAhw7Ngx9fX79+9z4cKFiAQ3XsQwR0EYLDU1leTkZJqamgiHwxgMBrq7u0lPTwd6H+xLTk6Ou0Ujxspms9Hd3R3x/Wq1WnJyctBqtdTV1ZGSkkJLSwtOp5NwOIzZbKa9vZ3U1FQaGxuHnbfG1PxSV1c36LXr16+PZZfjzmg0otVqB99JCMIEZrPZ+Pf//t/j9/sxm82cP3+evLw8PvnkE/7wD/+QqqoqJEli+vTp/NVf/VW0w32knn76aX79619HfKGMGTNmsGPHDpKSkjh16hSrVq3if//v/80LL7xARUUFGzdupKqqCr1ez09/+tNhJ/W4nyZgpHJycsQ4ekF4QN8AB4PBQFFREWazecD0Grt372bbtm0cPnyYzs7Oz16NhfFsA4VCkV/QwjxO/W/BYJBwOIzVamXKlClqeWs0Gnp6eti/fz9PPfUUO3fuHNFTrRMuqQOP/IlXQYh1WVlZzJgxg4MHD+L3+/H7/aSkpDB58mQMBgNTp06lubmZ4uJidDodri4XAXcSRH3ow+eUkJWamvvRDmPYlixZQltbG1euXEGWZYLBIAUFBWRkZKDVapk9ezZ1dXUUFhaOaL8TMqmLNnVBGKihoYHr16+zatUqLl26xNWrV/F6vaxYsYLy8nImTZrE3/zN39DY2Ehqaio+n48je2pRAqnExOWkaGm/n8+xw1cjvuvjx4+Py/wvJ06cICUlBbvdzs2bN/n444/ZvHkzLpcLWZZxuVz89V//Nbm5uej1w78rkpRhZri+WRDjndVqxel0UltbG+1QBCGuWW1J/MEf7+CxZzLQGLvQaKJRa1cIB000ViXxg+8d4Ozpqwldaauvr//SbSZcUhcEIXKMRiPp6SkUFk0myWx55J8fDAaor2umtqaBri7XI//8R00kdUEQhDGQJIn8/Hxqampi4g5gOEl9QrapZ2Zmxt0kPYIgPHq5ubksWLAg2mGMSPzMJxlBiqKwatUqbty4QVNTk/pggSRJ2O12dYZJt9uN3+8HeocZORwOdQFal8uljls1mUwkJSWp+3a5XOpKKUlJSepoG1mW6erqUn/xbTab2gHi9/txu91qHDabTZ3u0+v14v1sPgtJknA4HOrwp56eHgKB3mFcer0em82mxtHd3T1kjACdnZ1q50//GIPB4IAHLaxWKwaDYVCMAA6HQy0rj8eDz9f7zLBOpxsw90//GA0GA1arVf3bw8oxHA7T1dWlbtc/xkAgQE9Pj/q3h5Xjg8fswRhtNpv6t4fF+OAx6x9jKBSiu7tb/ZvFYlHn3u5fjg8eM5/Ppz4nodVqsdvtD42xrxwVRaGrq0s9Zg/G2Ne59mXl2P+Y9S9HjUaD3W4fMkaNRoPT6RzymOn1eqxWqzr3U/9z/4vKsf8x61+OD577D5aj0+kc8pj1L8cHz/0vKsf+xywcDuNyudQ4CgsLWbJkCXv37o2JWvpwTcik3tzczPHjx1m6dCl2u51Lly6hKAo2m43Nmzej1+tRFIWzZ89SVVUFQHp6OuvWrVNP+v3799PS0gLA5MmTKS0tBXp/CPbs2aOe2LNmzWLGjBkAtLe3c+DAAfVkKy0tVZu1qqqqOHPmDNDbTrl+/Xr1wrx69SplZWUA2O12Nm7cqCbakydPcu/ePaD3DqRvWuFAIMDevXvVC6KgoID58+cDvRfDvn371ORRXFzM9OnTAWhsbOTQoUNA74WyatUq9a7m9u3bnDt3Dugdu7t27Voslt521CtXrlBeXg70Jo7HHnsM6L2YDx48qJZVTk4Oy5YtQ5Ik/H4/+/fvx+VyDYqxq6tLXcUKeod/ZWdnA70PvfWNSNDr9axcuVKN8c6dO5w9e1aNcfPmzWoSO378ODU1NUDv05Nr1qxBp9MRCoU4fPiwGmNWVhYrV64EepPbrl27CAaDAMybN4+pU6cC0NbWxqFDhwgGg2i1WhYtWqQez4aGBg4fPgz0JpX169erP0oXL15U50ayWq2sX78eo9GILMucOnWK+/d7h+U5nU42b94M9Cacjz/+WE3CRUVF6qLqfWOavV4vkiRRUlLCtGnTgN4f708//VRNVCtWrFATdEVFBZcuXVLPudWrV2O1WlEUhcuXL1NRUQH0/qBu2rRJLcd9+/apq4fl5+ezZMmSIY/n9OnTKSkpAXorJrt27VLP/UWLFpGVlQVATU0NJ0+eRFEUdDody5cvJyUlBYDKykouXrwI9P6A9JXVg8czPT2dNWvWoNVqCYVCHDlyhObmZqB3HeOlS5eq5bh79271h3/27NlqWbW2tnLw4EHC4TCSJKHRaPjwww8HVCDigWhTFwRBiBOiTV0QBGGCEUldEAQhgYikLgiCkEBEUhcEQUggIqkLgiAkEJHUBUEQEohI6oIgCAlEJHVBEIQEIpK6IAhCAhFJXRAEIYGIpC4IgpBARFIXBEFIICKpC4IgJBCR1AVBEBLIsKfeFQRBEGKfqKkLgiAkEJHUBUEQEohI6oIgCAlEJHVBEIQEIpK6IAhCAhFJXRAEIYGIpC4IgpBARFIXBEFIICKpC4IgJJD/HwjWdEbEYDUxAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('circle4.png')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "6bd34621-0458-4a1b-ac69-62892bcba54c", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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zWj37t2EQiFqa2t56KGHeOqppxgZGWHVqlX5c9xisRjJZNJ3J4tffHJ+Z2cnTz75ZP53yHYrtLW18dxzzzE+Pp4/ipZMJn0XAoXr43kee/fuZdmyZRhjuPPOO3nzzTfp6OggFouxevVqXnrpJaLRKK7r5mdc8evnk0gk+O///m8aGxtpbGxk06ZNPPHEE4yNjbF+/XpSqRTpdDq/rZXLAaj5oDCbgcLxV57nYa2lvr6eM2fOMD4+TltbG3fffTfvv/8+Dz/8MI7jcP78eV5++WVSqZSvdhhgUk0rk8kQCoW46667sNbS2NjICy+8QDwe56abbuLGG28kk8lw8OBBDh065LtAK+R5HqdOnaKqqoqqqio6OzupqanhN3/zNzlx4gQ33ngjzc3NZDIZXn31Vfr6/DcxZKFkMkl3dzcbN26kp6eHeDzO2rVrueOOO/jggw947LHHMMbQ39/Pq6++mp/9wm/b23xTM3OGck1NyIZAT08P0WiUxx57jNtvv50PPviAbdu28f777/PEE08QiURoaWkpcamnVth0huyRtIMHD7J582b27dtHPB7PDwd49tlneeGFF7j55pvznex+U7g+uSmHTpw4wUMPPcSjjz6aH+ycSCR44oknOHjwIDfffDPg3yZnYSB1dnayYMECvvOd77Bjxw7279/Ptm3beOedd/j5z39ObW0tixcvLmFpS0s1szmKx+M8//zzVFdXk0wmefTRR3njjTc4fvw4NTU11NfXMzo6WjbfkqdPn+bnP/851dXVtLa2sn79ep566inGx8fZtGkT4+PjZdGUyYXTO++8Q21tLalUiq1bt+bPEgBoa2vj9OnTpSzmtBljGB8f57nnniMWi5FKpXjsscd49dVX6ejoYMGCBfkplqZ7PdmgUc1sDnIBlU6nGRwcJBqNYq2lvb09P4L78OHDDA4OltXGdfbsWdrb21m5ciWffvop8XictrY2brvtNt54442yCLPC2ubQ0FB+Hfbv348xhltvvZWamhoOHTpU4pJOT277SSaT+W0tnU7T1dWVb0Lv378/EPOrzZZqZrN08fRDxhhGRkZIJBLcfffdtLS0cPTo0fxIbb+bqubY0dHBHXfcwaJFi2hububFF1/0ff9SoYvnumtvb+f2228nHA6TyWTYvXt32Ux8efE0PSMjI2QyGe6++26WLFnCwYMH+fjjj6d8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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('circle4hist.jpg')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "5216c457-12f6-451e-92a8-d43c5a15e98f", + "metadata": {}, + "source": [ + "## Line 8 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "c6ebdc89-ba16-41c4-b623-7862a0ae29af", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('line8.png')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "6dffee97-669a-4c03-a506-55c8ebbe0be1", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('line8hist.jpg')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "8cb5df08-342e-4cfd-b65e-42a8528b6969", + "metadata": {}, + "source": [ + "## Line 16 nodes\n", + "![alt text](line16.png)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "62827e5d-82f4-433e-80ea-7eecf1dedbfb", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('line16.png')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "a29b9882-972f-4f52-b4d2-0eb4d4ee866e", + "metadata": {}, + "source": [ + "eof" + ] + } + ], + "metadata": {} +} From 76f805dff9f2ffde126775c745028a9b759f76a1 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Fri, 26 Jul 2024 22:33:53 +0200 Subject: [PATCH 70/83] Add files via upload --- community/womanium/assignments/hw4-5-4.ipynb | 632 +++++++++++++++++++ 1 file changed, 632 insertions(+) create mode 100644 community/womanium/assignments/hw4-5-4.ipynb diff --git a/community/womanium/assignments/hw4-5-4.ipynb b/community/womanium/assignments/hw4-5-4.ipynb new file mode 100644 index 00000000..31b88b32 --- /dev/null +++ b/community/womanium/assignments/hw4-5-4.ipynb @@ -0,0 +1,632 @@ +{ + "metadata": { + "kernelspec": { + "name": "python", + "display_name": "Python (Pyodide)", + "language": "python" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.9" + } + }, + "nbformat_minor": 5, + "nbformat": 4, + "cells": [ + { + "id": "b7f74e3a-7dae-4939-a2ef-0ff82d8eadd0", + "cell_type": "markdown", + "source": "\n# Assignment 6.12 - womanium 2024\n", + "metadata": {} + }, + { + "id": "adc17ffc-b892-4a94-bebb-4ba74d208a9e", + "cell_type": "markdown", + "source": "## Advanced Algorithms Design:\n## Quantum random walk", + "metadata": { + "tags": [] + } + }, + { + "id": "2060a234-6a10-453e-b4a2-7b644128c3e9", + "cell_type": "markdown", + "source": "Following the example of a quantum walk operator for \nthe case of a circle with 4 nodes, a quantum walk \noperator is designed for the case of a line with 16 \nnodes.\n\nUsing the file quantum_walk_circle_example.py as a \ntemplate, both the case of a circle and of a line with \n4, 8, and 16 nodes are implemented in this notebook.\n", + "metadata": { + "tags": [] + } + }, + { + "id": "fe7f2080-a6eb-4aa5-8865-97aa9acd5c14", + "cell_type": "markdown", + "source": "## Environment and imports", + "metadata": {} + }, + { + "id": "fd9eebc7-b78b-4aa7-8614-fbd7dc07f452", + "cell_type": "code", + "source": "%pip install -U -q classiq", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", + "qiskit-ibm-runtime 0.25.0 requires pydantic>=2.5.0, but you have pydantic 1.10.17 which is incompatible.\n", + "qc-grader 0.19.7 requires networkx==3.2.1, but you have networkx 2.8.8 which is incompatible.\u001b[0m\u001b[31m\n", + "\u001b[0mNote: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "execution_count": 10 + }, + { + "id": "202628d6-3fe3-47fa-8a15-04b7fd9716f4", + "cell_type": "code", + "source": "from classiq import *", + "metadata": { + "tags": [] + }, + "outputs": [], + "execution_count": 2 + }, + { + "id": "99432d7f-12fd-4a46-bbf0-cf3651c04076", + "cell_type": "code", + "source": "import matplotlib.pyplot as plt\nimport matplotlib.image as mpimg", + "metadata": { + "tags": [] + }, + "outputs": [], + "execution_count": null + }, + { + "id": "59927721-34b7-49e8-8b88-6a75663aef7a", + "cell_type": "markdown", + "source": "## Implementation", + "metadata": {} + }, + { + "id": "bbe3dfa3-2265-44af-b708-9a0ad189f5bf", + "cell_type": "markdown", + "source": "\n## Common functions for circles or lines\n", + "metadata": {} + }, + { + "id": "425c8fd2-f8f5-409b-a569-d923819437c4", + "cell_type": "code", + "source": "# Prepares the minus state (aux qubit) for the diffuzer oracle\n@qfunc\ndef prepare_minus(x: QBit):\n X(x)\n H(x)\n\n# x: current node\n@qfunc\ndef diffuzer_oracle(aux: Output[QNum],x:QNum):\n aux^=(x!=0)\n\n# Zero diffuser using Grover's algorithm technique\n# x: current node \n@qfunc\ndef zero_diffuzer(x: QNum):\n aux = QNum('aux')\n allocate(1,aux)\n within_apply(compute=lambda: prepare_minus(aux),\n action=lambda: diffuzer_oracle)\n\n# non-zero probabilities for allowable transitions\n# @qfunc\n# def W_iteration\n\n# Iterates over all possible positions and applies \n# the W_iteration for each position.\n@qfunc \ndef W_operator(vertices:QNum, adjacent_vertices: QNum):\n for i in range(num_nodes):\n W_iteration(i,vertices,adjacent_vertices)\n\n# Edge oracle for checking adjacency of 2 vertices\n#\n#@qfunc\n#def edge_oracle\n\n# Swaps the contents of two quantum registers: moves the walker\n@qfunc \ndef bitwise_swap(x: QArray[QBit], y:QArray[QBit]):\n repeat(count= x.len,\n iteration= lambda i: SWAP(x[i],y[i]))\n\n# shift operator moving the walker if vertices adjacent\n@qfunc \ndef S_operator(vertices:QNum, adjacent_vertices: QNum):\n res = QNum('res')\n edge_oracle(res,vertices,adjacent_vertices)\n control(ctrl= res==1,\n operand= lambda: bitwise_swap(vertices,adjacent_vertices))\n", + "metadata": { + "tags": [] + }, + "outputs": [], + "execution_count": 3 + }, + { + "id": "9761696b-cefe-4ea0-9c91-ebd33af62e22", + "cell_type": "markdown", + "source": "## Circle-specific functions\n\nHere we have the function W_iteration with the \nprobability of 0.5 going in either direction.\n\nWhat is special about a random walk on a circle is that \nthe node (0) and the node (num_nodes-1) are adjacent. \nThis fact is taken care of in the function edge_oracle.", + "metadata": {} + }, + { + "id": "5ab73e30-56fd-4028-bb13-e2f883a4e3ae", + "cell_type": "code", + "source": "\n# non-zero probabilities for allowable transitions\ndef W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n prob = [0] * num_nodes\n prob[(i+1)% num_nodes]=0.5\n prob[(i-1)% num_nodes]=0.5\n print(f'State ={i}, prob vec ={prob}')\n \n control(ctrl=vertices==i,\n operand=lambda: within_apply(\n compute= lambda: \n inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n action= lambda: \n zero_diffuzer(adjacent_vertices)))\n \n# Edge oracle for checking adjacency of two vertices \n@qfunc\ndef edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n diff = vertices - adjacent_vertices\n mod = diff%num_nodes\n res |= (mod == 1) | (mod == num_nodes-1)\n", + "metadata": { + "tags": [] + }, + "outputs": [], + "execution_count": 4 + }, + { + "id": "423cf377-1bc7-4637-855c-b82ced39cca9", + "cell_type": "markdown", + "source": "## Circle with 4 nodes", + "metadata": {} + }, + { + "id": "e39e695c-cc7d-4983-ba7b-2d076262a66b", + "cell_type": "code", + "source": "# Circle with 4 Nodes \n\n# Size of the register required for the number of nodes\nsize = 2\nnum_nodes = 2**size\n", + "metadata": { + "tags": [] + }, + "outputs": [], + "execution_count": 5 + }, + { + "id": "a863aa31-dc65-4ad4-9985-4fca062ab269", + "cell_type": "code", + "source": "# Main quantum walk operator function\n# applies the W and S operators after initializing\n# vertices\n@qfunc \ndef main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n\n allocate(size,vertices)\n hadamard_transform(vertices)\n allocate(size,adjacent_vertices)\n\n W_operator(vertices,adjacent_vertices)\n S_operator(vertices,adjacent_vertices)", + "metadata": { + "tags": [] + }, + "outputs": [], + "execution_count": 6 + }, + { + "id": "1427b784-9701-4338-aec2-5cb5566a6d32", + "cell_type": "code", + "source": "qmod = create_model(main)\nqprog = synthesize(qmod)\n#show(qprog)", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 0.5, 0, 0.5]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5]\n", + "State=3, prob vec =[0.5, 0, 0.5, 0]\n" + ] + } + ], + "execution_count": 7 + }, + { + "id": "22cec3d3-aef0-46c6-9de2-74ee40d81b96", + "cell_type": "code", + "source": "write_qmod(qmod,\"random4\")", + "metadata": { + "tags": [] + }, + "outputs": [], + "execution_count": 32 + }, + { + "id": "0c9a5e9c-ed50-44d1-b9ed-665f96274a92", + "cell_type": "markdown", + "source": "## Circle with 8 nodes", + "metadata": { + "tags": [] + } + }, + { + "id": "a5063b48-425c-4d73-8d6e-8b575cc61be3", + "cell_type": "code", + "source": "# Circle with 8 Nodes \n\n# Size of the register required for the number of nodes\nsize = 3\nnum_nodes = 8\n", + "metadata": { + "tags": [] + }, + "outputs": [], + "execution_count": 8 + }, + { + "id": "d137cf61-e92b-46d4-870e-4d1fc021650c", + "cell_type": "code", + "source": "# Main quantum walk operator function\n@qfunc \ndef main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n\n allocate(size,vertices)\n hadamard_transform(vertices)\n allocate(size,adjacent_vertices)\n\n W_operator(vertices,adjacent_vertices)\n S_operator(vertices,adjacent_vertices)", + "metadata": { + "tags": [] + }, + "outputs": [], + "execution_count": 9 + }, + { + "id": "94168a88-cdb4-411c-a162-52adf0c622bb", + "cell_type": "code", + "source": "qmod = create_model(main)\nqprog = synthesize(qmod)\n#show(qprog)", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0.5]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=7, prob vec =[0.5, 0, 0, 0, 0, 0, 0.5, 0]\n" + ] + } + ], + "execution_count": 10 + }, + { + "id": "7458e3ac-0e87-49e2-9139-59ee31fc27f4", + "cell_type": "markdown", + "source": "## Circle with 16 nodes", + "metadata": {} + }, + { + "id": "7e7ad59c-80ca-4452-af10-883711c9b104", + "cell_type": "code", + "source": "# Circle with 16 Nodes \n\n# Size of the register required for the number of nodes\nsize = 4\nnum_nodes = 16\n", + "metadata": { + "tags": [] + }, + "outputs": [], + "execution_count": 11 + }, + { + "id": "d3444344-5117-4021-9d15-1476582bf61d", + "cell_type": "code", + "source": "# Main quantum walk function\n@qfunc \ndef main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n\n allocate(size,vertices)\n hadamard_transform(vertices)\n allocate(size,adjacent_vertices)\n\n W_operator(vertices,adjacent_vertices)\n S_operator(vertices,adjacent_vertices)", + "metadata": { + "tags": [] + }, + "outputs": [], + "execution_count": 12 + }, + { + "id": "d30601d3-5b4f-4b23-af9d-f93d0a4f6777", + "cell_type": "code", + "source": "qmod = create_model(main)\nqprog = synthesize(qmod)\n#show(qprog)", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", + "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", + "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=15, prob vec =[0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0]\n" + ] + } + ], + "execution_count": 13 + }, + { + "id": "ccfdf941-9d91-402f-a200-ccc266f73e99", + "cell_type": "markdown", + "source": "## Line-specific functions\nThe function W_iteration defines the transition \nprobabilities for a line. At the beginning and at the \nend of the line the walker can go only in one direction \n(probability = 1). For all other nodes the probability \ngoing in either direction is 0.5.\n\nHere the function edge_oracle just has to check whether \nthe vertices are adjacent (distance = 1).", + "metadata": {} + }, + { + "id": "47e777d7-6527-4901-a034-951c624037e4", + "cell_type": "code", + "source": "\n# non-zero probabilities for allowable probabilities\ndef W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n prob = [0] * (num_nodes)\n if i == 0:\n prob[i + 1] = 1.0\n elif i == (num_nodes) -1:\n prob[i - 1] = 1.0\n else:\n prob[i - 1] = 0.5\n prob[i + 1] = 0.5\n print(f'State ={i}, prob vec ={prob}')\n \n control(ctrl=vertices==i,\n operand=lambda: within_apply(\n compute= lambda: \n inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n action= lambda: \n zero_diffuzer(adjacent_vertices)))\n\n\n# Edge oracle for checking adjacency of two vertices\n@qfunc\ndef edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n diff = vertices - adjacent_vertices\n res |= (diff == 1) | (diff == -1)\n", + "metadata": { + "tags": [] + }, + "outputs": [], + "execution_count": 14 + }, + { + "id": "07488d17-7cac-4e36-8335-e3303cff8efe", + "cell_type": "markdown", + "source": "## Line with 4 nodes", + "metadata": {} + }, + { + "id": "92d3f78c-ee23-45bf-acba-6d0ff0608847", + "cell_type": "code", + "source": "# Line with 4 Nodes\n\n# Register size to accomodate the number of vertices\nsize = 2\nnum_nodes = 2**size\n", + "metadata": { + "tags": [] + }, + "outputs": [], + "execution_count": 15 + }, + { + "id": "613c61cc-10ea-4950-a262-3dd572c8701c", + "cell_type": "code", + "source": "# Main quantum walk function\n@qfunc \ndef main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n\n allocate(size,vertices)\n hadamard_transform(vertices)\n allocate(size,adjacent_vertices)\n\n W_operator(vertices,adjacent_vertices)\n S_operator(vertices,adjacent_vertices)", + "metadata": { + "tags": [] + }, + "outputs": [], + "execution_count": 16 + }, + { + "id": "46fca7f3-3106-416d-a3f8-379f7095f8fa", + "cell_type": "code", + "source": "qmod = create_model(main)\nqprog = synthesize(qmod)\n#show(qprog)", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 1.0, 0, 0]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5]\n", + "State=3, prob vec =[0, 0, 1.0, 0]\n" + ] + } + ], + "execution_count": 17 + }, + { + "id": "9dd17d8c-83dd-463d-b155-9b8c949f97d1", + "cell_type": "code", + "source": "write_qmod(qmod,\"random4\")", + "metadata": { + "tags": [] + }, + "outputs": [], + "execution_count": 29 + }, + { + "id": "cfbc239f-2bfb-496a-a752-1a84f657ac3f", + "cell_type": "markdown", + "source": "## Line with 8 nodes", + "metadata": { + "tags": [] + } + }, + { + "id": "08283335-a49f-4d6e-a702-fb76ab01724b", + "cell_type": "code", + "source": "# Line with 8 Nodes\n\n# Register size to accomodate the number of vertices\nsize = 3\nnum_nodes = 2**size\n", + "metadata": { + "tags": [] + }, + "outputs": [], + "execution_count": 18 + }, + { + "id": "07a57ceb-c1da-47d7-8d6b-45e18667d747", + "cell_type": "code", + "source": "# Main quantum walk function\n@qfunc \ndef main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n\n allocate(size,vertices)\n hadamard_transform(vertices)\n allocate(size,adjacent_vertices)\n\n W_operator(vertices,adjacent_vertices)\n S_operator(vertices,adjacent_vertices)", + "metadata": { + "tags": [] + }, + "outputs": [], + "execution_count": 19 + }, + { + "id": "fb711141-eadd-4ac5-bb1d-fbd31bb71f8f", + "cell_type": "code", + "source": "qmod = create_model(main)\nqprog = synthesize(qmod)\n#show(qprog)", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 1.0, 0]\n" + ] + } + ], + "execution_count": 20 + }, + { + "id": "7b486184-7850-4c58-baac-9e89a942e059", + "cell_type": "markdown", + "source": "## Line with 16 nodes", + "metadata": { + "tags": [] + } + }, + { + "id": "52ccbff2-f15f-4fe2-86fd-6e1d0128f428", + "cell_type": "code", + "source": "# Line with 16 Nodes\n\n# Register size to accomodate the number of vertices\nsize = 4\nnum_nodes = 2**size\n", + "metadata": { + "tags": [] + }, + "outputs": [], + "execution_count": 21 + }, + { + "id": "e773bbb1-e532-477e-8891-c47f8f4f1f8d", + "cell_type": "code", + "source": "# Main quantum walk function\n@qfunc \ndef main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n\n allocate(size,vertices)\n hadamard_transform(vertices)\n allocate(size,adjacent_vertices)\n\n W_operator(vertices,adjacent_vertices)\n S_operator(vertices,adjacent_vertices)", + "metadata": { + "tags": [] + }, + "outputs": [], + "execution_count": 22 + }, + { + "id": "c3833a55-49af-4214-be22-5b52eaa22ba6", + "cell_type": "code", + "source": "qmod = create_model(main)\nqprog = synthesize(qmod)\n#show(qprog)", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", + "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", + "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=15, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0, 0]\n" + ] + } + ], + "execution_count": 23 + }, + { + "id": "4b28d548-febf-43b3-9271-6cab28fd2cbb", + "cell_type": "markdown", + "source": "# Results", + "metadata": {} + }, + { + "id": "b7d6c2a8-063f-4ffe-bf3c-18212aa1d57f", + "cell_type": "markdown", + "source": "## Number of qubits vs. nodes\n\n| random walk | num_nodes | transpiled qubits |\n| :- | :-: | :-: |\n| circle | 4 | 13 |\n| circle | 8 | 22|\n| circle | 16 | 33 |\n| line | 4 | 17 |\n| line | 8 | 25 |\n| line | 16 | 37 |\n\nHere we see that the more nodes we have, the more \ntranspiled qubits are going to be used. Lines need more \nqubits than circles.", + "metadata": { + "jp-MarkdownHeadingCollapsed": true, + "tags": [] + } + }, + { + "id": "2d8f26a8-18aa-4dda-a3ed-a3974e0184b9", + "cell_type": "markdown", + "source": "## Circle 4 nodes", + "metadata": {} + }, + { + "id": "335019e0-e185-41d5-b894-6116ada649d6", + "cell_type": "code", + "source": "import matplotlib.pyplot as plt\nimport matplotlib.image as mpimg\n\nimg = mpimg.imread('circle4.png')\nplt.imshow(img)\nplt.axis('off') # Turn off axis numbers\nplt.show()", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "execution_count": 24 + }, + { + "id": "6bd34621-0458-4a1b-ac69-62892bcba54c", + "cell_type": "code", + "source": "import matplotlib.pyplot as plt\nimport matplotlib.image as mpimg\n\nimg = mpimg.imread('circle4hist.jpg')\nplt.imshow(img)\nplt.axis('off') # Turn off axis numbers\nplt.show()", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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zWj37t2EQiFqa2t56KGHeOqppxgZGWHVqlX5c9xisRjJZNJ3J4tffHJ+Z2cnTz75ZP53yHYrtLW18dxzzzE+Pp4/ipZMJn0XAoXr43kee/fuZdmyZRhjuPPOO3nzzTfp6OggFouxevVqXnrpJaLRKK7r5mdc8evnk0gk+O///m8aGxtpbGxk06ZNPPHEE4yNjbF+/XpSqRTpdDq/rZXLAaj5oDCbgcLxV57nYa2lvr6eM2fOMD4+TltbG3fffTfvv/8+Dz/8MI7jcP78eV5++WVSqZSvdhhgUk0rk8kQCoW46667sNbS2NjICy+8QDwe56abbuLGG28kk8lw8OBBDh065LtAK+R5HqdOnaKqqoqqqio6OzupqanhN3/zNzlx4gQ33ngjzc3NZDIZXn31Vfr6/DcxZKFkMkl3dzcbN26kp6eHeDzO2rVrueOOO/jggw947LHHMMbQ39/Pq6++mp/9wm/b23xTM3OGck1NyIZAT08P0WiUxx57jNtvv50PPviAbdu28f777/PEE08QiURoaWkpcamnVth0huyRtIMHD7J582b27dtHPB7PDwd49tlneeGFF7j55pvznex+U7g+uSmHTpw4wUMPPcSjjz6aH+ycSCR44oknOHjwIDfffDPg3yZnYSB1dnayYMECvvOd77Bjxw7279/Ptm3beOedd/j5z39ObW0tixcvLmFpS0s1szmKx+M8//zzVFdXk0wmefTRR3njjTc4fvw4NTU11NfXMzo6WjbfkqdPn+bnP/851dXVtLa2sn79ep566inGx8fZtGkT4+PjZdGUyYXTO++8Q21tLalUiq1bt+bPEgBoa2vj9OnTpSzmtBljGB8f57nnniMWi5FKpXjsscd49dVX6ejoYMGCBfkplqZ7PdmgUc1sDnIBlU6nGRwcJBqNYq2lvb09P4L78OHDDA4OltXGdfbsWdrb21m5ciWffvop8XictrY2brvtNt54442yCLPC2ubQ0FB+Hfbv348xhltvvZWamhoOHTpU4pJOT277SSaT+W0tnU7T1dWVb0Lv378/EPOrzZZqZrN08fRDxhhGRkZIJBLcfffdtLS0cPTo0fxIbb+bqubY0dHBHXfcwaJFi2hububFF1/0ff9SoYvnumtvb+f2228nHA6TyWTYvXt32Ux8efE0PSMjI2QyGe6++26WLFnCwYMH+fjjj6d8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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "execution_count": 25 + }, + { + "id": "5216c457-12f6-451e-92a8-d43c5a15e98f", + "cell_type": "markdown", + "source": "## Line 8 nodes", + "metadata": {} + }, + { + "id": "c6ebdc89-ba16-41c4-b623-7862a0ae29af", + "cell_type": "code", + "source": "import matplotlib.pyplot as plt\nimport matplotlib.image as mpimg\n\nimg = mpimg.imread('line8.png')\nplt.imshow(img)\nplt.axis('off') # Turn off axis numbers\nplt.show()", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "execution_count": 26 + }, + { + "id": "6dffee97-669a-4c03-a506-55c8ebbe0be1", + "cell_type": "code", + "source": "import matplotlib.pyplot as plt\nimport matplotlib.image as mpimg\n\nimg = mpimg.imread('line8hist.jpg')\nplt.imshow(img)\nplt.axis('off') # Turn off axis numbers\nplt.show()", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "execution_count": 27 + }, + { + "id": "8cb5df08-342e-4cfd-b65e-42a8528b6969", + "cell_type": "markdown", + "source": "## Line 16 nodes\n![alt text](line16.png)", + "metadata": {} + }, + { + "id": "62827e5d-82f4-433e-80ea-7eecf1dedbfb", + "cell_type": "code", + "source": "import matplotlib.pyplot as plt\nimport matplotlib.image as mpimg\n\nimg = mpimg.imread('line16.png')\nplt.imshow(img)\nplt.axis('off') # Turn off axis numbers\nplt.show()", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "execution_count": 28 + }, + { + "id": "a29b9882-972f-4f52-b4d2-0eb4d4ee866e", + "cell_type": "markdown", + "source": "eof", + "metadata": {} + } + ] +} \ No newline at end of file From d61cf7cce0e212df04ed7292f8be3ae8fd35f213 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Fri, 26 Jul 2024 22:38:04 +0200 Subject: [PATCH 71/83] Add files via upload --- community/womanium/assignments/hw4-5-5.ipynb | 988 +++++++++++++++++++ 1 file changed, 988 insertions(+) create mode 100644 community/womanium/assignments/hw4-5-5.ipynb diff --git a/community/womanium/assignments/hw4-5-5.ipynb b/community/womanium/assignments/hw4-5-5.ipynb new file mode 100644 index 00000000..9313702f --- /dev/null +++ b/community/womanium/assignments/hw4-5-5.ipynb @@ -0,0 +1,988 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "b7f74e3a-7dae-4939-a2ef-0ff82d8eadd0", + "metadata": {}, + "source": [ + "\n", + "# Assignment 6.12 womanium 2024\n" + ] + }, + { + "cell_type": "markdown", + "id": "adc17ffc-b892-4a94-bebb-4ba74d208a9e", + "metadata": { + "tags": [] + }, + "source": [ + "## Advanced Algorithms Design: Quantum random walk" + ] + }, + { + "cell_type": "markdown", + "id": "2060a234-6a10-453e-b4a2-7b644128c3e9", + "metadata": { + "tags": [] + }, + "source": [ + "Following the example of a quantum walk operator for \n", + "the case of a circle with 4 nodes, a quantum walk \n", + "operator is designed for the case of a line with 16 \n", + "nodes.\n", + "\n", + "Using the file quantum_walk_circle_example.py as a \n", + "template, both the case of a circle and of a line with \n", + "4, 8, and 16 nodes are implemented in this notebook.\n" + ] + }, + { + "cell_type": "markdown", + "id": "fe7f2080-a6eb-4aa5-8865-97aa9acd5c14", + "metadata": {}, + "source": [ + "## Environment and imports" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "fd9eebc7-b78b-4aa7-8614-fbd7dc07f452", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", + "qiskit-ibm-runtime 0.25.0 requires pydantic>=2.5.0, but you have pydantic 1.10.17 which is incompatible.\n", + "qc-grader 0.19.7 requires networkx==3.2.1, but you have networkx 2.8.8 which is incompatible.\u001b[0m\u001b[31m\n", + "\u001b[0mNote: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install -U -q classiq" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "202628d6-3fe3-47fa-8a15-04b7fd9716f4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "from classiq import *" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "99432d7f-12fd-4a46-bbf0-cf3651c04076", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg" + ] + }, + { + "cell_type": "markdown", + "id": "59927721-34b7-49e8-8b88-6a75663aef7a", + "metadata": {}, + "source": [ + "## Implementation" + ] + }, + { + "cell_type": "markdown", + "id": "bbe3dfa3-2265-44af-b708-9a0ad189f5bf", + "metadata": {}, + "source": [ + "\n", + "## Common functions for circles or lines\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "425c8fd2-f8f5-409b-a569-d923819437c4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Prepares the minus state (aux qubit) for the diffuzer oracle\n", + "@qfunc\n", + "def prepare_minus(x: QBit):\n", + " X(x)\n", + " H(x)\n", + "\n", + "# x: current node\n", + "@qfunc\n", + "def diffuzer_oracle(aux: Output[QNum],x:QNum):\n", + " aux^=(x!=0)\n", + "\n", + "# Zero diffuser using Grover's algorithm technique\n", + "# x: current node \n", + "@qfunc\n", + "def zero_diffuzer(x: QNum):\n", + " aux = QNum('aux')\n", + " allocate(1,aux)\n", + " within_apply(compute=lambda: prepare_minus(aux),\n", + " action=lambda: diffuzer_oracle)\n", + "\n", + "# non-zero probabilities for allowable transitions\n", + "# @qfunc\n", + "# def W_iteration\n", + "\n", + "# Iterates over all possible positions and applies \n", + "# the W_iteration for each position.\n", + "@qfunc \n", + "def W_operator(vertices:QNum, adjacent_vertices: QNum):\n", + " for i in range(num_nodes):\n", + " W_iteration(i,vertices,adjacent_vertices)\n", + "\n", + "# Edge oracle for checking adjacency of 2 vertices\n", + "#\n", + "#@qfunc\n", + "#def edge_oracle\n", + "\n", + "# Swaps the contents of two quantum registers: moves the walker\n", + "@qfunc \n", + "def bitwise_swap(x: QArray[QBit], y:QArray[QBit]):\n", + " repeat(count= x.len,\n", + " iteration= lambda i: SWAP(x[i],y[i]))\n", + "\n", + "# shift operator moving the walker if vertices adjacent\n", + "@qfunc \n", + "def S_operator(vertices:QNum, adjacent_vertices: QNum):\n", + " res = QNum('res')\n", + " edge_oracle(res,vertices,adjacent_vertices)\n", + " control(ctrl= res==1,\n", + " operand= lambda: bitwise_swap(vertices,adjacent_vertices))\n" + ] + }, + { + "cell_type": "markdown", + "id": "9761696b-cefe-4ea0-9c91-ebd33af62e22", + "metadata": {}, + "source": [ + "## Circle-specific functions\n", + "\n", + "Here we have the function W_iteration with the \n", + "probability of 0.5 going in either direction.\n", + "\n", + "What is special about a random walk on a circle is that \n", + "the node (0) and the node (num_nodes-1) are adjacent. \n", + "This fact is taken care of in the function edge_oracle." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "5ab73e30-56fd-4028-bb13-e2f883a4e3ae", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# non-zero probabilities for allowable transitions\n", + "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", + " prob = [0] * num_nodes\n", + " prob[(i+1)% num_nodes]=0.5\n", + " prob[(i-1)% num_nodes]=0.5\n", + " print(f'State ={i}, prob vec ={prob}')\n", + " \n", + " control(ctrl=vertices==i,\n", + " operand=lambda: within_apply(\n", + " compute= lambda: \n", + " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", + " action= lambda: \n", + " zero_diffuzer(adjacent_vertices)))\n", + " \n", + "# Edge oracle for checking adjacency of two vertices \n", + "@qfunc\n", + "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", + " diff = vertices - adjacent_vertices\n", + " mod = diff%num_nodes\n", + " res |= (mod == 1) | (mod == num_nodes-1)\n" + ] + }, + { + "cell_type": "markdown", + "id": "423cf377-1bc7-4637-855c-b82ced39cca9", + "metadata": {}, + "source": [ + "## Circle with 4 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "e39e695c-cc7d-4983-ba7b-2d076262a66b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Circle with 4 Nodes \n", + "\n", + "# Size of the register required for the number of nodes\n", + "size = 2\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "a863aa31-dc65-4ad4-9985-4fca062ab269", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk operator function\n", + "# applies the W and S operators after initializing\n", + "# vertices\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "1427b784-9701-4338-aec2-5cb5566a6d32", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 0.5, 0, 0.5]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5]\n", + "State=3, prob vec =[0.5, 0, 0.5, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "22cec3d3-aef0-46c6-9de2-74ee40d81b96", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "write_qmod(qmod,\"random4\")" + ] + }, + { + "cell_type": "markdown", + "id": "0c9a5e9c-ed50-44d1-b9ed-665f96274a92", + "metadata": { + "tags": [] + }, + "source": [ + "## Circle with 8 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "a5063b48-425c-4d73-8d6e-8b575cc61be3", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Circle with 8 Nodes \n", + "\n", + "# Size of the register required for the number of nodes\n", + "size = 3\n", + "num_nodes = 8\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "d137cf61-e92b-46d4-870e-4d1fc021650c", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk operator function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "94168a88-cdb4-411c-a162-52adf0c622bb", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0.5]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=7, prob vec =[0.5, 0, 0, 0, 0, 0, 0.5, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "7458e3ac-0e87-49e2-9139-59ee31fc27f4", + "metadata": {}, + "source": [ + "## Circle with 16 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "7e7ad59c-80ca-4452-af10-883711c9b104", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Circle with 16 Nodes \n", + "\n", + "# Size of the register required for the number of nodes\n", + "size = 4\n", + "num_nodes = 16\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "d3444344-5117-4021-9d15-1476582bf61d", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "d30601d3-5b4f-4b23-af9d-f93d0a4f6777", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", + "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", + "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=15, prob vec =[0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "ccfdf941-9d91-402f-a200-ccc266f73e99", + "metadata": {}, + "source": [ + "## Line-specific functions\n", + "The function W_iteration defines the transition \n", + "probabilities for a line. At the beginning and at the \n", + "end of the line the walker can go only in one direction \n", + "(probability = 1). For all other nodes the probability \n", + "going in either direction is 0.5.\n", + "\n", + "Here the function edge_oracle just has to check whether \n", + "the vertices are adjacent (distance = 1)." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "47e777d7-6527-4901-a034-951c624037e4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# non-zero probabilities for allowable probabilities\n", + "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", + " prob = [0] * (num_nodes)\n", + " if i == 0:\n", + " prob[i + 1] = 1.0\n", + " elif i == (num_nodes) -1:\n", + " prob[i - 1] = 1.0\n", + " else:\n", + " prob[i - 1] = 0.5\n", + " prob[i + 1] = 0.5\n", + " print(f'State ={i}, prob vec ={prob}')\n", + " \n", + " control(ctrl=vertices==i,\n", + " operand=lambda: within_apply(\n", + " compute= lambda: \n", + " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", + " action= lambda: \n", + " zero_diffuzer(adjacent_vertices)))\n", + "\n", + "\n", + "# Edge oracle for checking adjacency of two vertices\n", + "@qfunc\n", + "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", + " diff = vertices - adjacent_vertices\n", + " res |= (diff == 1) | (diff == -1)\n" + ] + }, + { + "cell_type": "markdown", + "id": "07488d17-7cac-4e36-8335-e3303cff8efe", + "metadata": {}, + "source": [ + "## Line with 4 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "92d3f78c-ee23-45bf-acba-6d0ff0608847", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Line with 4 Nodes\n", + "\n", + "# Register size to accomodate the number of vertices\n", + "size = 2\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "613c61cc-10ea-4950-a262-3dd572c8701c", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "46fca7f3-3106-416d-a3f8-379f7095f8fa", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 1.0, 0, 0]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5]\n", + "State=3, prob vec =[0, 0, 1.0, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "9dd17d8c-83dd-463d-b155-9b8c949f97d1", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "write_qmod(qmod,\"random4\")" + ] + }, + { + "cell_type": "markdown", + "id": "cfbc239f-2bfb-496a-a752-1a84f657ac3f", + "metadata": { + "tags": [] + }, + "source": [ + "## Line with 8 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "08283335-a49f-4d6e-a702-fb76ab01724b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Line with 8 Nodes\n", + "\n", + "# Register size to accomodate the number of vertices\n", + "size = 3\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "07a57ceb-c1da-47d7-8d6b-45e18667d747", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "fb711141-eadd-4ac5-bb1d-fbd31bb71f8f", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 1.0, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "7b486184-7850-4c58-baac-9e89a942e059", + "metadata": { + "tags": [] + }, + "source": [ + "## Line with 16 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "52ccbff2-f15f-4fe2-86fd-6e1d0128f428", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Line with 16 Nodes\n", + "\n", + "# Register size to accomodate the number of vertices\n", + "size = 4\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "e773bbb1-e532-477e-8891-c47f8f4f1f8d", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "c3833a55-49af-4214-be22-5b52eaa22ba6", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", + "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", + "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=15, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "4b28d548-febf-43b3-9271-6cab28fd2cbb", + "metadata": {}, + "source": [ + "# Results" + ] + }, + { + "cell_type": "markdown", + "id": "b7d6c2a8-063f-4ffe-bf3c-18212aa1d57f", + "metadata": { + "jp-MarkdownHeadingCollapsed": true, + "tags": [] + }, + "source": [ + "## Number of qubits vs. nodes\n", + "\n", + "| random walk | num_nodes | transpiled qubits |\n", + "| :- | :-: | :-: |\n", + "| circle | 4 | 13 |\n", + "| circle | 8 | 22|\n", + "| circle | 16 | 33 |\n", + "| line | 4 | 17 |\n", + "| line | 8 | 25 |\n", + "| line | 16 | 37 |\n", + "\n", + "Here we see that the more nodes we have, the more \n", + "transpiled qubits are going to be used. Lines need more \n", + "qubits than circles." + ] + }, + { + "cell_type": "markdown", + "id": "2d8f26a8-18aa-4dda-a3ed-a3974e0184b9", + "metadata": {}, + "source": [ + "## Circle 4 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "335019e0-e185-41d5-b894-6116ada649d6", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('circle4.png')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "6bd34621-0458-4a1b-ac69-62892bcba54c", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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zWj37t2EQiFqa2t56KGHeOqppxgZGWHVqlX5c9xisRjJZNJ3J4tffHJ+Z2cnTz75ZP53yHYrtLW18dxzzzE+Pp4/ipZMJn0XAoXr43kee/fuZdmyZRhjuPPOO3nzzTfp6OggFouxevVqXnrpJaLRKK7r5mdc8evnk0gk+O///m8aGxtpbGxk06ZNPPHEE4yNjbF+/XpSqRTpdDq/rZXLAaj5oDCbgcLxV57nYa2lvr6eM2fOMD4+TltbG3fffTfvv/8+Dz/8MI7jcP78eV5++WVSqZSvdhhgUk0rk8kQCoW46667sNbS2NjICy+8QDwe56abbuLGG28kk8lw8OBBDh065LtAK+R5HqdOnaKqqoqqqio6OzupqanhN3/zNzlx4gQ33ngjzc3NZDIZXn31Vfr6/DcxZKFkMkl3dzcbN26kp6eHeDzO2rVrueOOO/jggw947LHHMMbQ39/Pq6++mp/9wm/b23xTM3OGck1NyIZAT08P0WiUxx57jNtvv50PPviAbdu28f777/PEE08QiURoaWkpcamnVth0huyRtIMHD7J582b27dtHPB7PDwd49tlneeGFF7j55pvznex+U7g+uSmHTpw4wUMPPcSjjz6aH+ycSCR44oknOHjwIDfffDPg3yZnYSB1dnayYMECvvOd77Bjxw7279/Ptm3beOedd/j5z39ObW0tixcvLmFpS0s1szmKx+M8//zzVFdXk0wmefTRR3njjTc4fvw4NTU11NfXMzo6WjbfkqdPn+bnP/851dXVtLa2sn79ep566inGx8fZtGkT4+PjZdGUyYXTO++8Q21tLalUiq1bt+bPEgBoa2vj9OnTpSzmtBljGB8f57nnniMWi5FKpXjsscd49dVX6ejoYMGCBfkplqZ7PdmgUc1sDnIBlU6nGRwcJBqNYq2lvb09P4L78OHDDA4OltXGdfbsWdrb21m5ciWffvop8XictrY2brvtNt54442yCLPC2ubQ0FB+Hfbv348xhltvvZWamhoOHTpU4pJOT277SSaT+W0tnU7T1dWVb0Lv378/EPOrzZZqZrN08fRDxhhGRkZIJBLcfffdtLS0cPTo0fxIbb+bqubY0dHBHXfcwaJFi2hububFF1/0ff9SoYvnumtvb+f2228nHA6TyWTYvXt32Ux8efE0PSMjI2QyGe6++26WLFnCwYMH+fjjj6d8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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('circle4hist.jpg')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "5216c457-12f6-451e-92a8-d43c5a15e98f", + "metadata": {}, + "source": [ + "## Line 8 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "c6ebdc89-ba16-41c4-b623-7862a0ae29af", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('line8.png')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "6dffee97-669a-4c03-a506-55c8ebbe0be1", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('line8hist.jpg')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "8cb5df08-342e-4cfd-b65e-42a8528b6969", + "metadata": {}, + "source": [ + "## Line 16 nodes\n", + "![alt text](line16.png)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "62827e5d-82f4-433e-80ea-7eecf1dedbfb", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('line16.png')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "a29b9882-972f-4f52-b4d2-0eb4d4ee866e", + "metadata": {}, + "source": [ + "eof" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 [Default]", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 2aff9c5e718c30db6752187897d48e93bfb6f95f Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Fri, 26 Jul 2024 22:42:16 +0200 Subject: [PATCH 72/83] Add files via upload --- community/womanium/assignments/hw4-5-6.ipynb | 987 +++++++++++++++++++ 1 file changed, 987 insertions(+) create mode 100644 community/womanium/assignments/hw4-5-6.ipynb diff --git a/community/womanium/assignments/hw4-5-6.ipynb b/community/womanium/assignments/hw4-5-6.ipynb new file mode 100644 index 00000000..4d40b1cf --- /dev/null +++ b/community/womanium/assignments/hw4-5-6.ipynb @@ -0,0 +1,987 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "b7f74e3a-7dae-4939-a2ef-0ff82d8eadd0", + "metadata": {}, + "source": [ + "Assignment 6.12 womanium 2024" + ] + }, + { + "cell_type": "markdown", + "id": "adc17ffc-b892-4a94-bebb-4ba74d208a9e", + "metadata": { + "tags": [] + }, + "source": [ + "Advanced Algorithms Design: Quantum random walk" + ] + }, + { + "cell_type": "markdown", + "id": "2060a234-6a10-453e-b4a2-7b644128c3e9", + "metadata": { + "tags": [] + }, + "source": [ + "Following the example of a quantum walk operator for \n", + "the case of a circle with 4 nodes, a quantum walk \n", + "operator is designed for the case of a line with 16 \n", + "nodes.\n", + "\n", + "Using the file quantum_walk_circle_example.py as a \n", + "template, both the case of a circle and of a line with \n", + "4, 8, and 16 nodes are implemented in this notebook.\n" + ] + }, + { + "cell_type": "markdown", + "id": "fe7f2080-a6eb-4aa5-8865-97aa9acd5c14", + "metadata": {}, + "source": [ + "## Environment and imports" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "fd9eebc7-b78b-4aa7-8614-fbd7dc07f452", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", + "qiskit-ibm-runtime 0.25.0 requires pydantic>=2.5.0, but you have pydantic 1.10.17 which is incompatible.\n", + "qc-grader 0.19.7 requires networkx==3.2.1, but you have networkx 2.8.8 which is incompatible.\u001b[0m\u001b[31m\n", + "\u001b[0mNote: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install -U -q classiq" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "202628d6-3fe3-47fa-8a15-04b7fd9716f4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "from classiq import *" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "99432d7f-12fd-4a46-bbf0-cf3651c04076", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg" + ] + }, + { + "cell_type": "markdown", + "id": "59927721-34b7-49e8-8b88-6a75663aef7a", + "metadata": {}, + "source": [ + "## Implementation" + ] + }, + { + "cell_type": "markdown", + "id": "bbe3dfa3-2265-44af-b708-9a0ad189f5bf", + "metadata": {}, + "source": [ + "\n", + "## Common functions for circles or lines\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "425c8fd2-f8f5-409b-a569-d923819437c4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Prepares the minus state (aux qubit) for the diffuzer oracle\n", + "@qfunc\n", + "def prepare_minus(x: QBit):\n", + " X(x)\n", + " H(x)\n", + "\n", + "# x: current node\n", + "@qfunc\n", + "def diffuzer_oracle(aux: Output[QNum],x:QNum):\n", + " aux^=(x!=0)\n", + "\n", + "# Zero diffuser using Grover's algorithm technique\n", + "# x: current node \n", + "@qfunc\n", + "def zero_diffuzer(x: QNum):\n", + " aux = QNum('aux')\n", + " allocate(1,aux)\n", + " within_apply(compute=lambda: prepare_minus(aux),\n", + " action=lambda: diffuzer_oracle)\n", + "\n", + "# non-zero probabilities for allowable transitions\n", + "# @qfunc\n", + "# def W_iteration\n", + "\n", + "# Iterates over all possible positions and applies \n", + "# the W_iteration for each position.\n", + "@qfunc \n", + "def W_operator(vertices:QNum, adjacent_vertices: QNum):\n", + " for i in range(num_nodes):\n", + " W_iteration(i,vertices,adjacent_vertices)\n", + "\n", + "# Edge oracle for checking adjacency of 2 vertices\n", + "#\n", + "#@qfunc\n", + "#def edge_oracle\n", + "\n", + "# Swaps the contents of two quantum registers: moves the walker\n", + "@qfunc \n", + "def bitwise_swap(x: QArray[QBit], y:QArray[QBit]):\n", + " repeat(count= x.len,\n", + " iteration= lambda i: SWAP(x[i],y[i]))\n", + "\n", + "# shift operator moving the walker if vertices adjacent\n", + "@qfunc \n", + "def S_operator(vertices:QNum, adjacent_vertices: QNum):\n", + " res = QNum('res')\n", + " edge_oracle(res,vertices,adjacent_vertices)\n", + " control(ctrl= res==1,\n", + " operand= lambda: bitwise_swap(vertices,adjacent_vertices))\n" + ] + }, + { + "cell_type": "markdown", + "id": "9761696b-cefe-4ea0-9c91-ebd33af62e22", + "metadata": {}, + "source": [ + "## Circle-specific functions\n", + "\n", + "Here we have the function W_iteration with the \n", + "probability of 0.5 going in either direction.\n", + "\n", + "What is special about a random walk on a circle is that \n", + "the node (0) and the node (num_nodes-1) are adjacent. \n", + "This fact is taken care of in the function edge_oracle." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "5ab73e30-56fd-4028-bb13-e2f883a4e3ae", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# non-zero probabilities for allowable transitions\n", + "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", + " prob = [0] * num_nodes\n", + " prob[(i+1)% num_nodes]=0.5\n", + " prob[(i-1)% num_nodes]=0.5\n", + " print(f'State ={i}, prob vec ={prob}')\n", + " \n", + " control(ctrl=vertices==i,\n", + " operand=lambda: within_apply(\n", + " compute= lambda: \n", + " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", + " action= lambda: \n", + " zero_diffuzer(adjacent_vertices)))\n", + " \n", + "# Edge oracle for checking adjacency of two vertices \n", + "@qfunc\n", + "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", + " diff = vertices - adjacent_vertices\n", + " mod = diff%num_nodes\n", + " res |= (mod == 1) | (mod == num_nodes-1)\n" + ] + }, + { + "cell_type": "markdown", + "id": "423cf377-1bc7-4637-855c-b82ced39cca9", + "metadata": {}, + "source": [ + "## Circle with 4 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "e39e695c-cc7d-4983-ba7b-2d076262a66b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Circle with 4 Nodes \n", + "\n", + "# Size of the register required for the number of nodes\n", + "size = 2\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "a863aa31-dc65-4ad4-9985-4fca062ab269", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk operator function\n", + "# applies the W and S operators after initializing\n", + "# vertices\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "1427b784-9701-4338-aec2-5cb5566a6d32", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 0.5, 0, 0.5]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5]\n", + "State=3, prob vec =[0.5, 0, 0.5, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "22cec3d3-aef0-46c6-9de2-74ee40d81b96", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "write_qmod(qmod,\"random4\")" + ] + }, + { + "cell_type": "markdown", + "id": "0c9a5e9c-ed50-44d1-b9ed-665f96274a92", + "metadata": { + "tags": [] + }, + "source": [ + "## Circle with 8 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "a5063b48-425c-4d73-8d6e-8b575cc61be3", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Circle with 8 Nodes \n", + "\n", + "# Size of the register required for the number of nodes\n", + "size = 3\n", + "num_nodes = 8\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "d137cf61-e92b-46d4-870e-4d1fc021650c", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk operator function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "94168a88-cdb4-411c-a162-52adf0c622bb", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0.5]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=7, prob vec =[0.5, 0, 0, 0, 0, 0, 0.5, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "7458e3ac-0e87-49e2-9139-59ee31fc27f4", + "metadata": {}, + "source": [ + "## Circle with 16 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "7e7ad59c-80ca-4452-af10-883711c9b104", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Circle with 16 Nodes \n", + "\n", + "# Size of the register required for the number of nodes\n", + "size = 4\n", + "num_nodes = 16\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "d3444344-5117-4021-9d15-1476582bf61d", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "d30601d3-5b4f-4b23-af9d-f93d0a4f6777", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", + "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", + "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=15, prob vec =[0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "ccfdf941-9d91-402f-a200-ccc266f73e99", + "metadata": {}, + "source": [ + "## Line-specific functions\n", + "The function W_iteration defines the transition \n", + "probabilities for a line. At the beginning and at the \n", + "end of the line the walker can go only in one direction \n", + "(probability = 1). For all other nodes the probability \n", + "going in either direction is 0.5.\n", + "\n", + "Here the function edge_oracle just has to check whether \n", + "the vertices are adjacent (distance = 1)." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "47e777d7-6527-4901-a034-951c624037e4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# non-zero probabilities for allowable probabilities\n", + "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", + " prob = [0] * (num_nodes)\n", + " if i == 0:\n", + " prob[i + 1] = 1.0\n", + " elif i == (num_nodes) -1:\n", + " prob[i - 1] = 1.0\n", + " else:\n", + " prob[i - 1] = 0.5\n", + " prob[i + 1] = 0.5\n", + " print(f'State ={i}, prob vec ={prob}')\n", + " \n", + " control(ctrl=vertices==i,\n", + " operand=lambda: within_apply(\n", + " compute= lambda: \n", + " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", + " action= lambda: \n", + " zero_diffuzer(adjacent_vertices)))\n", + "\n", + "\n", + "# Edge oracle for checking adjacency of two vertices\n", + "@qfunc\n", + "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", + " diff = vertices - adjacent_vertices\n", + " res |= (diff == 1) | (diff == -1)\n" + ] + }, + { + "cell_type": "markdown", + "id": "07488d17-7cac-4e36-8335-e3303cff8efe", + "metadata": {}, + "source": [ + "## Line with 4 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "92d3f78c-ee23-45bf-acba-6d0ff0608847", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Line with 4 Nodes\n", + "\n", + "# Register size to accomodate the number of vertices\n", + "size = 2\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "613c61cc-10ea-4950-a262-3dd572c8701c", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "46fca7f3-3106-416d-a3f8-379f7095f8fa", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 1.0, 0, 0]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5]\n", + "State=3, prob vec =[0, 0, 1.0, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "9dd17d8c-83dd-463d-b155-9b8c949f97d1", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "write_qmod(qmod,\"random4\")" + ] + }, + { + "cell_type": "markdown", + "id": "cfbc239f-2bfb-496a-a752-1a84f657ac3f", + "metadata": { + "tags": [] + }, + "source": [ + "## Line with 8 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "08283335-a49f-4d6e-a702-fb76ab01724b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Line with 8 Nodes\n", + "\n", + "# Register size to accomodate the number of vertices\n", + "size = 3\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "07a57ceb-c1da-47d7-8d6b-45e18667d747", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "fb711141-eadd-4ac5-bb1d-fbd31bb71f8f", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 1.0, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "7b486184-7850-4c58-baac-9e89a942e059", + "metadata": { + "tags": [] + }, + "source": [ + "## Line with 16 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "52ccbff2-f15f-4fe2-86fd-6e1d0128f428", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Line with 16 Nodes\n", + "\n", + "# Register size to accomodate the number of vertices\n", + "size = 4\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "e773bbb1-e532-477e-8891-c47f8f4f1f8d", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "c3833a55-49af-4214-be22-5b52eaa22ba6", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", + "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", + "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=15, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "4b28d548-febf-43b3-9271-6cab28fd2cbb", + "metadata": {}, + "source": [ + "# Results" + ] + }, + { + "cell_type": "markdown", + "id": "b7d6c2a8-063f-4ffe-bf3c-18212aa1d57f", + "metadata": { + "jp-MarkdownHeadingCollapsed": true, + "tags": [] + }, + "source": [ + "## Number of qubits vs. nodes\n", + "\n", + "| random walk | num_nodes | transpiled qubits |\n", + "| :- | :-: | :-: |\n", + "| circle | 4 | 13 |\n", + "| circle | 8 | 22|\n", + "| circle | 16 | 33 |\n", + "| line | 4 | 17 |\n", + "| line | 8 | 25 |\n", + "| line | 16 | 37 |\n", + "\n", + "Here we see that the more nodes we have, the more \n", + "transpiled qubits are going to be used. Lines need more \n", + "qubits than circles." + ] + }, + { + "cell_type": "markdown", + "id": "2d8f26a8-18aa-4dda-a3ed-a3974e0184b9", + "metadata": {}, + "source": [ + "## Circle 4 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "335019e0-e185-41d5-b894-6116ada649d6", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('circle4.png')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "6bd34621-0458-4a1b-ac69-62892bcba54c", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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zWj37t2EQiFqa2t56KGHeOqppxgZGWHVqlX5c9xisRjJZNJ3J4tffHJ+Z2cnTz75ZP53yHYrtLW18dxzzzE+Pp4/ipZMJn0XAoXr43kee/fuZdmyZRhjuPPOO3nzzTfp6OggFouxevVqXnrpJaLRKK7r5mdc8evnk0gk+O///m8aGxtpbGxk06ZNPPHEE4yNjbF+/XpSqRTpdDq/rZXLAaj5oDCbgcLxV57nYa2lvr6eM2fOMD4+TltbG3fffTfvv/8+Dz/8MI7jcP78eV5++WVSqZSvdhhgUk0rk8kQCoW46667sNbS2NjICy+8QDwe56abbuLGG28kk8lw8OBBDh065LtAK+R5HqdOnaKqqoqqqio6OzupqanhN3/zNzlx4gQ33ngjzc3NZDIZXn31Vfr6/DcxZKFkMkl3dzcbN26kp6eHeDzO2rVrueOOO/jggw947LHHMMbQ39/Pq6++mp/9wm/b23xTM3OGck1NyIZAT08P0WiUxx57jNtvv50PPviAbdu28f777/PEE08QiURoaWkpcamnVth0huyRtIMHD7J582b27dtHPB7PDwd49tlneeGFF7j55pvznex+U7g+uSmHTpw4wUMPPcSjjz6aH+ycSCR44oknOHjwIDfffDPg3yZnYSB1dnayYMECvvOd77Bjxw7279/Ptm3beOedd/j5z39ObW0tixcvLmFpS0s1szmKx+M8//zzVFdXk0wmefTRR3njjTc4fvw4NTU11NfXMzo6WjbfkqdPn+bnP/851dXVtLa2sn79ep566inGx8fZtGkT4+PjZdGUyYXTO++8Q21tLalUiq1bt+bPEgBoa2vj9OnTpSzmtBljGB8f57nnniMWi5FKpXjsscd49dVX6ejoYMGCBfkplqZ7PdmgUc1sDnIBlU6nGRwcJBqNYq2lvb09P4L78OHDDA4OltXGdfbsWdrb21m5ciWffvop8XictrY2brvtNt54442yCLPC2ubQ0FB+Hfbv348xhltvvZWamhoOHTpU4pJOT277SSaT+W0tnU7T1dWVb0Lv378/EPOrzZZqZrN08fRDxhhGRkZIJBLcfffdtLS0cPTo0fxIbb+bqubY0dHBHXfcwaJFi2hububFF1/0ff9SoYvnumtvb+f2228nHA6TyWTYvXt32Ux8efE0PSMjI2QyGe6++26WLFnCwYMH+fjjj6d8/LVCg2aLJPc2RqNRlixZwuDgYL5GVo7vU67cDQ0N1NXV0dPTQyKRmPSYclmvwhPSlyxZgud5nDlzZtI00eW0LrmQjsViLFmyhP7+foaGhkpdtHk1nUGzCrMiuXgG3ELl+D6VYrbT+RakdQrCNjYT0wkz9ZkV0cWnPZWzy5W/HJrMU5lq5y/3z2mqmZavZeozK5KpNqhy38jKvfyFgrQuoCCbimpmIhIICjMRCQSFmYgEgsJMRAJBYSYigaAwE5FAUJiJSCAozEQkEBRmIhIICjMRCQSFmYgEQpHPzcydzGsu3Jz4tfCvBXeJyLWk4IR/a7I5kc8CMylBZqx4YWYtYLEmVxSDg8ViC0posBhM9l4RucYYQ0GgGTAGY7N5MDGN5oW/zVARa2YGi4O1ZqKMHhYPOxFsWTYbcFatW5FrjoEMIRzj4VgvG2IGXGOyKWEhH2azqJoVLcwsudJ4ONZirIM1YQwe3kSNzMHDWPcKSxKRQLIQxsUANlf5AQwuZuLWXLrxixZmBouZuM6FZxw8x8PggjU4Nlsn84zBMxGM9f8FMUSk+LJBlrudwViDSxgHF2MsnvHAOpPac9NVlDCzNtuLZ42FaB3h+uW4hKhwPCwh3NF+nMQwGItLeBbFFJHyZzF4ZEyYigVNEKnCsxD20oTSY4z39+J46fxjZ5oTRTwAkK191bXdzPrf/gvSoSqMA45nOfv+S4yfOpztS9NoEJFrVLYbKkOYFXc8SnjRSlxCODaNd/Y4H/70/yAUH2S2/WbFHZphPTwnTDpah2cqAA8PsE4I64TAODgTrWNVzkSuLTb3n2fIhGOYymqsDeHh4VXUYKybzwYzi4CYh2rSpYMurLXZw7EKMJFrWOGA08k5YS9z/0wUJcymc1GFmbeARSRYLNbaS0aZ5mthcwwIdWCJyNUxzyPlr1KYXRj1X6aXXRSROSusehV28hcnFK5CmNkpb4qIFDMU1MwUkUBQmIlIIBR5CqBL5U5f8DA4xk70nRk1OefEYnHIzp9icKw38XbqeHExWeOAtTjo/Z29Czt67qhlNgVM/t5ihcG8hpkBHJs9y8rgZWfMMBEm5gmSWcpOTOLhWMhMnLCrHa34jAWMNzE9TfZ9dvQlPEOF85fl3tPctuoBIYq17c57zcwzDqGahUQaV2DDFVgihMhgdFhzDhwgjkmHsRUhHBvCZM+1KHXBgsXL4DphPCeEg0vI81DPzAyZgjDD4FkX41qIRAEzkQNlUDMDcA3Ur70JZ8MtEKmgwloyTli73Sxl530yjA6coOv/e5UNtz2EjbVi8k0hKYaQden+8A0aW5ZTu3QNmYnZXtSomInJTUyLxbguxEdJVjfh4RDCo2xqZsZaRk53khrpwwmHiFjNMjtXFoN1x1nYWM/AF59hzLFSFylwDJYKmyTe10li+CyFPT4yOxZwrYF0igXrt+EsaMAzIZwiTQk272HmYEmdOUG84wCEQjjW0bfbHFkMIVxcEyZx5uSFgypSVNmuaXvpXPUya551ca1hwbJVmNp6PDObmcumNq9hlp/TO9c/Zgs2Cm0Zs5I9xzUbXsZ6uTlI9HbOi4lJ363OLC6GfDf5xHRh1pii9vXOe81MissU3DIX3SPFpve2nOjQjIgEgsJMRAJBYSYigaAwE5FAuEphdmHuomlMSisiMmNXrWamg9siMp+Kd93M/C9MnFF64ax4O3Eyw+QHiUhJFO5+V7GGkR2zN3Hb2nw5suPNCsajzlJRx5nZiYt8ZqdMsVgDjkd2DYzFmRh8aLCaPlvED67yfugYD48QITLkZtOxOIQ9lwtXbzITM8PMTHEHzRpDcrCH3refxliDCTmETIixLz4mOdiNY0KaLUPED4o3jdiMWCwZDP0HXse2fwJuGmstZmwA62ay51yYi1ty01OUMDPGgLWErSXZdZz2rn8ikkkBHm6okrDj4TjZqHXwJuYzUw+ayLXGIwzW41T7YTzPxbEprGOxThUVWBxj8UxkVssuXs1s4iorTsilkjQ4YawxVFiLNc7EyTcWbCh74q6IXHNCJPEwhEIW44A1VTgWDA4Wg0Ny1pNZFbGZafCIYAkRylcVPawxeCY7CZuxE5Pbqakpck3yqMAag2NdQhOxZYwFXDxCeISwOBMnoM9MkfvMLGaiYy97ZnzuVOjsbJI2VztTzUzkGuXlO5isyY4My1VtJs0GM4uIKGqYmUt+KZjXQQEmcs0zl9y4+Bcz6950nc4kIoGgMBORQJiXyRmtOvhFZAZMEbqh5iXMcgUrRgFFJJhylZ5iVX7mrWZmjCESiSjQROSyMpkMrusWZVnzWjNLpVLzsXgRCZBc5WeudABAREqqWK03hZmIBILCTEQCQWEmIoGgMBORQFCYiUggKMxEJBAUZiISCAozEQkEhZmIBILCTEQCQWEmIoGgMBORQFCYiUggKMxEJBAUZiISCAozEQkEY3X1EREJANXMRCQQFGYiEggKMxEJBIWZiASCwkxEAkFhJiKBoDATkUBQmIlIICjMRCQQ/n+emGn+WK2CLAAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('circle4hist.jpg')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "5216c457-12f6-451e-92a8-d43c5a15e98f", + "metadata": {}, + "source": [ + "## Line 8 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "c6ebdc89-ba16-41c4-b623-7862a0ae29af", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('line8.png')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "6dffee97-669a-4c03-a506-55c8ebbe0be1", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('line8hist.jpg')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "8cb5df08-342e-4cfd-b65e-42a8528b6969", + "metadata": {}, + "source": [ + "## Line 16 nodes\n", + "![alt text](line16.png)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "62827e5d-82f4-433e-80ea-7eecf1dedbfb", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('line16.png')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "a29b9882-972f-4f52-b4d2-0eb4d4ee866e", + "metadata": {}, + "source": [ + "eof" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 [Default]", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 701db9508333f68558ca8517992e89458c8e83a5 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Fri, 26 Jul 2024 22:46:46 +0200 Subject: [PATCH 73/83] Delete community/womanium/assignments/hw4-5-1.ipynb --- community/womanium/assignments/hw4-5-1.ipynb | 979 ------------------- 1 file changed, 979 deletions(-) delete mode 100644 community/womanium/assignments/hw4-5-1.ipynb diff --git a/community/womanium/assignments/hw4-5-1.ipynb b/community/womanium/assignments/hw4-5-1.ipynb deleted file mode 100644 index 1d455d23..00000000 --- a/community/womanium/assignments/hw4-5-1.ipynb +++ /dev/null @@ -1,979 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "b7f74e3a-7dae-4939-a2ef-0ff82d8eadd0", - "metadata": {}, - "source": [ - "\n", - "# Assignment 6.12 - womanium 2024\n" - ] - }, - { - "cell_type": "markdown", - "id": "adc17ffc-b892-4a94-bebb-4ba74d208a9e", - "metadata": { - "tags": [] - }, - "source": [ - "## Advanced Algorithms Design:\n", - "## Quantum random walk" - ] - }, - { - "cell_type": "markdown", - "id": "2060a234-6a10-453e-b4a2-7b644128c3e9", - "metadata": { - "tags": [] - }, - "source": [ - "Following the example of a quantum walk operator for \n", - "the case of a circle with 4 nodes, a quantum walk \n", - "operator is designed for the case of a line with 16 \n", - "nodes.\n", - "\n", - "Using the file quantum_walk_circle_example.py as a \n", - "template, both the case of a circle and of a line with \n", - "4, 8, and 16 nodes are implemented in this notebook.\n" - ] - }, - { - "cell_type": "markdown", - "id": "fe7f2080-a6eb-4aa5-8865-97aa9acd5c14", - "metadata": {}, - "source": [ - "## Environment and imports" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "fd9eebc7-b78b-4aa7-8614-fbd7dc07f452", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", - "qiskit-ibm-runtime 0.25.0 requires pydantic>=2.5.0, but you have pydantic 1.10.17 which is incompatible.\n", - "qc-grader 0.19.7 requires networkx==3.2.1, but you have networkx 2.8.8 which is incompatible.\u001b[0m\u001b[31m\n", - "\u001b[0mNote: you may need to restart the kernel to use updated packages.\n" - ] - } - ], - "source": [ - "%pip install -U -q classiq" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "202628d6-3fe3-47fa-8a15-04b7fd9716f4", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "from classiq import *" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "99432d7f-12fd-4a46-bbf0-cf3651c04076", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg" - ] - }, - { - "cell_type": "markdown", - "id": "59927721-34b7-49e8-8b88-6a75663aef7a", - "metadata": {}, - "source": [ - "## Implementation" - ] - }, - { - "cell_type": "markdown", - "id": "bbe3dfa3-2265-44af-b708-9a0ad189f5bf", - "metadata": {}, - "source": [ - "\n", - "## Common functions for circles or lines\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "425c8fd2-f8f5-409b-a569-d923819437c4", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Prepares the minus state (aux qubit) for the diffuzer oracle\n", - "@qfunc\n", - "def prepare_minus(x: QBit):\n", - " X(x)\n", - " H(x)\n", - "\n", - "# x: current node\n", - "@qfunc\n", - "def diffuzer_oracle(aux: Output[QNum],x:QNum):\n", - " aux^=(x!=0)\n", - "\n", - "# Zero diffuser using Grover's algorithm technique\n", - "# x: current node \n", - "@qfunc\n", - "def zero_diffuzer(x: QNum):\n", - " aux = QNum('aux')\n", - " allocate(1,aux)\n", - " within_apply(compute=lambda: prepare_minus(aux),\n", - " action=lambda: diffuzer_oracle)\n", - "\n", - "# non-zero probabilities for allowable transitions\n", - "# @qfunc\n", - "# def W_iteration\n", - "\n", - "# Iterates over all possible positions and applies \n", - "# the W_iteration for each position.\n", - "@qfunc \n", - "def W_operator(vertices:QNum, adjacent_vertices: QNum):\n", - " for i in range(num_nodes):\n", - " W_iteration(i,vertices,adjacent_vertices)\n", - "\n", - "# Edge oracle for checking adjacency of 2 vertices\n", - "#\n", - "#@qfunc\n", - "#def edge_oracle\n", - "\n", - "# Swaps the contents of two quantum registers: moves the walker\n", - "@qfunc \n", - "def bitwise_swap(x: QArray[QBit], y:QArray[QBit]):\n", - " repeat(count= x.len,\n", - " iteration= lambda i: SWAP(x[i],y[i]))\n", - "\n", - "# shift operator moving the walker if vertices adjacent\n", - "@qfunc \n", - "def S_operator(vertices:QNum, adjacent_vertices: QNum):\n", - " res = QNum('res')\n", - " edge_oracle(res,vertices,adjacent_vertices)\n", - " control(ctrl= res==1,\n", - " operand= lambda: bitwise_swap(vertices,adjacent_vertices))\n" - ] - }, - { - "cell_type": "markdown", - "id": "9761696b-cefe-4ea0-9c91-ebd33af62e22", - "metadata": {}, - "source": [ - "## Circle-specific functions\n", - "\n", - "Here we have the function W_iteration with the probability of 0.5 going in either direction.\n", - "\n", - "What is special about a random walk on a circle is that the node (0) and the node (num_nodes-1) are adjacent. This fact is taken care of in the function edge_oracle." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "5ab73e30-56fd-4028-bb13-e2f883a4e3ae", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "\n", - "# non-zero probabilities for allowable transitions\n", - "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", - " prob = [0] * num_nodes\n", - " prob[(i+1)% num_nodes]=0.5\n", - " prob[(i-1)% num_nodes]=0.5\n", - " print(f'State={i}, prob vec ={prob}')\n", - " \n", - " control(ctrl=vertices==i,\n", - " operand=lambda: within_apply(\n", - " compute= lambda: \n", - " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", - " action= lambda: \n", - " zero_diffuzer(adjacent_vertices)))\n", - " \n", - "# Edge oracle for checking adjacency of two vertices \n", - "@qfunc\n", - "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", - " diff = vertices - adjacent_vertices\n", - " mod = diff%num_nodes\n", - " res |= (mod == 1) | (mod == num_nodes-1)\n" - ] - }, - { - "cell_type": "markdown", - "id": "423cf377-1bc7-4637-855c-b82ced39cca9", - "metadata": {}, - "source": [ - "## Circle with 4 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "e39e695c-cc7d-4983-ba7b-2d076262a66b", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Circle with 4 Nodes \n", - "\n", - "# Size of the register required for the number of nodes\n", - "size = 2\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "a863aa31-dc65-4ad4-9985-4fca062ab269", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk operator function\n", - "# applies the W and S operators after initializing\n", - "# vertices\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "1427b784-9701-4338-aec2-5cb5566a6d32", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 0.5, 0, 0.5]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5]\n", - "State=3, prob vec =[0.5, 0, 0.5, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "22cec3d3-aef0-46c6-9de2-74ee40d81b96", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "write_qmod(qmod,\"random4\")" - ] - }, - { - "cell_type": "markdown", - "id": "0c9a5e9c-ed50-44d1-b9ed-665f96274a92", - "metadata": { - "tags": [] - }, - "source": [ - "## Circle with 8 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "a5063b48-425c-4d73-8d6e-8b575cc61be3", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Circle with 8 Nodes \n", - "\n", - "# Size of the register required for the number of nodes\n", - "size = 3\n", - "num_nodes = 8\n" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "d137cf61-e92b-46d4-870e-4d1fc021650c", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk operator function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "94168a88-cdb4-411c-a162-52adf0c622bb", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0.5]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=7, prob vec =[0.5, 0, 0, 0, 0, 0, 0.5, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "7458e3ac-0e87-49e2-9139-59ee31fc27f4", - "metadata": {}, - "source": [ - "## Circle with 16 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "7e7ad59c-80ca-4452-af10-883711c9b104", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Circle with 16 Nodes \n", - "\n", - "# Size of the register required for the number of nodes\n", - "size = 4\n", - "num_nodes = 16\n" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "d3444344-5117-4021-9d15-1476582bf61d", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "d30601d3-5b4f-4b23-af9d-f93d0a4f6777", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", - "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", - "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=15, prob vec =[0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "ccfdf941-9d91-402f-a200-ccc266f73e99", - "metadata": {}, - "source": [ - "## Line-specific functions\n", - "The function W_iteration defines the transition probabilities for a line. At the beginning and at the end of the line the walker can go only in one direction (probability = 1). For all other nodes the probability going in either direction is 0.5.\n", - "\n", - "Here the function edge_oracle just has to check whether the vertices are adjacent (distance = 1)." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "47e777d7-6527-4901-a034-951c624037e4", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "\n", - "# non-zero probabilities for allowable probabilities\n", - "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", - " prob = [0] * (num_nodes)\n", - " if i == 0:\n", - " prob[i + 1] = 1.0\n", - " elif i == (num_nodes) -1:\n", - " prob[i - 1] = 1.0\n", - " else:\n", - " prob[i - 1] = 0.5\n", - " prob[i + 1] = 0.5\n", - " print(f'State={i}, prob vec ={prob}')\n", - " \n", - " control(ctrl=vertices==i,\n", - " operand=lambda: within_apply(\n", - " compute= lambda: \n", - " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", - " action= lambda: \n", - " zero_diffuzer(adjacent_vertices)))\n", - "\n", - "\n", - "# Edge oracle for checking adjacency of two vertices\n", - "@qfunc\n", - "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", - " diff = vertices - adjacent_vertices\n", - " res |= (diff == 1) | (diff == -1)\n" - ] - }, - { - "cell_type": "markdown", - "id": "07488d17-7cac-4e36-8335-e3303cff8efe", - "metadata": {}, - "source": [ - "## Line with 4 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "92d3f78c-ee23-45bf-acba-6d0ff0608847", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Line with 4 Nodes\n", - "\n", - "# Register size to accomodate the number of vertices\n", - "size = 2\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "613c61cc-10ea-4950-a262-3dd572c8701c", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "46fca7f3-3106-416d-a3f8-379f7095f8fa", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 1.0, 0, 0]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5]\n", - "State=3, prob vec =[0, 0, 1.0, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "9dd17d8c-83dd-463d-b155-9b8c949f97d1", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "write_qmod(qmod,\"random4\")" - ] - }, - { - "cell_type": "markdown", - "id": "cfbc239f-2bfb-496a-a752-1a84f657ac3f", - "metadata": { - "tags": [] - }, - "source": [ - "## Line with 8 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "08283335-a49f-4d6e-a702-fb76ab01724b", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Line with 8 Nodes\n", - "\n", - "# Register size to accomodate the number of vertices\n", - "size = 3\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "07a57ceb-c1da-47d7-8d6b-45e18667d747", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "fb711141-eadd-4ac5-bb1d-fbd31bb71f8f", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=7, prob vec =[0, 0, 0, 0, 0, 0, 1.0, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "7b486184-7850-4c58-baac-9e89a942e059", - "metadata": { - "tags": [] - }, - "source": [ - "## Line with 16 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "52ccbff2-f15f-4fe2-86fd-6e1d0128f428", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Line with 16 Nodes\n", - "\n", - "# Register size to accomodate the number of vertices\n", - "size = 4\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "e773bbb1-e532-477e-8891-c47f8f4f1f8d", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "c3833a55-49af-4214-be22-5b52eaa22ba6", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", - "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", - "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=15, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "4b28d548-febf-43b3-9271-6cab28fd2cbb", - "metadata": {}, - "source": [ - "# Results" - ] - }, - { - "cell_type": "markdown", - "id": "b7d6c2a8-063f-4ffe-bf3c-18212aa1d57f", - "metadata": { - "jp-MarkdownHeadingCollapsed": true, - "tags": [] - }, - "source": [ - "## Number of qubits vs. nodes\n", - "\n", - "| random walk | num_nodes | transpiled qubits |\n", - "| :- | :-: | :-: |\n", - "| circle | 4 | 13 |\n", - "| circle | 8 | 22|\n", - "| circle | 16 | 33 |\n", - "| line | 4 | 17 |\n", - "| line | 8 | 25 |\n", - "| line | 16 | 37 |\n", - "\n", - "Here we see that the more nodes we have, the more transpiled qubits are going to be used. Lines need more qubits than circles." - ] - }, - { - "cell_type": "markdown", - "id": "2d8f26a8-18aa-4dda-a3ed-a3974e0184b9", - "metadata": {}, - "source": [ - "## Circle 4 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "335019e0-e185-41d5-b894-6116ada649d6", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('circle4.png')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "6bd34621-0458-4a1b-ac69-62892bcba54c", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAATMAAAGFCAYAAACRyxQ2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA0lklEQVR4nO3deYxcVWLH+++5VdXdVd3tdi9ud3tr7xtgwHhsJgPMYBbDkGHYMoqUGeUlQtHLU6LkSclEesqMEo2SaBQlT0omUqR5SvKi9ybDNgQwQ4BhAD/AYMDgBbCxTbvdm+12b+6l1nvP+6O6ytV2G/dS7bp1/fugxtXVVbfOrbr3V+ece+65xlprEREpc06pCyAiUgwKMxEJBIWZiASCwkxEAkFhJiKBoDATkUBQmIlIICjMRCQQwtN94G//9m/z0UcfUVFRQSKRyN9vjJmXgomI5Hz++edXfIxqZiISCAozEQkEhZmIBMK0+8xExN/mOmfEdPu/r9brzJTCTKTMXa2Jb4r1OrnlFDvUFGYiZWg+AuziZRpj5jUoC5ddjGBTn5mITKncpjpUzUwkAIoRPFeqHRU73NTMFLmGFQbK5W7PVC5Upmr2Xbzcwv6umb5m4XMud7vwtWdKYSZShqy1+QCYKtRmcmSy8LGXe97Fr5H7mekR0MKQvPi5c62pKcxEysBUYQLgOE7Rm3+Fy88xxuRrUMVqHhpj8Dwvv8yL/50phZlIGSkMmXA4TGVlZdFfIx6P47rupFpUVVUVoVCo6K+VTCbJZDJFWZbCTKQMTbd5ONflXqzYr3O5mthsxqIpzETKzNUYMlGsgwuXc3GnfzGarxpnJlKGym3U/9V4jXmpmV2ucMUcUXy5Q8dTHeadyyHkUvuyQ9hzXa6Uh2J85l+2TxbrdQs78K+0/Mstey6nOs1rM3OqqmSxXOnNmO1r+inI4Mur+3MpazGPSkl5MMawfPlyzp8/z9DQ0LSfN91trLm5mfr6egAymQwdHR24rluUZU/HvIZZc3MzqVSKwcFBHMdh1apVdHZ2snHjRqLRKIlEgsOHDwOwdOlSOjs7McawevVqGhoa6O/v59y5c8RiMXp7e2lpaSEej9PU1ERjYyNDQ0OcOHGCZcuW0draiud5HDlyhObmZjo6Okin01RWVrJs2TLOnTvHpk2bsNbS29tLIpFgfHyc0dFRWltbcV2XtrY2IpEInufR1dVFV1cX1dXVbN68Gc/zOH78OMlkki1btmCMYXBwkJMnT7Jx40aqqqpob2+nsrKSoaEhxsbGWLlyJb29vSxdupQvvviCNWvW0NTUhOM4JJNJPv/8c1atWpV/bl9fHwBVVVW0tbXln7NgwQLa29tJJpOsW7eOTCbD559/jud5tLa20tHRQW1tLbFYDGMMIyMjjI6OsmTJkknr5bou58+fJ5VKceLECQVawOQ+z8bGRiKRyKS/ua7LyMgIP/zhD/nVr37FG2+8QSKRYHh4eNJz5+K73/0uv/Vbv4Uxht7eXh5//HEGBgbmtMyZmNc+s3Xr1nH//fcTDodpaWnh29/+NtFolBtuuIGenh5Onz6NtZbm5mYefPBBamtrqa+vZ/v27Zw+fZpEIkFzczPr168HYPXq1TQ3N7N161aGh4e58cYbWbFiBZs3byaRSNDV1UUmk2Hnzp3ceOONGGO45ZZbuO2221i0aBGLFy+ms7OToaEh1q9fz/33308kEmHt2rVEo1F6enpYt24dg4ODnD9/HoBFixaxdOlSUqkU9957L7W1taxdu5auri7OnTvH5s2baW5u5vTp02QyGTZt2kR9fT3GGG6++WZqa2u55ZZbMMYwMDBAMplk6dKl9PT0sGnTpknPzbn++utxHIevfe1rtLS00Nvbi+d53H///SQSCSorK9m1axfV1dXcdNNN+XKuXr2azZs3s2vXLiKRCOvXrycWi9HV1cXatWsZGBjgzJkzbNmyhVgsBpTf+XfXssLBqpcTiUT40Y9+xL//+79P+vnHf/xHFi5cSCwW4w//8A/5j//4D/70T/8Ux8lGwHSC7EqPiUQixGIxotEo0Wj0qn9RzmvNzHVdrLVs2bKFpUuXMjAwgDGGSCRCU1MT58+f5+zZs2zcuJETJ06wYcMGPvnkEzKZDC0tLRw6dCi/0xUyxuTH16RSKYwxNDQ0kMlkGBwcZGRkhA0bNjA8PExra2v+mgXV1dUsWrSIeDyO53mkUim2bduGMYZUKsXp06cZHR3l9OnT+TCD7HieaDTK+Pg41lqi0SiLFi3izJkznDt3jg0bNhCNRunu7v7S92NwcJBYLEZzczO9vb2Ew+F8zSz3XGMMy5Yt4/XXX+eWW27h6aefJpFI0NjYiOu6fPbZZziOw/r166fcYHLveS5AU6kUvb29jI2NcebMGYaHh+nr66OlpYUTJ07M6fMV/0mn0/z4xz+msrJyUr9yJpNhZGQE13X5z//8T9566y3Gxsbyg1Zhbv2oUz23cOjF1TAvNbPcihlj+PDDD7nuuuvo6elhdHQUuFDlHRsbIxqNsn79eqy13HDDDaTTaZ577jmSySS7du3CcZz88nLfIkC+WZmr3Y2OjjIyMoK1lnQ6zb59+7jzzjvZv39/vt2eTCYZGRkhnU4DcODAARoaGmhra5tU7ouFw2Guu+46Pv74Y6y1pFIpzp8/TzKZpLu7m5deeolly5axbdu2ScspLO9U36hdXV289NJLrFixIh+q4XCYSCRCOp3GGJNfhrV2yuVN9Voff/wxjY2NLFu2bMoDJefPn6e2tvZKH6OUIWstHR0dHD16lGXLlvHVr36Vzz//nC+++ILx8XH++Z//mZdeeomjR4/S1dVVlKB54IEH+PGPf8wdd9yRX15dXR0/+MEP+LM/+zMaGhrm/BrTMa9HM621JBIJnn/+eeLxOKtWrcrvgKFQiKqqKpqbm/n00085cuQIFRUVrF27Nj/SOBKJMDw8zPbt29m0aRPLli3j6NGjuK7Lvn37+NrXvsbq1asBCIVCRCKRfF9BV1cXTz/9NKlUKl+uXDhEo1EgG6pvvvkm3/ve9yaV+2Jnz57l2LFj7Nixg7fffntS+VtaWli4cCGZTIaKigr6+/vZsmULdXV1OI5DOp2muro639fleV5+ua2trSxcuBDXdamoqMBam69ZeZ7HyZMn2blzJ8eOHWNsbAxrLV/5yleoqKhgcHCQoaEhampquP7661m5ciVHjx5lyZIlZDIZ9uzZw3e/+90pv3UrKyvzNU/1mQVLOBzm4Ycfpqmpia1btzI2NkZ9fT2PPPIIkUgEay1bt24F4OTJk7z88stzCjRrLW+//TY7d+6ktbU1f180GmXjxo387Gc/Y2Bg4Kr0z85LmOWqlkePHiUejxOPxzHGsHfvXsbHx3n33XepqqrCGENfXx/Hjh0jHo/z5ptvUl1dTV1dHdZaXn75ZUZGRnjttddobGxkz5499Pf38+677zI6Osrrr79OXV0dH3/8MYsWLcqH1N69e0mlUiQSCUKhEHv37mV4eJijR48Si8UYHx+fVLYnn3ySsbExAN59913Gx8fz69LX18fY2Bjnzp0DYGxsjA8//JCqqirS6TTnz58nFArR29vLyZMn8TyP4eFhqqqqePnllxkbG8uvbyaTobu7m48//hiARCKB4zh0d3dz8uRJADzPY2BggMWLF/POO++wYsUKqqurGR8f58UXX6StrQ3XdXnvvfdIp9Ps3r2bJUuWcOjQIU6dOsXg4CBjY2OMj4/zxBNP5JvGuffecRwWLVrE0aNHFWQBZIyhra2NlpYWGhsbGRsbo6KigjVr1lBRUTHpsZlMpijNwKGhIX70ox8B8I1vfAPHcTh79iw/+MEP2Ldv31VrZho7zVfSdTPnX+6jqK+vZ+3atXzwwQdF/Uaz1rJw4UJWr17NRx99pKOZZaKwpVP4U1lZmQ+owlDKdc088sgjrFq1in/6p39iyZIldHV1TRoqMVXXR641leuKyd1XXV1NOHz5uo+1lvr6ev7yL/+S6667jr/6q7/ivffeu+I6JZNJUqnUpO6k3PoU/jud62YqzHym8Jw1z/OK+v4WhtdcZyiQq2cmYWaMoaamhlAoRDgcxvM86urq+Pu//3v+/M//nMHBwfxy0+l0vkVSuIzphtnF2xPAwoULaW5u5tixY196YGE+wkznZvpI4fdKsYNsqteQYMmNFPibv/kbVq5cCcC+ffv4r//6L1pbW/nJT34y6ejlvn37+Lu/+7tJM2TMVEVFBffddx81NTWTlrF9+3Ygux2/8cYb9Pb2zm3lpkFh5iPzMQvC5ZY/n68jxTedL6Hckfx/+Id/yNfYciMGhoeH+eu//utJI/9HR0fzzc7Z1NBz4fmVr3yF5ubmKR/jui4HDhxQmInIZFfqsM8NzShUU1PD3/7t33LgwAFSqVTRToHLDYn64Q9/eMXnXQ0KM5Eyc7lAu1zf1OjoKG+99Vb+MdOtgV3pcZeb7KFUNAWQSBm4OISC2j0wl/VSmIlcI/wYgMXsx1UzU8Tn5jKwdSbzlV2u5ndxrfDLnjcd03m+7+YzE5Hiy4Vb4TCLYk7gOFVHf274xlSvM5fXLuYQJIWZSBkpHBzrum7+1LtidcJfrnaWSqXmdCR0Oq8111BTn5lImblSs28mLvfc6QTLleZWm65iBBmoZiZSlq40t/5sh1982RHTi5ufMwmgqQblFvuAhMJMpAxMNaZrqnNrixEQU4XOXM/hvdxzdTRTRIDiDVyd7gDZnPl6vbkEpsJMJACu9hgyP45ZU5iJlJEvm05nPpY9lav9etOlMBMpc6qVZWlohogEgsJMRAJBYSYigaAwE5FAUJiJSCAozEQkEBRmIhIICjMRCQSFmYgEgsJMRAJBYSYigaAwE5FAUJiJSCAozEQkEBRmIhIICjMRCQSFmYgEgsJMRAJh2mG2cOHCy16eXUSk1KYdZhs3bmTFihXzWRYRkVmbdph1d3ezdu1a317MQESubdMOs7Vr13L+/Pn5LIuIyKxNO8wSiQRHjhyZz7KIiMzatMPsxIkTjI6OzssBgNwyv+zfy/1NRARmcBHgs2fPYq2dlz4zYwyVlZV84xvfIBqNkkwm+dWvfkVVVRU7duwgEonw/vvv09/fz0033cSyZcvo6uriwIEDCjURAXwyzsxaSyqV4p133iGRSNDX10c6nebOO+/k7NmzfPHFF9xzzz0sX76cDRs2sHfvXrZs2UJLS4vCTEQAn4QZgOd51NXVsXHjRsbHx4lEIjQ2NnLs2DFOnDhBVVUV69at44svvuDcuXOcOHGCpUuXEolEuPnmm9m+fTvbt29n1apVwOSmqYgEn2/CDLJN2SeffJIdO3awaNEijDF4nofneVhrqaqqIp1OA5BKpQiHwxhjqK+vp6GhgcbGRh5//HHC4WzrWcNIRK4d0+4zuxrS6TSnT59meHgYx3FIpVIsXLiQRCKB53l0dXWxdOlSDh48yOLFizly5AipVIrXXnsNAMdxuOmmmzDGKMhErjG+CbOKigruuusuYrEYyWSS06dP8/7777Nr1y4ymQwfffQRx44dY9OmTTzyyCN4nsepU6cuWc7FRzsVaiLXBt+EWTqd5s0338RxHOLxOK7rcvToUTo6OjDGEI/Hsdby9NNPU1lZSSKRIJPJ6HxREQF8Ema52lMusAolEolJtaxMJpPvNwONNxORLF+EWaGpmoUX33fx7wo0EfHV0UwRkdlSmIlIICjMRCQQFGYiEggKMxEJBIWZiASCwkxEAkFhJiKBoDATkUBQmIlIICjMRCQQFGYiEggKMxEJBIWZiASC76YAEikvFosBLI71sDiAP2c3zk2UZY3BAMa6gIGAzMasmpnIXNj8/7DG+DrMHFwcXLIBbP1azFlTzUxklixgMISsh8WQNhWEcMF4E7U1f/GIkI3bDNlAc7IVs1IXrEgUZiJz4BkHrMGxacI2+7vFgPVXRBgsjnVxTYRQ/rYTnCRDYSYyawaLIYNrwkAIgOiaW6hdsdmHNTNLyGbImArMcA9nD7xJyE1kQ9dvRZ0lhZnIHJmJJptnoGHdLbTs/F62xuYz3kR/nnvqI858+g648Ym/BCPNFGYis5atmznWXjhSiCFjwj49QmjBWjImMtHPlw1cP5Z0Nvz39SEiMgsKMxEJBF80M621k65MfqWrlOeum5l7noiIb2pmheFVGGqXe6wu/CsihXxRMwNwHIe2tjaampro7OzkzJkz1NbWsnnzZqy1tLe309fXR2trK0uWLKGnp4fe3t5SF1tEfMI3NbNwOExjYyOpVIoHH3yQyspKWlpaWLp0KQMDAySTSZqamrjnnntIJpN885vfpL6+Xk1NEQF8VDNLpVJ88MEHVFRUcPPNN+cDKhKJkMlkGB0d5ZZbbuH48eMcOnSIRYsWsWLFCkZHR7n11lupqKgAoL6+vpSrISIl4pswy4XX2rVr6enpIZFI0N3dTTQa5fbbb+fgwYPU1NTQ39+PMYaRkRFisRiQDcLcMi7uS7vwu5n4/4XxNRfmESgVU1AGB4zN33tZvu4rzK7PhbUwmEtOaC78u4/ZbOmzn483cXZSbp3Ej3wTZtZaFi5cyJYtW3jxxRcBGBsb48CBAyQSCdra2jh37hwNDQ35x/b29pJKpXjvvfew1uI4Dr/xG78xabnGZDdH61TgYQjbNK4TpuRBZg0QApMCDI7nEPLiEyPHL7+72IkVygWCX1rY2fK4GDyyXxlOfi3MJY+7wORmnTB20oP8sFqecTB24sQkmw0ywB+Fk0v4Jsyi0SiPPPIIw8PDbN68mQMHDrB48WJaW1tZs2YNe/fuZWBggEcffRRrLa2trezdu/eKwzgshqpVW1n19d8iFarCsW72fj9skNbgWMg4Dsnuz+h85f/B8cav/LQFTRCJ+ibILnAwXhjHOjiJAWy8j0vny5qoIVtLfuocHLC+6b6dkDvvMoJnQjjWI2Q9cnNliP/4Jsw8z2PPnj0YY/A8D9d1OX/+POFwmOPHj9Pf34+1lmeeeYbGxkb279/P6OjotJYdrmkgtuE3CIWjZE+4zc7nVNpAyzZhQp5D2gkRNl52+hhrv/RUGGsc1j/8v1OzZuukRuqFZZZGblaGtBPCweXMW8/S+er/TcjLXFIqw0VBNnGr8N/SN6YN2Ahh6+KQnpgNw79zlYmPwiyZTHL8+PFJ9w0ODjI4ODjpvqGhIYaGhma07JD1cE2IkHXxckFR8mpNttniOS4GcCx4jofxrrS7GNzKGjLR+ol+Rju5CVRCxkLGMYRJYcJVRLzMpaFUcIdnQnihSqINLVhn8qZY8pqzNdkpfTCAS2rkDCRGcKx6zfzKN2GWUzi6v1gsBo8Q2R3ewSvakufAQjbMLMaCS5iMCRMhfcWnXoiuybWZUvMcS8gaQtbgmRBpxxCykyfDyR2GMRNlDlfXseV/+RGZ2pYSlPjLWWPxcKhyExx55v9k5OBrUxzQEL/wRZhNNU5sJmPHrhR82dk1XTwTnujysBM7Uym3Spudi906GDw8Ywl79orNzOwzL8xyCvhk57oQWq7JvruOnXp9LCb7n/XwTIhMVR1e1YKrXuIvl/18wJLxqrDhyOSDz+I7vgizq8P6a0PM7d8XZaovcqmIprM+droPvKpMwf+lHPjtEJKIyKwozEQkEBRmIhIICjMRCQSFmYgEgsJMRAJBYSYigaAwE5FAUJiJSCAozEQkEBRmIhIICjMRCQSFmYgEgsJMRAJBYSYigaAwE5FAUJiJSCAozEQkEBRmIhIICjMRCQSFmYgEgsJMRAJBYSYigeCL62ZaawmFQqxdu5bm5mY6Ojro7OyksrKS66+/nlAoxCeffMLY2BhtbW0sW7aMrq4uOjo6Sl10EfEJX9TMjDE4jkNlZSVnz57l/vvvJxqNcvvttxOLxXAch127drF48WJuv/12zpw5w1133UVjY+MVr2YuItcGX9TMANLpNAcPHqSyspJEIoHjOCxbtoynnnqKdDrN5s2b2bhxI8ePH+fYsWMsXbqUFStWMDg4SEtLC47jYIyhsrKy1KsiIiXgizArrF1t2LCBzs5OMpkMjuOQTqdJp9N4nkdtbS2Dg4MAjI2NUVlZSSQS4Rvf+AbRaBSAxsbGkqyDiJSWL8Isp6mpiU2bNrF7927S6TSu61JdXU0ymQTgzJkzLFq0CGMMjY2NnDp1ikQiwc9+9jOstTiOw1/8xV+UeC1EpBR80WcGEIvFeOSRR7DWcssttxCJRDh8+DC7du1i165dHDt2jCNHjrB8+XLuvfdempqaOHnyJID6zUTEPzWzTCbDL3/5SxzHwfM8MpkM+/fvp6OjA8dxOHfuHK7r8tRTT7FgwQKGhoYYHx/HGKMwExH/hFkqlaKrqysfTsYYAPr6+iY9bnR0lNHR0VIUUUR8zBdhlguuqX6/+G8iIlPxTZ+ZiMhcKMxEJBAUZiISCAozEQkEhZmIBILCTEQCQWEmIoGgMBORQFCYiUggKMxEJBAUZiISCAozEQkEhZmIBILCTEQCQWEmIoGgMBORQFCYiUggKMxEJBAUZiISCAozEQkEhZmIBILCTEQCQWEmIoGgMBORQPDFRYCttTN+Tu7K5yIi4JMwyzHGUF9fz/nz58lkMlRVVbFkyRIAzp07x/nz51mwYAENDQ0MDAwwMjICzC4MRSRYfNPMDIVCbN++nd/93d+lpqYGgOXLl3PbbbfR0tJCNBqlrq6Ohx56iFWrVvHYY49RW1urIBMRwEdhFolEGBkZoa+vL3+fMYbBwUE+++wzzp49y+rVq+no6OCNN96gu7ubFStWYIyhoqKCyspKKioqcBzfrJKIXEW+aWYmEgk+++wztmzZgjEGgL6+PlasWMFjjz3Gnj17qK+vp7+/H2stAwMDLFiwgGg0yuOPP04sFgOytTkRufb4JswK5ZqOQ0NDvPbaa2zcuJG2tjaGh4epra0FoKamhsHBQeLxOD/5yU8AcByH73//+yUrt4iUjm/aZMYYli1bxsKFC2lra6OiooKmpibWrFnD5s2b6e7upr29nfXr13P99dfT1tZGR0cHAJ7n5X/UhyZybfJNzSx3JPPQoUNUVVURDoepqKigsbGRjz76iJMnT2Kt5dVXX6W1tZVXXnmFoaGhUhdbRHzCN2FmreXQoUOT7ovH4/T09OT/boyhq6uLrq6uSc8TEfFFMzPX4T+bx0znuSISfL4IMxGRuVKYiUggKMxEJBAUZiISCAozEQkEhZmIBILCTEQCQWEmIoGgMBORQFCYiUggKMxEJBAUZiISCAozEQkEhZmIBMKMwswYoyl3RMSX5lQzU7CJiF+omSkigaAwE5FAUJiJSCAozEQkEBRmIhIICjMRCQSFmYgEgq/CzFqb/8n9frl/Cx8nIuKrMCt0pUATESnkizDL1bIcx6GlpYVIJAJAKBRi5cqVrFmzhoqKCowxNDQ0sHHjRhoaGjDGKNxEBPBJmAGEw2G+9rWv8Tu/8zvU1NRgjGHHjh3ccMMNbNiwgZ07d1JfX8+3vvUt6uvrefjhh1mwYEGpiy0iPuGbMAuFQvT29nL69Ol8LW3dunXs2bOH119/naVLl7Jx40ba29t59913OXXqFG1tbRhjqK6upqamhurqakKhUKlXRURKIFzqAuQkk0lOnDjBtm3bMMYQDocJh8PE43Fc18XzPJqamujo6MBay9DQEDU1NUSjUX7v936PWCwGwLJly0q8JiJSCr4Js4tlMhk8zyMajZJMJjHG0N/fT11dHQC1tbX09fUxPj7Ov/zLvwDgOA7f//73S1lsESkR3zQzHcdhzZo1NDY2sm7dOsLhMO3t7dxxxx3cdtttdHd3c/ToUdavX8+2bdtYsWIFp06dAjRUQ0R8VjMLh8Ps3bsX13UxxvD222+zevVqjDG0t7eTSqXYvXs3ixcv5sUXX+T8+fOlLrKI+IRvwszzPI4cOXLJ/UePHs3fNsZw+vRpTp8+fTWLJiJlwBfNzMIZay+evTb3e25MWeHvmsZbRHJ8UzObbqBN9XcREV/UzERE5kphJiKBoDATkUBQmIlIICjMRCQQFGYiEggKMxEJBIWZiASCwkxEAkFhJiKBoDATkUBQmIlIIEw7zJLJJJ7nzWdZRERmbdphdurUKVKp1HyWRURk1qYdZpqSWkT8TH1mIhIICjMRCQSFmUgRlUNnjKE8yjlTCjORa1iQZqBXmIkUUTlkg+VCOYN0XE9hJiKBoDATkUBQmIlIIPjmupkXm84gXV0/U0RyfBtmAJFIhJqaGgDGx8dJJpNUVFQQjUaJx+OkUikFmogAPg+zFStWsHPnTnp6ejh06BDnzp3jwQcfJB6PU11dzbPPPks8Hi91MUXEB3zdZxYKhWhvb+dXv/oVnZ2drFmzhv7+fl544QVGRkZYsWIFkG1uqoYmcm3zdc1seHiYhoYGvvvd7/LKK6/Q1NREX18f1lrOnDlDQ0MDsViM3//93ycWi2GMoa2trdTFFpES8HWYnTlzhqeeeorrr7+eTZs2MTo6SjQaxVpLZWUl4+PjxONx/u3f/g1jDI7j8Cd/8ielLraIlICvm5k1NTXU19ezdOlSBgYGOHXqFOvWrWPJkiWsXLmSzs5OrLWMj48zNjbG2NgYruuWutgiUgK+rpm1traydu1a+vr6OHDgAK7r8vHHH7NlyxY++OAD+vr6Sl1EEfEJ34aZMYbjx49z/PhxrLX5Dv5Dhw5x6NAhTRYpIpP4NswKTXWksvA+BZuI+LrPTERkuhRmIhIICjMRCQSFmYgEgsJMRAJBYSYigaAwE5FAUJiJSCAozEQkEBRmIhIICjMRCQSFmYgEgsJMRAJBYSYigaAwE5FAUJiJSCAozEQkEBRmIhIICjMRCQSFmYgEgsJMRAJBYSYigaAwE5FAKIvrZuZcfH1MY8y0rpmZf4TJ/mIv3Cw5M4dS+KH8OcYWvqO529Mt4VzehXlSuCoTvxtbeEf2zgv3Td6ifLc+XPiMJr/bub2h/JVNmE0VWtO/+G/24zPWw1iHjHHAevP7EV5p4XZiBzBpLBVYY3BmeDHjSS9R8r3HYjBYHCwuAGaKrwybu894YEMYm925TMnLfymDxVozUWaH7O6SufAACw4WD/CMg7E2+5FO/M1vXOMQth4Gl+z6+LCQc1B2zcxoNEpzczPRaHTaz7HGwxqDa8KAQ/hqXAHdXuEHQ9pU4BmDYzMYXFzHmdhxvpyxJhsUk5ZXaoa0E8IzljBJHNKXWZdsFcfLBZ9x8GPNwBpIhbJvbchajElhnSSTU9fgEcIaB8e6hPBwrFuqIl9RiAzg4RqDh4Nhnr/Qr7KyqZkB1NTU8O1vf5vBwUEaGxv5xS9+wdjY2Jc/yWY3xogLKQMZxxKy2R2qlBlgrKXSjuNi8Qhn645fErIXaqEWa0pf/qlUuGksETxiWBvFsaFsveXi9bJ2IoMn6m5mYp18ptL1sDaMZ8JYW4HxwhP1sMmBhs3elyZC2kSwBvz36WTfZ0MIz4SwOBgMHlzy+RhTnhFXVmG2Zs0aTp8+za9//Wu++c1v0tbWxqeffkooFMJai+M4GGNwHAfHyVY6LeA5EUIYKsmQMhDK9+9c+NAKf5vO7Ss9Lueym4UBCIFjiLiQse5Euad+Rm4D84xDaKIxd9nFzmB9ivcci+cAuDg2g+OkIOTi2Isq/9ZizYUmaMi4hHHxJnb/+Snb7J7jGQdjMhhSOE4GYxym2s8NFpcw1oSptEkiNjMRGP5ZHwtYGyLsWTybImwy4IBT0DjzPO/SlSsjZRVmDQ0N9Pf3Y63l7Nmz1NXVEYvFePzxx4nFYjiOw9atW/njP/5jXNfNHiDAEq6rp6rlHCG8ib6pXD/I/Mj3CV/hyzlbG7GELKSqGhn/4/8t/y0P2Zqo67rE43Fg4oAHhuqVCwnV9l3yoqX8PrVkm2Zh6+EB43dsIr3uT/MhbK2loaGB4aEh3Il1NNZgI5XULndxQn1ftviS8IwlbLN1sfEH7yTz9evIpZnjONTV1TEwOIjByzbbrKWyZQUVi/pxrP9qN2aiXpmqreG+P/pfcS04E01NYwzPPfccx44dK3UxZ62swiyRSBCLxYBs39no6CjxeJx//dd/xRhDdXU1f/AHf8BPf/rTfJjlgmE+w+sSdibdWBceeXEJ77vvPs6ePcv+/fsv+ospbXJNU7ZDPHvE2RjDH/3RH/H//uxnjI6OZB9gwZZLk8ZOHEaaWJ8FCxbwve99j//rpz8l16g0ZbQ+xlqsmagfW8uOHTtYtWqVwuxqMMbQ0dHBvffeS29vLytXruSXv/wl1lrS6TTWWiKRCKlUitHRUTKZzJUX6nPxeJx4PM7IyEipi1IU6XSakZGRQKyP4zikUilGRkZmcFTdv+LxONXV1aUuxpyUTZhZa+nt7WXv3r2sWrWKt99+m/7+/kmdldbaS0KsXDszc+tyoYZZvnI1s2QyCZTvZ5JjrcVaSyqVAoKxPplMpuwrAMZO82tl69atDAwMsGDBgkl9OFfLdIrpOA5NTU309fXlH1+OG1qu7LFYDNd18ztNucqF2YIFCwJRk8kdbKqpqQlELdNaS1VVFcYY4vG4L/eZzz///IqPKZuaWWFH8sW3cztH7sDAxc8pli/bCedjA8h9acyXq7U+uc9oeHh4XneUqc4QmQ/GGDzPm7cgu9znMp/vXSKR8GWIzUTZhFlO4Rueuz3VfVerHIXhWuxlB8nVXKer8VpB+oxKsf/Mh7ILs1Io/KasqanhhhtuwHEcPvroI8bHx0tYstnJrY/jOCxZsoQNGzbQ09PD0aNH8Tyv7Dbo3PpEIhHWr19Pa2srhw8f5syZMyUu2dxEIhEaGhpIJpOMjY2RTqeB8g6c+VR2pzOVUktLC9/5znfyHaZ33nlnWW5YuYHF27dvZ+fOnXR3d7N582ZWrVoFzOScV/+oqqriW9/6FmvWrKGzs5N77rmHWCxWluuSEwqFuP7663n88cdZvnx5qYvje6qZTVNtbS0PPPAAv/71r2lvb6elpYV169bl+4PK7YDDpk2bWLNmDc888wxjY2MsXbqUuro6YPJsJH5en1wZQ6EQd999N4ODg+zZswfHcbj11luprKxkbGxsUt9qOaxPYVnr6+t5++236ejouORxucdKlmpm03TjjTfy+eefc/LkSaqqqrjzzjs5fPgwy5cv57rrrpvRie+lFg6H+cpXvsLLL7/M2NgYy5cvZ+XKlXR3d3PdddfR1taWPx2sHDQ1NVFfX89bb72FtZZt27YxPDxMMpmkqqoqf7pbOcgFWHV1NQ888ABdXV289957eJ5HTU0NFRUV+c9GQTaZambTZIwhnU7T1NTEXXfdxcDAACtXrmT9+vX09fWxdu1aXnjhhbI5v811XcLhMBs3buS2227j4MGDfPOb36Szs5O6ujpqamr45JNPSl3Macl9NtXV1dx4440sXbqU559/nlWrVrF9+3aGhoZ4/vnncV3/zmiR4zgOX/3qV2lra+Ojjz5i3759eJ5HKBRix44dbNiwgffff5/333/f9zXNq618vn5L7MMPP2ThwoXs3LmTTz75hGg0ysjICL/4xS/Yu3cv9fX1RCKRfJOzsOnpN5lMhjfffJPbb7+ddevWsWfPHrZs2cLrr7/Oa6+9xuHDh1m5ciVAWazP2bNnOX78OPfddx8Av/jFLxgdHWVoaAhrLe+++y6u6/p+PSD7JfPrX/+avr4+hoeH81+O1lpGRkY4d+7cpC8Zv6/P1VQ2g2ZLqbAvwxjDihUruPXWW3nmmWfIZDLceuutNDU1sWfPHmKxGOfOncsfeco9z08Kj2Zaa/PNmQMHDlBVVcVjjz3GO++8Q0dHB57nTapt+m1dYPL6hEIhAJqbm7n33nt5+eWX6enpobKykoaGBkZGRq48bVSJWWuprKwkEomQyWRIp9Ns3bqVVatWsXv3buLxOLW1tfltLZPJ+PJzKaZADZr1g9y3YHV1Nf39/YRCIbZt28batWs5efIkjzzyCENDQ2QyGX75y1/mmzV+bQ7khmHEYjH6+vqoq6vjvvvuo729nd7eXu6//37q6up4++23OXnyJICvO9M9z6OtrY0dO3YQi8X4n//5H3p6eliyZAn33HMPIyMjRKNRXnrpJQYGBnxX/kKpVIpUKsUdd9xBS0sL1lp2795NMplk+/btbN68meHhYeLxOK+88sqkJrSf12s+qZk5TblamTGGL774gmg0yne+8x3q6+s5deoUy5cv5+mnn+b5559n4cKFLFiwYNLz/doUyDXDvv71r/Pggw9y5MgR3nnnHRKJBH19fXiex9mzZyc1Z/y4LrkduKOjg87OTsbGxujr62Px4sU88MADvPnmmzz77LN0d3dPakL73XvvvZefZCGRSLB9+3ZWrlzJk08+yQsvvMDixYsnHXy6VoMMVDOblsLR/pA9zWj37t2EQiFqa2t56KGHeOqppxgZGWHVqlX5c9xisRjJZNJ3J4tffHJ+Z2cnTz75ZP53yHYrtLW18dxzzzE+Pp4/ipZMJn0XAoXr43kee/fuZdmyZRhjuPPOO3nzzTfp6OggFouxevVqXnrpJaLRKK7r5mdc8evnk0gk+O///m8aGxtpbGxk06ZNPPHEE4yNjbF+/XpSqRTpdDq/rZXLAaj5oDCbgcLxV57nYa2lvr6eM2fOMD4+TltbG3fffTfvv/8+Dz/8MI7jcP78eV5++WVSqZSvdhhgUk0rk8kQCoW46667sNbS2NjICy+8QDwe56abbuLGG28kk8lw8OBBDh065LtAK+R5HqdOnaKqqoqqqio6OzupqanhN3/zNzlx4gQ33ngjzc3NZDIZXn31Vfr6/DcxZKFkMkl3dzcbN26kp6eHeDzO2rVrueOOO/jggw947LHHMMbQ39/Pq6++mp/9wm/b23xTM3OGck1NyIZAT08P0WiUxx57jNtvv50PPviAbdu28f777/PEE08QiURoaWkpcamnVth0huyRtIMHD7J582b27dtHPB7PDwd49tlneeGFF7j55pvznex+U7g+uSmHTpw4wUMPPcSjjz6aH+ycSCR44oknOHjwIDfffDPg3yZnYSB1dnayYMECvvOd77Bjxw7279/Ptm3beOedd/j5z39ObW0tixcvLmFpS0s1szmKx+M8//zzVFdXk0wmefTRR3njjTc4fvw4NTU11NfXMzo6WjbfkqdPn+bnP/851dXVtLa2sn79ep566inGx8fZtGkT4+PjZdGUyYXTO++8Q21tLalUiq1bt+bPEgBoa2vj9OnTpSzmtBljGB8f57nnniMWi5FKpXjsscd49dVX6ejoYMGCBfkplqZ7PdmgUc1sDnIBlU6nGRwcJBqNYq2lvb09P4L78OHDDA4OltXGdfbsWdrb21m5ciWffvop8XictrY2brvtNt54442yCLPC2ubQ0FB+Hfbv348xhltvvZWamhoOHTpU4pJOT277SSaT+W0tnU7T1dWVb0Lv378/EPOrzZZqZrN08fRDxhhGRkZIJBLcfffdtLS0cPTo0fxIbb+bqubY0dHBHXfcwaJFi2hububFF1/0ff9SoYvnumtvb+f2228nHA6TyWTYvXt32Ux8efE0PSMjI2QyGe6++26WLFnCwYMH+fjjj6d8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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('circle4hist.jpg')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "5216c457-12f6-451e-92a8-d43c5a15e98f", - "metadata": {}, - "source": [ - "## Line 8 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "c6ebdc89-ba16-41c4-b623-7862a0ae29af", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('line8.png')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "6dffee97-669a-4c03-a506-55c8ebbe0be1", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('line8hist.jpg')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "8cb5df08-342e-4cfd-b65e-42a8528b6969", - "metadata": {}, - "source": [ - "## Line 16 nodes\n", - "![alt text](line16.png)" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "62827e5d-82f4-433e-80ea-7eecf1dedbfb", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('line16.png')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "a29b9882-972f-4f52-b4d2-0eb4d4ee866e", - "metadata": {}, - "source": [ - "eof" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 [Default]", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} From cc9af65a4dfe6606eb59e1ed5da20735e99d914d Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Fri, 26 Jul 2024 22:47:00 +0200 Subject: [PATCH 74/83] Delete community/womanium/assignments/hw4-5-2.ipynb --- community/womanium/assignments/hw4-5-2.ipynb | 989 ------------------- 1 file changed, 989 deletions(-) delete mode 100644 community/womanium/assignments/hw4-5-2.ipynb diff --git a/community/womanium/assignments/hw4-5-2.ipynb b/community/womanium/assignments/hw4-5-2.ipynb deleted file mode 100644 index 50400e74..00000000 --- a/community/womanium/assignments/hw4-5-2.ipynb +++ /dev/null @@ -1,989 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "b7f74e3a-7dae-4939-a2ef-0ff82d8eadd0", - "metadata": {}, - "source": [ - "\n", - "# Assignment 6.12 - womanium 2024\n" - ] - }, - { - "cell_type": "markdown", - "id": "adc17ffc-b892-4a94-bebb-4ba74d208a9e", - "metadata": { - "tags": [] - }, - "source": [ - "## Advanced Algorithms Design:\n", - "## Quantum random walk" - ] - }, - { - "cell_type": "markdown", - "id": "2060a234-6a10-453e-b4a2-7b644128c3e9", - "metadata": { - "tags": [] - }, - "source": [ - "Following the example of a quantum walk operator for \n", - "the case of a circle with 4 nodes, a quantum walk \n", - "operator is designed for the case of a line with 16 \n", - "nodes.\n", - "\n", - "Using the file quantum_walk_circle_example.py as a \n", - "template, both the case of a circle and of a line with \n", - "4, 8, and 16 nodes are implemented in this notebook.\n" - ] - }, - { - "cell_type": "markdown", - "id": "fe7f2080-a6eb-4aa5-8865-97aa9acd5c14", - "metadata": {}, - "source": [ - "## Environment and imports" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "fd9eebc7-b78b-4aa7-8614-fbd7dc07f452", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", - "qiskit-ibm-runtime 0.25.0 requires pydantic>=2.5.0, but you have pydantic 1.10.17 which is incompatible.\n", - "qc-grader 0.19.7 requires networkx==3.2.1, but you have networkx 2.8.8 which is incompatible.\u001b[0m\u001b[31m\n", - "\u001b[0mNote: you may need to restart the kernel to use updated packages.\n" - ] - } - ], - "source": [ - "%pip install -U -q classiq" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "202628d6-3fe3-47fa-8a15-04b7fd9716f4", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "from classiq import *" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "99432d7f-12fd-4a46-bbf0-cf3651c04076", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg" - ] - }, - { - "cell_type": "markdown", - "id": "59927721-34b7-49e8-8b88-6a75663aef7a", - "metadata": {}, - "source": [ - "## Implementation" - ] - }, - { - "cell_type": "markdown", - "id": "bbe3dfa3-2265-44af-b708-9a0ad189f5bf", - "metadata": {}, - "source": [ - "\n", - "## Common functions for circles or lines\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "425c8fd2-f8f5-409b-a569-d923819437c4", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Prepares the minus state (aux qubit) for the diffuzer oracle\n", - "@qfunc\n", - "def prepare_minus(x: QBit):\n", - " X(x)\n", - " H(x)\n", - "\n", - "# x: current node\n", - "@qfunc\n", - "def diffuzer_oracle(aux: Output[QNum],x:QNum):\n", - " aux^=(x!=0)\n", - "\n", - "# Zero diffuser using Grover's algorithm technique\n", - "# x: current node \n", - "@qfunc\n", - "def zero_diffuzer(x: QNum):\n", - " aux = QNum('aux')\n", - " allocate(1,aux)\n", - " within_apply(compute=lambda: prepare_minus(aux),\n", - " action=lambda: diffuzer_oracle)\n", - "\n", - "# non-zero probabilities for allowable transitions\n", - "# @qfunc\n", - "# def W_iteration\n", - "\n", - "# Iterates over all possible positions and applies \n", - "# the W_iteration for each position.\n", - "@qfunc \n", - "def W_operator(vertices:QNum, adjacent_vertices: QNum):\n", - " for i in range(num_nodes):\n", - " W_iteration(i,vertices,adjacent_vertices)\n", - "\n", - "# Edge oracle for checking adjacency of 2 vertices\n", - "#\n", - "#@qfunc\n", - "#def edge_oracle\n", - "\n", - "# Swaps the contents of two quantum registers: moves the walker\n", - "@qfunc \n", - "def bitwise_swap(x: QArray[QBit], y:QArray[QBit]):\n", - " repeat(count= x.len,\n", - " iteration= lambda i: SWAP(x[i],y[i]))\n", - "\n", - "# shift operator moving the walker if vertices adjacent\n", - "@qfunc \n", - "def S_operator(vertices:QNum, adjacent_vertices: QNum):\n", - " res = QNum('res')\n", - " edge_oracle(res,vertices,adjacent_vertices)\n", - " control(ctrl= res==1,\n", - " operand= lambda: bitwise_swap(vertices,adjacent_vertices))\n" - ] - }, - { - "cell_type": "markdown", - "id": "9761696b-cefe-4ea0-9c91-ebd33af62e22", - "metadata": {}, - "source": [ - "## Circle-specific functions\n", - "\n", - "Here we have the function W_iteration with the \n", - "probability of 0.5 going in either direction.\n", - "\n", - "What is special about a random walk on a circle is that \n", - "the node (0) and the node (num_nodes-1) are adjacent. \n", - "This fact is taken care of in the function edge_oracle." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "5ab73e30-56fd-4028-bb13-e2f883a4e3ae", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "\n", - "# non-zero probabilities for allowable transitions\n", - "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", - " prob = [0] * num_nodes\n", - " prob[(i+1)% num_nodes]=0.5\n", - " prob[(i-1)% num_nodes]=0.5\n", - " print(f'State={i}, prob vec ={prob}')\n", - " \n", - " control(ctrl=vertices==i,\n", - " operand=lambda: within_apply(\n", - " compute= lambda: \n", - " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", - " action= lambda: \n", - " zero_diffuzer(adjacent_vertices)))\n", - " \n", - "# Edge oracle for checking adjacency of two vertices \n", - "@qfunc\n", - "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", - " diff = vertices - adjacent_vertices\n", - " mod = diff%num_nodes\n", - " res |= (mod == 1) | (mod == num_nodes-1)\n" - ] - }, - { - "cell_type": "markdown", - "id": "423cf377-1bc7-4637-855c-b82ced39cca9", - "metadata": {}, - "source": [ - "## Circle with 4 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "e39e695c-cc7d-4983-ba7b-2d076262a66b", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Circle with 4 Nodes \n", - "\n", - "# Size of the register required for the number of nodes\n", - "size = 2\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "a863aa31-dc65-4ad4-9985-4fca062ab269", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk operator function\n", - "# applies the W and S operators after initializing\n", - "# vertices\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "1427b784-9701-4338-aec2-5cb5566a6d32", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 0.5, 0, 0.5]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5]\n", - "State=3, prob vec =[0.5, 0, 0.5, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "22cec3d3-aef0-46c6-9de2-74ee40d81b96", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "write_qmod(qmod,\"random4\")" - ] - }, - { - "cell_type": "markdown", - "id": "0c9a5e9c-ed50-44d1-b9ed-665f96274a92", - "metadata": { - "tags": [] - }, - "source": [ - "## Circle with 8 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "a5063b48-425c-4d73-8d6e-8b575cc61be3", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Circle with 8 Nodes \n", - "\n", - "# Size of the register required for the number of nodes\n", - "size = 3\n", - "num_nodes = 8\n" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "d137cf61-e92b-46d4-870e-4d1fc021650c", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk operator function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "94168a88-cdb4-411c-a162-52adf0c622bb", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0.5]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=7, prob vec =[0.5, 0, 0, 0, 0, 0, 0.5, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "7458e3ac-0e87-49e2-9139-59ee31fc27f4", - "metadata": {}, - "source": [ - "## Circle with 16 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "7e7ad59c-80ca-4452-af10-883711c9b104", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Circle with 16 Nodes \n", - "\n", - "# Size of the register required for the number of nodes\n", - "size = 4\n", - "num_nodes = 16\n" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "d3444344-5117-4021-9d15-1476582bf61d", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "d30601d3-5b4f-4b23-af9d-f93d0a4f6777", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", - "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", - "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=15, prob vec =[0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "ccfdf941-9d91-402f-a200-ccc266f73e99", - "metadata": {}, - "source": [ - "## Line-specific functions\n", - "The function W_iteration defines the transition \n", - "probabilities for a line. At the beginning and at the \n", - "end of the line the walker can go only in one direction \n", - "(probability = 1). For all other nodes the probability \n", - "going in either direction is 0.5.\n", - "\n", - "Here the function edge_oracle just has to check whether \n", - "the vertices are adjacent (distance = 1)." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "47e777d7-6527-4901-a034-951c624037e4", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "\n", - "# non-zero probabilities for allowable probabilities\n", - "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", - " prob = [0] * (num_nodes)\n", - " if i == 0:\n", - " prob[i + 1] = 1.0\n", - " elif i == (num_nodes) -1:\n", - " prob[i - 1] = 1.0\n", - " else:\n", - " prob[i - 1] = 0.5\n", - " prob[i + 1] = 0.5\n", - " print(f'State={i}, prob vec ={prob}')\n", - " \n", - " control(ctrl=vertices==i,\n", - " operand=lambda: within_apply(\n", - " compute= lambda: \n", - " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", - " action= lambda: \n", - " zero_diffuzer(adjacent_vertices)))\n", - "\n", - "\n", - "# Edge oracle for checking adjacency of two vertices\n", - "@qfunc\n", - "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", - " diff = vertices - adjacent_vertices\n", - " res |= (diff == 1) | (diff == -1)\n" - ] - }, - { - "cell_type": "markdown", - "id": "07488d17-7cac-4e36-8335-e3303cff8efe", - "metadata": {}, - "source": [ - "## Line with 4 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "92d3f78c-ee23-45bf-acba-6d0ff0608847", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Line with 4 Nodes\n", - "\n", - "# Register size to accomodate the number of vertices\n", - "size = 2\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "613c61cc-10ea-4950-a262-3dd572c8701c", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "46fca7f3-3106-416d-a3f8-379f7095f8fa", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 1.0, 0, 0]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5]\n", - "State=3, prob vec =[0, 0, 1.0, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "9dd17d8c-83dd-463d-b155-9b8c949f97d1", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "write_qmod(qmod,\"random4\")" - ] - }, - { - "cell_type": "markdown", - "id": "cfbc239f-2bfb-496a-a752-1a84f657ac3f", - "metadata": { - "tags": [] - }, - "source": [ - "## Line with 8 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "08283335-a49f-4d6e-a702-fb76ab01724b", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Line with 8 Nodes\n", - "\n", - "# Register size to accomodate the number of vertices\n", - "size = 3\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "07a57ceb-c1da-47d7-8d6b-45e18667d747", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "fb711141-eadd-4ac5-bb1d-fbd31bb71f8f", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=7, prob vec =[0, 0, 0, 0, 0, 0, 1.0, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "7b486184-7850-4c58-baac-9e89a942e059", - "metadata": { - "tags": [] - }, - "source": [ - "## Line with 16 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "52ccbff2-f15f-4fe2-86fd-6e1d0128f428", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Line with 16 Nodes\n", - "\n", - "# Register size to accomodate the number of vertices\n", - "size = 4\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "e773bbb1-e532-477e-8891-c47f8f4f1f8d", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "c3833a55-49af-4214-be22-5b52eaa22ba6", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", - "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", - "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=15, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "4b28d548-febf-43b3-9271-6cab28fd2cbb", - "metadata": {}, - "source": [ - "# Results" - ] - }, - { - "cell_type": "markdown", - "id": "b7d6c2a8-063f-4ffe-bf3c-18212aa1d57f", - "metadata": { - "jp-MarkdownHeadingCollapsed": true, - "tags": [] - }, - "source": [ - "## Number of qubits vs. nodes\n", - "\n", - "| random walk | num_nodes | transpiled qubits |\n", - "| :- | :-: | :-: |\n", - "| circle | 4 | 13 |\n", - "| circle | 8 | 22|\n", - "| circle | 16 | 33 |\n", - "| line | 4 | 17 |\n", - "| line | 8 | 25 |\n", - "| line | 16 | 37 |\n", - "\n", - "Here we see that the more nodes we have, the more \n", - "transpiled qubits are going to be used. Lines need more \n", - "qubits than circles." - ] - }, - { - "cell_type": "markdown", - "id": "2d8f26a8-18aa-4dda-a3ed-a3974e0184b9", - "metadata": {}, - "source": [ - "## Circle 4 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "335019e0-e185-41d5-b894-6116ada649d6", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('circle4.png')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "6bd34621-0458-4a1b-ac69-62892bcba54c", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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zWj37t2EQiFqa2t56KGHeOqppxgZGWHVqlX5c9xisRjJZNJ3J4tffHJ+Z2cnTz75ZP53yHYrtLW18dxzzzE+Pp4/ipZMJn0XAoXr43kee/fuZdmyZRhjuPPOO3nzzTfp6OggFouxevVqXnrpJaLRKK7r5mdc8evnk0gk+O///m8aGxtpbGxk06ZNPPHEE4yNjbF+/XpSqRTpdDq/rZXLAaj5oDCbgcLxV57nYa2lvr6eM2fOMD4+TltbG3fffTfvv/8+Dz/8MI7jcP78eV5++WVSqZSvdhhgUk0rk8kQCoW46667sNbS2NjICy+8QDwe56abbuLGG28kk8lw8OBBDh065LtAK+R5HqdOnaKqqoqqqio6OzupqanhN3/zNzlx4gQ33ngjzc3NZDIZXn31Vfr6/DcxZKFkMkl3dzcbN26kp6eHeDzO2rVrueOOO/jggw947LHHMMbQ39/Pq6++mp/9wm/b23xTM3OGck1NyIZAT08P0WiUxx57jNtvv50PPviAbdu28f777/PEE08QiURoaWkpcamnVth0huyRtIMHD7J582b27dtHPB7PDwd49tlneeGFF7j55pvznex+U7g+uSmHTpw4wUMPPcSjjz6aH+ycSCR44oknOHjwIDfffDPg3yZnYSB1dnayYMECvvOd77Bjxw7279/Ptm3beOedd/j5z39ObW0tixcvLmFpS0s1szmKx+M8//zzVFdXk0wmefTRR3njjTc4fvw4NTU11NfXMzo6WjbfkqdPn+bnP/851dXVtLa2sn79ep566inGx8fZtGkT4+PjZdGUyYXTO++8Q21tLalUiq1bt+bPEgBoa2vj9OnTpSzmtBljGB8f57nnniMWi5FKpXjsscd49dVX6ejoYMGCBfkplqZ7PdmgUc1sDnIBlU6nGRwcJBqNYq2lvb09P4L78OHDDA4OltXGdfbsWdrb21m5ciWffvop8XictrY2brvtNt54442yCLPC2ubQ0FB+Hfbv348xhltvvZWamhoOHTpU4pJOT277SSaT+W0tnU7T1dWVb0Lv378/EPOrzZZqZrN08fRDxhhGRkZIJBLcfffdtLS0cPTo0fxIbb+bqubY0dHBHXfcwaJFi2hububFF1/0ff9SoYvnumtvb+f2228nHA6TyWTYvXt32Ux8efE0PSMjI2QyGe6++26WLFnCwYMH+fjjj6d8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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('circle4hist.jpg')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "5216c457-12f6-451e-92a8-d43c5a15e98f", - "metadata": {}, - "source": [ - "## Line 8 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "c6ebdc89-ba16-41c4-b623-7862a0ae29af", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('line8.png')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "6dffee97-669a-4c03-a506-55c8ebbe0be1", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('line8hist.jpg')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "8cb5df08-342e-4cfd-b65e-42a8528b6969", - "metadata": {}, - "source": [ - "## Line 16 nodes\n", - "![alt text](line16.png)" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "62827e5d-82f4-433e-80ea-7eecf1dedbfb", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('line16.png')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "a29b9882-972f-4f52-b4d2-0eb4d4ee866e", - "metadata": {}, - "source": [ - "eof" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 [Default]", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} From 0f097996484775ca8a32800dfe97970c97c847b5 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Fri, 26 Jul 2024 22:47:18 +0200 Subject: [PATCH 75/83] Delete community/womanium/assignments/hw4-5-2a.ipynb --- community/womanium/assignments/hw4-5-2a.ipynb | 968 ------------------ 1 file changed, 968 deletions(-) delete mode 100644 community/womanium/assignments/hw4-5-2a.ipynb diff --git a/community/womanium/assignments/hw4-5-2a.ipynb b/community/womanium/assignments/hw4-5-2a.ipynb deleted file mode 100644 index 1278db3b..00000000 --- a/community/womanium/assignments/hw4-5-2a.ipynb +++ /dev/null @@ -1,968 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "b7f74e3a-7dae-4939-a2ef-0ff82d8eadd0", - "metadata": {}, - "source": [ - "\n", - "# Assignment 6.12 - womanium 2024\n" - ] - }, - { - "cell_type": "markdown", - "id": "adc17ffc-b892-4a94-bebb-4ba74d208a9e", - "metadata": { - "tags": [] - }, - "source": [ - "## Advanced Algorithms Design:\n", - "## Quantum random walk" - ] - }, - { - "cell_type": "markdown", - "id": "2060a234-6a10-453e-b4a2-7b644128c3e9", - "metadata": { - "tags": [] - }, - "source": [ - "Following the example of a quantum walk operator for \n", - "the case of a circle with 4 nodes, a quantum walk \n", - "operator is designed for the case of a line with 16 \n", - "nodes.\n", - "\n", - "Using the file quantum_walk_circle_example.py as a \n", - "template, both the case of a circle and of a line with \n", - "4, 8, and 16 nodes are implemented in this notebook.\n" - ] - }, - { - "cell_type": "markdown", - "id": "fe7f2080-a6eb-4aa5-8865-97aa9acd5c14", - "metadata": {}, - "source": [ - "## Environment and imports" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "fd9eebc7-b78b-4aa7-8614-fbd7dc07f452", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", - "qiskit-ibm-runtime 0.25.0 requires pydantic>=2.5.0, but you have pydantic 1.10.17 which is incompatible.\n", - "qc-grader 0.19.7 requires networkx==3.2.1, but you have networkx 2.8.8 which is incompatible.\u001b[0m\u001b[31m\n", - "\u001b[0mNote: you may need to restart the kernel to use updated packages.\n" - ] - } - ], - "source": [ - "%pip install -U -q classiq" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "202628d6-3fe3-47fa-8a15-04b7fd9716f4", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "from classiq import *" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "99432d7f-12fd-4a46-bbf0-cf3651c04076", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg" - ] - }, - { - "cell_type": "markdown", - "id": "59927721-34b7-49e8-8b88-6a75663aef7a", - "metadata": {}, - "source": [ - "## Implementation" - ] - }, - { - "cell_type": "markdown", - "id": "bbe3dfa3-2265-44af-b708-9a0ad189f5bf", - "metadata": {}, - "source": [ - "\n", - "## Common functions for circles or lines\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "425c8fd2-f8f5-409b-a569-d923819437c4", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Prepares the minus state (aux qubit) for the diffuzer oracle\n", - "@qfunc\n", - "def prepare_minus(x: QBit):\n", - " X(x)\n", - " H(x)\n", - "\n", - "# x: current node\n", - "@qfunc\n", - "def diffuzer_oracle(aux: Output[QNum],x:QNum):\n", - " aux^=(x!=0)\n", - "\n", - "# Zero diffuser using Grover's algorithm technique\n", - "# x: current node \n", - "@qfunc\n", - "def zero_diffuzer(x: QNum):\n", - " aux = QNum('aux')\n", - " allocate(1,aux)\n", - " within_apply(compute=lambda: prepare_minus(aux),\n", - " action=lambda: diffuzer_oracle)\n", - "\n", - "# non-zero probabilities for allowable transitions\n", - "# @qfunc\n", - "# def W_iteration\n", - "\n", - "# Iterates over all possible positions and applies \n", - "# the W_iteration for each position.\n", - "@qfunc \n", - "def W_operator(vertices:QNum, adjacent_vertices: QNum):\n", - " for i in range(num_nodes):\n", - " W_iteration(i,vertices,adjacent_vertices)\n", - "\n", - "# Edge oracle for checking adjacency of 2 vertices\n", - "#\n", - "#@qfunc\n", - "#def edge_oracle\n", - "\n", - "# Swaps the contents of two quantum registers: moves the walker\n", - "@qfunc \n", - "def bitwise_swap(x: QArray[QBit], y:QArray[QBit]):\n", - " repeat(count= x.len,\n", - " iteration= lambda i: SWAP(x[i],y[i]))\n", - "\n", - "# shift operator moving the walker if vertices adjacent\n", - "@qfunc \n", - "def S_operator(vertices:QNum, adjacent_vertices: QNum):\n", - " res = QNum('res')\n", - " edge_oracle(res,vertices,adjacent_vertices)\n", - " control(ctrl= res==1,\n", - " operand= lambda: bitwise_swap(vertices,adjacent_vertices))\n" - ] - }, - { - "cell_type": "markdown", - "id": "9761696b-cefe-4ea0-9c91-ebd33af62e22", - "metadata": {}, - "source": [ - "## Circle-specific functions\n", - "\n", - "Here we have the function W_iteration with the \n", - "probability of 0.5 going in either direction.\n", - "\n", - "What is special about a random walk on a circle is that \n", - "the node (0) and the node (num_nodes-1) are adjacent. \n", - "This fact is taken care of in the function edge_oracle." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "5ab73e30-56fd-4028-bb13-e2f883a4e3ae", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "\n", - "# non-zero probabilities for allowable transitions\n", - "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", - " prob = [0] * num_nodes\n", - " prob[(i+1)% num_nodes]=0.5\n", - " prob[(i-1)% num_nodes]=0.5\n", - " print(f'State={i}, prob vec ={prob}')\n", - " \n", - " control(ctrl=vertices==i,\n", - " operand=lambda: within_apply(\n", - " compute= lambda: \n", - " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", - " action= lambda: \n", - " zero_diffuzer(adjacent_vertices)))\n", - " \n", - "# Edge oracle for checking adjacency of two vertices \n", - "@qfunc\n", - "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", - " diff = vertices - adjacent_vertices\n", - " mod = diff%num_nodes\n", - " res |= (mod == 1) | (mod == num_nodes-1)\n" - ] - }, - { - "cell_type": "markdown", - "id": "423cf377-1bc7-4637-855c-b82ced39cca9", - "metadata": {}, - "source": [ - "## Circle with 4 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "e39e695c-cc7d-4983-ba7b-2d076262a66b", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Circle with 4 Nodes \n", - "\n", - "# Size of the register required for the number of nodes\n", - "size = 2\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "a863aa31-dc65-4ad4-9985-4fca062ab269", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk operator function\n", - "# applies the W and S operators after initializing\n", - "# vertices\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "1427b784-9701-4338-aec2-5cb5566a6d32", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 0.5, 0, 0.5]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5]\n", - "State=3, prob vec =[0.5, 0, 0.5, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "22cec3d3-aef0-46c6-9de2-74ee40d81b96", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "write_qmod(qmod,\"random4\")" - ] - }, - { - "cell_type": "markdown", - "id": "0c9a5e9c-ed50-44d1-b9ed-665f96274a92", - "metadata": { - "tags": [] - }, - "source": [ - "## Circle with 8 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "a5063b48-425c-4d73-8d6e-8b575cc61be3", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Circle with 8 Nodes \n", - "\n", - "# Size of the register required for the number of nodes\n", - "size = 3\n", - "num_nodes = 8\n" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "d137cf61-e92b-46d4-870e-4d1fc021650c", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk operator function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "94168a88-cdb4-411c-a162-52adf0c622bb", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0.5]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=7, prob vec =[0.5, 0, 0, 0, 0, 0, 0.5, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "7458e3ac-0e87-49e2-9139-59ee31fc27f4", - "metadata": {}, - "source": [ - "## Circle with 16 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "7e7ad59c-80ca-4452-af10-883711c9b104", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Circle with 16 Nodes \n", - "\n", - "# Size of the register required for the number of nodes\n", - "size = 4\n", - "num_nodes = 16\n" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "d3444344-5117-4021-9d15-1476582bf61d", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "d30601d3-5b4f-4b23-af9d-f93d0a4f6777", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", - "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", - "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=15, prob vec =[0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "ccfdf941-9d91-402f-a200-ccc266f73e99", - "metadata": {}, - "source": [ - "## Line-specific functions\n", - "The function W_iteration defines the transition \n", - "probabilities for a line. At the beginning and at the \n", - "end of the line the walker can go only in one direction \n", - "(probability = 1). For all other nodes the probability \n", - "going in either direction is 0.5.\n", - "\n", - "Here the function edge_oracle just has to check whether \n", - "the vertices are adjacent (distance = 1)." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "47e777d7-6527-4901-a034-951c624037e4", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "\n", - "# non-zero probabilities for allowable probabilities\n", - "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", - " prob = [0] * (num_nodes)\n", - " if i == 0:\n", - " prob[i + 1] = 1.0\n", - " elif i == (num_nodes) -1:\n", - " prob[i - 1] = 1.0\n", - " else:\n", - " prob[i - 1] = 0.5\n", - " prob[i + 1] = 0.5\n", - " print(f'State={i}, prob vec ={prob}')\n", - " \n", - " control(ctrl=vertices==i,\n", - " operand=lambda: within_apply(\n", - " compute= lambda: \n", - " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", - " action= lambda: \n", - " zero_diffuzer(adjacent_vertices)))\n", - "\n", - "\n", - "# Edge oracle for checking adjacency of two vertices\n", - "@qfunc\n", - "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", - " diff = vertices - adjacent_vertices\n", - " res |= (diff == 1) | (diff == -1)\n" - ] - }, - { - "cell_type": "markdown", - "id": "07488d17-7cac-4e36-8335-e3303cff8efe", - "metadata": {}, - "source": [ - "## Line with 4 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "92d3f78c-ee23-45bf-acba-6d0ff0608847", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Line with 4 Nodes\n", - "\n", - "# Register size to accomodate the number of vertices\n", - "size = 2\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "613c61cc-10ea-4950-a262-3dd572c8701c", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "46fca7f3-3106-416d-a3f8-379f7095f8fa", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 1.0, 0, 0]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5]\n", - "State=3, prob vec =[0, 0, 1.0, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "9dd17d8c-83dd-463d-b155-9b8c949f97d1", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "write_qmod(qmod,\"random4\")" - ] - }, - { - "cell_type": "markdown", - "id": "cfbc239f-2bfb-496a-a752-1a84f657ac3f", - "metadata": { - "tags": [] - }, - "source": [ - "## Line with 8 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "08283335-a49f-4d6e-a702-fb76ab01724b", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Line with 8 Nodes\n", - "\n", - "# Register size to accomodate the number of vertices\n", - "size = 3\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "07a57ceb-c1da-47d7-8d6b-45e18667d747", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "fb711141-eadd-4ac5-bb1d-fbd31bb71f8f", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=7, prob vec =[0, 0, 0, 0, 0, 0, 1.0, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "7b486184-7850-4c58-baac-9e89a942e059", - "metadata": { - "tags": [] - }, - "source": [ - "## Line with 16 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "52ccbff2-f15f-4fe2-86fd-6e1d0128f428", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Line with 16 Nodes\n", - "\n", - "# Register size to accomodate the number of vertices\n", - "size = 4\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "e773bbb1-e532-477e-8891-c47f8f4f1f8d", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "c3833a55-49af-4214-be22-5b52eaa22ba6", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", - "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", - "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=15, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "4b28d548-febf-43b3-9271-6cab28fd2cbb", - "metadata": {}, - "source": [ - "# Results" - ] - }, - { - "cell_type": "markdown", - "id": "b7d6c2a8-063f-4ffe-bf3c-18212aa1d57f", - "metadata": { - "jp-MarkdownHeadingCollapsed": true, - "tags": [] - }, - "source": [ - "## Number of qubits vs. nodes\n", - "\n", - "| random walk | num_nodes | transpiled qubits |\n", - "| :- | :-: | :-: |\n", - "| circle | 4 | 13 |\n", - "| circle | 8 | 22|\n", - "| circle | 16 | 33 |\n", - "| line | 4 | 17 |\n", - "| line | 8 | 25 |\n", - "| line | 16 | 37 |\n", - "\n", - "Here we see that the more nodes we have, the more \n", - "transpiled qubits are going to be used. Lines need more \n", - "qubits than circles." - ] - }, - { - "cell_type": "markdown", - "id": "2d8f26a8-18aa-4dda-a3ed-a3974e0184b9", - "metadata": {}, - "source": [ - "## Circle 4 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "335019e0-e185-41d5-b894-6116ada649d6", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXUAAAGFCAYAAAACb2PRAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAABtU0lEQVR4nO3dd3hc133g/e+dPpiK3kmCBAkSJEES7L2LFEWZqlaLN145sa3NZp848b7ZJ9ns7rub18m+8ZuN7ThO4li2Y8WyZHWSkth77wUgwAKCRO/AANNn7n3/gHAFEKCEMuAUnM/zyJYGd+785tx7f3PuOeeeIymKoiAIgiAkBE20AxAEQRAiRyR1QRCEBCKSuiAIQgIRSV0QBCGBiKQuCIKQQERSFwRBSCAiqQuCICQQkdQFQRASiG64G+bk5IxnHIIgCMKXqK+v/9JtRE1dEAQhgYikLgiCkEBEUhcEQUggIqkLgiAkEJHUBUEQEohI6oIgCAlEJHVBEIQEIpK6IAhCAhFJXRAEIYGIpC4IgpBARFIXBEFIICKpC4IgJBCR1AVBEBKISOqCIAgJZNhT7yYKRVEG/LckSVGKRBAEIfImTFLvS+Y6nQ6tVgtAOBwmFAoBIrkLgpAYJkRSVxQFo9HIypUree6555g1axZarZYbN27w3nvvceTIEXw+HyCSuyAI8U1SHmyPeIh4XflIURRMJhOvvfYa3/rWt7Db7WriVhSFnp4eXn/9dX74wx/i8XhEUhcEIWaJlY/orXlv2bKF1157bUBC7/ubzWbj93//99mxYweSJA1qcxcEQYgnCd38oigKFouFV155BavV+tBauNls5uWXX+bQoUO0tLQgyzIAFosFo9EIgCzLdHZ2qu+x2+3odL3FFwwG6e7uBnp/KOx2u9pu7/F4BjTtOJ1ONY7u7m6CwSCKoqDVaklKSlL37/V6CYVCSJKE2WzGbDar36mzs1P98bFarRgMBqC3j8Dlcql/s9ls6PV6AHw+Hx6PR92/0+lEo+n9TXe73fj9fgA0Gg12u139W1+MAEajEYvFou6jq6uLcDislmFfjLIs43K5hixHv9+P2+0eshz7x/hgOfaPUa/XY7PZ1H08LEZFUXC5XEPG2P+Y9S9HRVHw+XxqjH1x9JWj1+vF6/UCoNVqB1QURhPjg8csKSkJk8kEQCgUwuVyDYrxwXJ88Jg9GKPD4VD30T9Gg8GA1Wod8pj1j/HBc99sNqPX65FlmVAopH5WXxx9xywQCNDT06OWY/9zv3+MOp0Om82mVqr6H7P+5fjguW8ymdRr5ovO/QfLsf+5/7ByfPD8iCcJndSh90KYOXMmoVCI+/fvEwgEBvxdp9MxdepUpk2bxvr169m1axc9PT1IksScOXOYOnUqAE1NTRw+fFg96ZcsWUJ6ejoAd+/e5cyZMyiKgsFgYMWKFTidTgAuXrxIZWUlAMnJyWzcuFFNYkeOHKGurg6r1crmzZt58sknSU5OpqmpiXfeeYdjx47h9/uZPn06s2fPBnoT6f79+9XvUVJSwuTJk9UYjxw5QjgcRqvVsnjxYjIzMwG4ceMGly9fVstk/fr1avI4d+4ct2/fVmPcsGEDOp0OWZY5ceIEtbW1AOTn57N48WKg96Lct2+fekE8GOO+ffuQZRlJkpg7dy4FBQUAVFdXc/r0abWfY/Xq1djt9kExWiwWNm7cqP4YXLhwgZs3bwKQkZHBqlWr1IvvwIEDdHR0AJCXl8eSJUvUGPfs2aMmjxkzZlBcXDyorHQ6HcuWLSMtLY3k5GSys7OxWq2Ew2Fu3LhBMBgkGAwiSRLl5eVcuXIF6E0O69evR6/XEw6HOXbsGA0NDQCkpaWxbt06oDep7Nu3T02MkydPZuHChWpZHThwAL/fj0ajYcGCBUyaNAmA1tZW9u3bB/QmnOXLl5OWljbonEtKSmLdunWYzWYUReHcuXPcuXMH6E1ujz32mJowDx8+TGNjo1qOK1euRKPR4PF4OHDggJqEi4uLmTlzJgA9PT3s3r2bcDiMRqNh06ZNrF27lvz8fHw+H4cPH+bAgQM0NzezcuVK9UekrKyMq1evAr0JeOPGjWqiPX36NHfv3lXLcd26dej1egKBAIcOHaK9vR2AqVOnUlpaCvT+SOzatUv9UZo9ezYzZswAoLOzk4MHD+L3+9HpdCxZsoSMjAwAqqqqOHPmDND7I7dmzRr1B+vq1auUlZWp51xfOXq9Xs6fP6+e+/EkodvUFUUhJyeHI0eOIEkSP//5z2lpaRmwjdVq5Q//8A/xeDw8//zzlJeXP7J2dUVRmDRpEn/+53/O5s2b1SQLvTW73/72t3z/+9+nq6vrkcQzkWm1Wnbs2MGf/MmfMHnyZPUckGWZO3fu8Jd/+ZccPHhQ/VGfaPruJrdu3cqf/umfMnXqVLW2K8syd+/e5a//+q/Zs2ePWssWIm84beoJn9SdTifvvfeeWut4mKqqKp555hmam5sfSVJXFAWr1crf/u3f8sQTT6DRaPD7/Xz88cds27YNo9FIMBjkpz/9KX/1V3+lNsUIkacoCqtXr+bHP/6xWhO+cuUKwWCQxYsXoygKtbW1fPOb31TvJCbasVAUhaVLl/KTn/yErKwsJEmirKwMn8/HwoULURSFxsZGvv3tb3P27NmEKh+HwxEzFasJ3VGanp7O6tWrMZlM7NmzB0VRkCRpyH9kWebAgQO0trY+0hjXrVvHli1b1BpPIBDg4MGD6th5vV7PCy+8QHFxMVqtFo1Gk5D/RFNf88W3v/1t0tLS1GaKc+fOqc1mkiSRl5fHq6++il6vj8qxiHYZmUwmvvnNb6oJHaCyspJbt24BvWWUlZXFN7/5TYxG4yMtm/H+AfnKV76iNpnGg/iJdBhycnIoLi7G5XIxf/587t69y5NPPsm//du/sXDhQlauXKkm8j6yLHPx4kV+9rOfqW3Aj4KiKCxbtgy9Xk8wGCQcDuP3+5FlGb/fj1arRa/Xk5KSwu9/+3do7biNwTBOh0sChnO/9uB2o31f/9eBG9fqOHv6OrduVg1jZ5GXkpLCnDlzANRjEAqFCIVC+Hw+JEnCYDCwevUq/uRPv47VoedR1kMV4Mb1Os6dvsatm3cf4Sd/zul0UlJSgqIoBAIBFEUhFAoRDAYHlNGSJYv54z/9Ohab9pGUkSRJ1NW2cuLINa5fuzkuTT/9BzDEg4RK6jt27ODy5cts3LgRn89HeXk5xcXFNDU18d3vfpf/9J/+E5s3b8bpdKq97AcPHuSHP/wh9+/ff+Tx9nVifvLJJ+zbt49wOExFRQX/9b/+V7RaLV//+tcpLS2loEhHYeZ9kiz6Rx7jo7DqGQNP3nqMv/0fpzh7+soj//ykpCT1FvsHP/gBra2t1NfXI8syFy5cICUlhT//8z8nyaJn3rousqc++ucZ1jxr5Kk7W/n+fzsZlTIymUzY7Xa1jNra2mhqaiIUCnH27FkcDgff+c53MCcZmLfGRVZBN5LmEZWRouXZVx/j/V8s4B9/9LZ6pxsp8daPklBJXZIktaYVCATIz8/H7/ejKAr379/nz/7sz3j77bdZsmQJlZWV3Lt3j3v37qm96Y/6Qu1rH3vsscdYu3Ytbreb//W//hd/8Rd/QVJSklpD8MttJGm8yAQfaXyPjOQhY7qHb39nI9f//U08Hu8j/fienh46OjrIyMjgj//4jwmHw7zxxhsYjUa++tWvotFo0Ov19Hh8KBoXMgGkR1pXByQP6dPcfPe/PcnvvViFy/Voh9t5vV46OzvJy8vjT/7kT5Blmd27d+P3+3nmmWeQJAmLxYKrpxlZciHjfXRlJIFkvcb235nJwX2TKb9+J6K7P378eFx1/iZUm/ru3bvJz89HkiQ+/vhj0tLS+PjjjwmHw0iSRCAQ4Nq1a3z44Yfs27ePmzdv4vf7BzXJPAqSJHHixAl8Ph8mkwmHw4HNZkOn02G323E4HOj1elw9rfiUSvT6hDpUg0kB8qYHychIf+Qf3dHRwaVLl9SH0ex2O0ajEbPZrB4XUKhvvYLZ/mh/cPpTpADJOa3k5GY88s/u7OzkwoULahk5HA5MJpNaRn3ju5vayzBae3jUv3lIYHTUsnb9oojv+saNG3H1UGJC1dTv3btHTU0Nt2/fprq6Wh0H20eSJHw+H7W1tTHRO3/s2DF27tzJs88+i1arxWQy8eKLL6oPmIRCAW7VfooltRWNNsGTOqAz+siflEt19aNrCpMkCa/Xyz/+4z9SUlJCTk4OkiSxevVq9SEaRVFo66yl2bOH9MzoHgfJ0EF6RjIVNx7hZ352B/zP//zPLFy4UK04LViwQG2aUBSFru5G6rs/Jn1KlMpIE8DpzIvOZ8eQMZV+RkYGkiSRm5tLYWEhRqOR0tJSsrOzIxXfiMmyTFlZWcz/svYlk+9973u89dZbuFwudDodK1euRKfT0d3TxpVbb+MxfIrNoeHRV32iQSFav7UXLlzgv/yX/0JFRQXhcJiZM2cyffp0QqEgdU3lXLv/E5w5zeh0EtE9FkrUKiRXr17lu9/9LtevXycYDFJQUMC0adMIhYI0ttzk8t0f48iuR6d/9He+fcbjc/s/txAPRl1T1+l0fO1rX2PXrl184xvfoK2tjZqaGjo6Opg9eza/+tWvIhlnxBiNRpKSktQnEKOtqamJP/uzP+O3v/0tv/etV8gt0OAPteKWy0hKaSbNqUHSELVkNxFIkkQ4HGb//v1cu3aN7duf4OkXViHpOnGHqgnrK0nO92M0az/bPsoBR0Hf0N9jx47xyiuvsHnzJp5/ZR2GJA+e4D2C+gqc+T5Mn5VRItmyZQuvv/56xDtgx8uYauqSJFFYWMi5c+f46U9/ypw5c7h8+TJz5syJ2WFAOTk5rFixItphAJ/XKvx+P+fPn6epvQw55UMM2QfJLGjBkdKX0CdgFnnE+sq4qamJkydPICedQ0n7AMekq2RMCmI0awZsNxH1ffeWlhYOHjyAT3cCJfV97JMukzkpgClByyjevs+YG7/65msIhUJoNBo6Ojpobm7+0ic4hV79H4IymQxYbDrMSTq0Ok1UOnAnsr7y1mg1JFmNWGx6DEYtGo0kjsVn1PNVoyHJYpgQZRRvQxrHnNT9fj9Wq5WkpCRCoRBarRar1TpgVrdYoihK3B0kQRCi55133ombpheIwOiX8vJyXnvtNYqKijh9+rQ6R8y9e/fGHNx4qK2tHTAFrSAIwheJlf634Rp1Uu+b5Kimpobvfe97GAwGOjo6eOaZZzh8+HDMDtYPhUI0NzdHOwxBEIRxMeqkHg6Heffdd9XJ9ft8+umng+YsFwRBiFdz5syhvLw8bpptx9Sm3reSS3/d3d3qY/exKDU1lSlTpkQ7DEEQ4sSKFSuiPlPmSMRPpBFit9vV1W8EQRC+TLyN6JlwSR3i7yAJghA9/dfUjQcTLqmHQiEx+kUQhGH78MMPJ9aQxnhTX18/aJ1SQRCEh+nufrTTHI/VhKuph8NhfD5ftMMYFllWqLzW8YWTk7W3+GhtGtt0sF3tfprqPr976X1Aa+QTovm8IcovtxPwx+ZwVmF89a6GJBMMyBGbUK/vXIz1CfpiyYRL6vEkHFbY8/59/L4woZCMIiv4vCH1ovH7wtwq7+T2jS7CIRmvJ4QcVggGZHzeEAF/GJ83RCjYu33ve8PIcu97g0GZgD9M9e1uyq+0A70XUY8ryKlDjYRCcu9nB3v/3+/rfW/ffmVZUT83HJa5eq6Nhlp37xTHn8UZDn/2WYHe9/fF5feFxYWaYDra/Lzz89u8+8s7lF1qV1/vS/Z950woKKvnoqIo6vmgnpcBmUCg91wJhxTOHG7E6w6p75NlRT2flFFUPkZqyZIlcTX6ZcI1v2RkZJCcnKwuKhzrXB0BPnnnPgajhqI5Ti6daUWrlViyJpNDu2vpcQWZvzSdw5/U0dLoY8p0G3X33OgNGhpq3OROtqLRwOwFKZw52oQkSSxamcGn791j0coMKq914vWEmDbToX7m3ZsuPn33Ho5kAyf2NbBkTSZ3KroIBGQWrcrgxL4GbA49s0tTaKjx0FzvYVKhjcprndjsem7f6OTahXb0eg1Ti+xcONnC9GIHdyq60Ok0GM1awiGF9dtyycyNzYnfhJHraOldcGb9E7l0d30+3DkUlNn/YS3uniBTpttpa/bhcQeRwworNmZz4kAD4ZDColUZfPx2Ncs2ZNFw30Nnh585C1LY+0ENNqeBqkoXfm+YwlkObpV3YrHq2fiV/HGfGXLBggVcvHhxYoxTHwmtVsuiRYtIT08nKyuLBQsWoNfrmTdvHrm5uSQnJ7N48WKMRiOzZs2ioKAAi8XC0qVLsVgsTJs2jZkzZ2IymVi0aBFOp5P8/HxKSkowGAyUlpaSnp5Oeno6paWlGI1GSkpKyM3Nxel0smjRIkwmE3PmzGHJkiVYLBYWL16s7nvWrFmYTCYWL16M0+kkNzd3wL4zMzPJyMigtLQUvV5PSUkJkyZNwul0snjxYkwmE0VFRUybNo2kpCSWLl2K1WqloKCA4uJiDAYDixYtIiUlhdzcXObPn49Op2PBggWkpKRgs9lITk4ZVG52p4HHn5tM9a1uDCYtyalGbpd3UXmtgwXL0lm4sncVHGeKEYtNx/ULbWg0Eis2ZmG16Vn9WA7N9V4MRi0paSYaaz24OgNMmW5Hb9BQPD+ZZeuykD47EyRJYsp0O7MXpGC1G5g2y8HUmXZSM0x0dwVoqvOQlZfE4tUZNNZ60OkkLDY96ZlmiuY4mb8sjesX2tn8lXzMFh3Vt1zMLHGSnZfE1CI7JYtTycm3MLnQRn3NwFEFGo2GWcXFJCcnk5eXx7x589Dr9SxYsIDMzEzS09NZuHAhRqOROXPmkJ+fj91uZ8mSJZjNZoqKiigsLCQpKYnFixdjs9mYOnUqxcXFGI1GFi1aRHJyMjk5OcybNw+j0ajuOy0tjfnz56PVasnJyUGvj836jkajZdasWaSmppKdnc38+fPR6/XMnz+fnJwcUlNTWbx4MQaDgeLiYiZPnozVamXp0qUkJSVRWFjIjBkzMJvNLF68GIfDweTJk5k7dy56vZ6FCxeSlpZGZmYmCxYswGg0Mm/ePHJyckhOTlbLKD8vD4PROCC2vAIrcxamcvJAI+2tnz+r0tURoLPDz9ZnJ3OnootwWGbZuiwsdj3H9zVQf89Nd1eQ6lsusvIsFM9LITnNiM8Txt0TYk5pCiazFr1ew5ZnJlF920U4pLB8QxZG08AUlpubq16DS5YswWazUVBQwOzZszEYDCxcuFC9BufNm4fBYFDPgdTU1AHn16RJk7Db7eTk5KjX94wZMwacX5MnT2b27Nnq+ZWSkkJWVhbz58/HYDAMOC4LFy7EYDAwe/ZspkyZgs1mY+nSpZjN5gHHZcmSJdjtdiZNmsScOXPUHNS7AteXe2RnrqIoeDweQqEQsizj9XpRFAWv10swGCQcDuPxeHqbCXw+da1Rt9uNLMv4/X7C4TCyLOPxeAiHwwSDQXU/ffsG8Hg86mf033ff2qV9MfTftyzL6r77Vknvv+9gMKj+e1/cffvq27fP51Nj7L/v/t//YXEbDAYUZXBNQNJI6HQSiqJw/UI7SVYdpiQtdqeBe3e6CfhlUtKNXL/UxtyFqTTXe5Ek0EgSOr0GjQZkReHm9U4kCSxWHYoCWq2EPdnItXOtGIxajKbPazsajYTH3dtMotVK1H120TmcBhRZQauTkDQSsqJg0GvJyDFz/WIb6dm9te7kNCNVN7vocQVIzTCj1fZOCK/RSGi1Elqd9FmZDD5P+sowEAgMOEf6jln/sg4EAoTD4SHPEbfbTTgc/sLy73+O9O1bURS0Gm0MNw0pahn1P4/6vkcoFMLtdqvXUSAQGHQ+ajSaAddR/7LuOx/7/v3B68jr7e2/kSRpUBnVVvfQXO9hapGdimsdLF7VW+EwmXXIYYW7N12YLToCfpn7Vd10tgWYMt2GwahhynQ7NoeervZW2lp8VN9ykZphAkBWes8VV2eAuzddGIxaAn5ZnRmyv0AgMCB39H2/vnj7vt9Q37nvWu5/fYfDYe7du6eec30TAvbPJw/uR6PRDDq/+u/7Ycelb876/nH7fL4BnzcckjLMs7dvoq541/dLfvTo0WiHMoBOp+Ov/+41Fm67jUJvIpLl3mQ8Y46Tm9c7ycwx9zZxOPQUFDm4VdZJOKyQN8VKV4ef7s4A9mQjBoOGzNwktfnl3m0X6dlmyi934Eg2kJWbhM8bJjPHzI0rHQQCMkkWHZdOtyCHFUoWp6EoCunZZiR67wKunm/DYtWRmmlGDis4kg24ugKg9DbXFM1NJhyWMZl16A0arl9oIyXdRGqGiVBAxmDS4vWEMBq1BIO9J6dGI6kXLgDeqfyP/1DG0SOnIlauTqcTv9+vJqPhKJ49kx+8sQWt41rE4ogU2ZfG//wPdzl6+FzE9pmcnIzX6x3RAIKs7Ez+8e3t2HM/XzIyFJSpvNZJZ7ufKTNsnD3SjLsnyIzZTnImWai718OseSkc31ePwahl0lQb02bauXWjix5XkKI5Ttpb/WTnJ1F2oR2NViJnkgV3dxCdXoMsKzTUeJi9IIXWJi85kywYjJ9XRiQM7PvFNL73P388ou+v1WpJSUl56Ki4vh/BWNC3WP0Xic17zHFUV1c3rIIZrr6mnlOnRpeIXnrpJfbu3UtXV9egv2k0EjNLkgHU/1+2Pkv9+7wlaeq/Z2SbB71/ynQ7AIXFTgCW93tvnzkLU4HemmxhsUP9XI1mYA1oyZrMQe+12PQAZOdbBv1t8erB29udhkGvjQdJkti+fTtXrlwhKyuLhoYGampqHslnx5MNGzbQ0NCAw+GgpqaGurq6Me1Pp9cwu7S3CVFRFL7y0hQUeu8aJQ3kTbECkJJmYvpsp/qDPnNusroPm6P3HFmw/PMFyNOzPj+3J03tbYKw2vVjihV6f8y2bt3Krl27WLBgAXv37h1yu1hJ6MOVsEl95syZbNiwgddff31QDSRSt9Y2m40XX3wRk8lEfX09Tz/9NGazmXfffZdVq1aRlZXF7t272bZtG7IsU1tby7lz53j66acJBAKcPXuWl19+GVmWeffddyMS02hJkvTZ+puxbcWKFciyTHt7O7NmzaKzs5NVq1ZRU1NDeXk5Tz75JNXV1WzevJkpU6Zw//59enp62LZtG6Wlpdy+fZt9+/bx4osv4nA4ePfdd0lNTWX9+vU0NTXF7DKMI1FaWorT6aSiooJ169bR0NDAypUrqa6u5vLly3z1q1/l7t27rFmzhqqqKsrKyujo6GD79u3Mnz+fmzdvsmfPHp5//nkyMzP55JNPsFgsrF27loaGhmGVkSR93sz2oKXrBv/gR5LZbObll1/m17/+NU8//TTnzp1j48aNpKWlsXv3blavXo3RaMTtdrN161aqqqrIz88nOTmZr3/965hMJj744AMcDgcbNmygqamJ9957jxdffJGUlBT27t3LuXORu1OKtIRK6mvXrqW4uJhAIMCePXuwWq3qivDjobu7m6NHj5KUlISiKLS2tpKVlcWWLVtIT09n9+7dzJ8/n1u3btHa2sqaNWuYOXMmjY2NTJ06latXr3LlypVR1/InotbWVrZv305nZydNTU288sorHDp0iI0bN6LVauns7OTtt98mOTmZo0ePsmLFCsLhMKtXr+b//J//w5o1a3jiiSfIz8+nrq6Op59+GlmWqampwePxYDYPvuOJN/X19TzxxBOkpqai0Wh4+eWXOXDgAJs3b1abWd5++220Wi03b96kpKQEn8/HqlWr+Lu/+zvWrl2rXkvl5eU8//zzdHd3U11djc/nG3MZjfc0HX6/H7PZzNKlSykqKsLn81FYWEh1dTU7duzA4XDwk5/8BK/XS05ODnV1dTz11FNs2rSJ+vp6rl+/zrRp09i2bRunTp1i/fr11NXVMXv2bHbv3h2zS3X2iZ/Bl8Mwf/58du3ahcVioaWlZcg5G/pGnkRKONw71nbq1KlkZmZSU1ODyWQiFArR1taGxWKhrq6O1tZWoLd2397ezv79+7l58yaKIh6sGIn79++TlpbG9OnTqaysRKfT0dXVxXvvvUdbWxsdHR1qh1RfuRqNRoLBIC0tLZw5cwadTofL5eLmzZvs37+fI0eOEAwG1ZEP8a6trY1QKMTChQspKytDq9Xicrl455136OjooLOzU+2M619GgUCAlpYWTp8+jVarpaenh5qaGnbt2sXBgweRZZnS0lIMhkfTjDZasixz9uxZtm/fzq1bt7BYLHR2dnLr1i327dtHIBCgtbVVnWW2rwwcDgd1dXVUV1dz8+ZNDAYDXV1dtLW1cevWLfbu3UtxcXHMz/KaUEm9ubmZDRs2qEN/hpoa2GAwkJubG7HP7OzspLS0FK1WS25uLqWlperIBFmWOXHiBM899xwvvfQSiqJw8OBBZs+ezdy5c9FoNLhcLpYvXx6xeBKdz+ejvLycpqYm7t+/z6VLl5g3bx5FRUXIsqyO3GhtbWXlypXIskxjYyPt7e185zvf4cUXX+TSpUskJyczd+5cHA4Hs2fPJjc3F41GkxA/sMFgkKtXrxIKhbhx4wZXr16lpKRkQBlB74o+K1asQFEUGhoacLlcfOc73+GrX/0q5eXlmEwm5s6dS1paGnPnziU7O3tc73wjqbKyEofDwfnz5zl+/DhOp5M5c+aoHeeKouD3+3E4HBQUFBAIBDh+/Djbtm3jj/7ojygoKODMmTPqOWI0GlmyZAkGgyHmJwRMqNEvRqOR1NRUvvKVr/DTn/4Us9msDu/q0zdufPfu3RH5TJ1OR0pKCh0dHSQnJw8YNuZ2u8nKyqK0tJT8/HxcLhdvvvkmKSkpyLKs1uT1ej3d3d2DRr9MOMMc/WIymdBoNHg8HoxGIykpKXg8Hvx+P1qtFrfbjdlsJikpSR3iptVqcTqddHd309PTQ0pKCnq9nvb2djQaDcnJyfh8Pjo7OxNi9IvBYMBoNNLd3Y3JZCI5ORmPx4PX68VgMNDT04PRaMRut6tDiPvKyOVy4Xa7cTqdmEwmtYycTqdaRkONfom2/qNfJEnC4XDgcrmQZZnk5GSMRiPt7e0kJSXhcrlQFIWUlBR8Ph96vZ6uri5SUlLQarW0tbWpo2IWLVrEp59+is1mw2g00tHREbU1I6Iy+sVgMKhjih81v99PfX09v/zlLwmHw/T09AzapqOjY8y9/P31Xx5vqGXyXC4XWq2WpqYmDhw4MGg5vb4YdbqE6t4YV/07vv1+Pw0NDYO28Xq9g4Yx9v/v9vb2AX9rbGyMcJTRFQgE1BXIfD7fgDLqe93v9w8axte/jB5cPD6eykhRlAHx919ntP/KbG1tbQPe1/+/w+EwjY2NfPzxx8iyHDdrlY46k2g0GtauXcvp06fZtm0bTqeTvXv3UlpaSk1NDRcvXoxknCPyRWOSOzs7uXLlyiOLxeVy8f777z+yzxMEIbLibUjjqNvUNRoNCxcupLS0lIKCAu7cucPLL79MTU0NGzdujOl2p0RoNxUE4dEwmUxfvlEMGXNHaWpqKrdv3+bSpUs4nU6qqqpwOp1kZQ1+0CUWaLXahBjhIAjCo/Hkk0/GVfPomJO6JA2cf8Hr9dLc3Ex+fv5Ydz0usrOzxWgTQRCGLSVl8ER7sWzMSb2zs5PJkydTVFRET08PFouF7Oxsbt26FYn4Ik6v12OxDH6sXRAEIRGMKakrisLFixdxuVysWbOG3/72t8yaNYv79+/HTU+xIAjCF7ly5UpcdZaOuqEoHA5z+PBhenp6eP3119XX8/Ly2LdvX0SCGw+tra1UVVVFOwxBEOLE6dOnox3CiIw6qSuKwoULFwa9fujQoTEFNN66u7u5ceNGtMMQBEEYFxGfJkDMZTJ64bACxO5Q0PGmEH9jgie22JtlRB5ioZmxSk1Njfg+x1PsHZVxptPpYnLcqSzLNNd7kJSxzxMdr4I+HdXV96MdhjAMHreHcMAa7TAGUMJGGhtrI77fHTt2TKwhjfEmLy+PdevWRTuMQWRZ5uzp68juKb1V1olGNlB320hnhyvakQjD4Ha7uX6+G8LDWzdz3Cnga5/MuVORX1Ber4+vilb8/PxEiCRJMTvT3KkTF3njH7J48VuFGO3tIIWjHdK4k9BA2ErtjUy+/3+/Q0/P4OmShdgTDsv84w8/JCVjByWr7KAdPM/SI6MY8HVk8PO/q6Dixu3oxREjJlxSj2WhUIhf/sturpyfy9z5BaRnOIdcnDmRBPwhqqsaOHH8I9paxTDYeNJQ18L//Z/fZ+68mcycnYPFMrrmmJkzZ1JTUzPk+gdfJhAIUHu/letXz3Oz8s6oPv/LfPLJJ4TD8VPBmnBJvaGhIaY748KhMBfOX+bC+cvRDkUQvlRraxuHDpzg0IHRvV+SJL761a9y4MABdSGZWHP/fnz180y4NnWfz8e9e/eiHYYgCMK4mHBJXRCE2KEoCnV1dVFbdGI48vPzY3rW2QdNuKRut9vJyMiIdhiCIHzm5MmTdHd3RzuMh9qyZUvMDq4YyoRL6qmpqZSWlkY7DEEQPhPLfVxAXCV0mIBJHeLvIAlCIov1xZz7L38XDxI2qSclJZGbm4vZbB7wuizLcXeQBCFRSZLE+vXrcTgc0Q7loT7++GMxpDFaLBYLmZmZ+Hw+Vq9ejV6vR5Zl3nzzTXU+moaGBjEtsCDEEKfTGdOP4Tc1NUU7hBGJ3ZIcheeffx6Px8PUqVP5+c9/Tn5+Pnl5eQO26b/KuiAIQqJJqOYXu93OmTNn8Hq9WCwWFixYwIEDB8SskYIQoxRF4caNG3g8nmiH8lBFRUUx3eb/oIRK6qdPn2br1q04HA6WLl2KyWRixYoVaDSff82UlJRBtXdBEKLn6tWrMZ3U161bF1eDKxKq+eXs2bNcuHCBDRs2cODAgSGHSjkcDoqLi6mtjfwUnYIgCNE2ppp635SURqMRs9mMJEnk5+djt9sjEtxohMNh9u3bF/NjXwVB6GWxWAbcTccalyu+poMedU1dq9Xy6quvsnPnTr797W8jSRKHDh3C6XQSCATYtWtXJOOMGDGkURBihyRJbN68maNHj9Le3h7tcIb0/vvvEwqFoh3GsI3651GSJGw2G3PnzuXWrVv80z/9E+vXr+fSpUssX748ZieWr6mp4fDhw9EOQxCEzxiNxpiuqft8vmiHMCJjblM3mUy4XC5cLhd6vZ6mpiZ6enqYPn065eXlA7a12+1x1YssTEw2mw1NjJ6nkiRhsVhj+mGdkdBoNCQlJWG32wkGg9EOJ6YN9wGoMSf1cDiM2WxGp9Mhy7K68PSDv7w6nY6NGzeSlJQ01o8UhHGVnZOF3qAlFm+4NVotS5cuJcWZE+1QIsZisbB69eqYbeIoLi6moqIi6v10zc3Nw9puzEm9urqa3/md3yEzM5Nbt26RmpqK3W7n5s2bA7YLhUJ88MEHY/24McvMzMTpdFJZGfm1DIXEUDx7JltffgxN7K1PTjgU4tChgxw9fC7aoUwY3/rWt3jrrbfi5k5i1EldURTcbjcVFRX8/Oc/x263U1ZWxtatWzl79uyQnZGx8BCQ2Wxm2rRpVFRURDsUIUYpihLTa3/33Q0Lj4aiKGorRDwYdVIPh8O8+eabhEKhAbXe8+fP09XVFZHgBEFIfOnp6XR0dMRs80tTU1PcJHQY4zj1zs7OQa/dv38/ppO62+2O2aFTgjDRSJLE2rVrY7rjd9euXWKWxljW3NwskrogxBCtVhvTo+Ji9Q7iYWJ3cOg4ireDJAiJLBwOx3TzRjzN+wITMKlLkhR3B0kQEpWiKBw5ciSmm2wfe+yxuMoZEy6pZ2VlsXjx4miHIQjCZ1paWmL67nnSpEkx3Tz0oAmX1E0mE6mpqdEOQxAEYVxMuKQuCEJsmTZtGiZTDD7p9Zm7d+/GdJv/gyZcUu/s7KSxsTHaYQiCQG8f16JFi7BardEO5aH27t0bV0MaJ1xS7+jo4MKFC9EOQxAEYVxMuKQuCEJs8fl8UZ8s64vE2ySEEy6pS5IU03M3C8JEoigK+/btG/Lp9Fjx9NNPo9PFz3OaEy675eXlsXbt2miHIQjCZzweT0zX1GO5vX8o8fPzM0IzZ86kuLiYy5cvU1VVpb6u0+ni7nZKEGKZRqPBYDBE7Q44EAwQCsbuOPdHLaGS+syZM5k/fz5dXV00NzfT1dXFqlWr4m5IkiDEA0mSmFFUwI5n1zKl0InRNMqkLkkw2utTgqYGF8cO3OTooXO43Z7R7ecLnDp1KqbvJB6UUEl98+bN7N+/n61bt3Lq1Cm2bNkyaGL71tbWATV3QRBGZ+HiOfy372/BnnsLWaqDKM1CX4DEqidmsPTdIv7qf/wCvz+yC8tfvXo1ovsbbwnVpu7z+cjLy8NsNrNlyxZaW1sxGo0DHvHt7u7mxo0bUYxSEOKfTqfjD/74SWy5ZchSNxACwlH6J0RId4dVTyiULCga/y8f4xIqqb/33nu43W6CwSBHjx6lp6eHDz/8MK5unQQhHjgcdpzZLhTJH+1QVFpLPctXlER8v8nJyRHf53hKqOaXtrY2Tp06xb1792hoaKChoWHQNn2LZHd3d0chQkFIDHqDHknjjXYYA0lhrFZnxHe7Y8cO3njjjZiedKy/UdfUJUli+vTpaDQaSkpKWLVqFVarlbVr1zJ16tRIxjgiiqJQV1f30L9nZWWxbNmyRxiRIAjxzGg0RjuEERl1UtdqtezYsYOSkhKef/55ZsyYwSuvvIIkSWzevDmSMUacwWCIdgiCIMSJeGu+HXOben5+PpcvX+a9995j8uTJlJeXU1BQELNrDvatDC4IgjAchw8fnlgTemk0GnU5Ko1GQ1dXF42NjcyYMSMS8UVcc3MzFy9ejHYYgiDEiVu3bsXVcy5j7ij1eDxMmjSJ1NRU/H4/RqORtLQ06uvrIxFfxHk8HjyeyD+gIAiCEAvGXFO/evUqubm5fOMb32Dfvn1MmTKF7u7uIUeeCIIgxJucnJy4Ws5u1DV1WZYpLy+npaWF733ve0iSRCgU4qmnnuLAgQMx225ts9nQ6/W0t7dHOxRBEOLAE088wc9//vPEH9IoyzIff/wxsiwTCoUIBoMoisKuXbu4dOlSJGOMqLS0NDGkURCEYYu3qboj/vDRg3OtxKJ4upUSBCG6/P7YeWp2OOLrJyhC4qknWxCE6Prwww/jpukFEmyagOGoq6ujtbU12mEIghAnOjo6oh3CiEy4pB4IBAgEIjs1pyAIQqyYkM0vgiAIwzV//vy46iyNn0gjJDk5mby8vGiHIcQZvz9MMCgTDITxeUOEwzI+T2TaWRVZIRSMzSHAI6EoCj2uAB2tPsKhyHwfRVEIBuWo9oMtXbo0rpL6hGt+cTqdzJw5k9ra2miHIsSRiisdhMMKPm+IxloPpcvTqbnbw+rHcoDe5NPZHkCRFZypRjrb/YRDCjaHAb1Bor3FT5JFh1Yn0eMKYrHp6XEFMZq09LiCXDrdwmNPTaLbFUCSJOxOA64OPxqNhCMlPmYJbKrzsu+jGmx2PblTLCxelQn0lo3XE6bHFSA5zUTAF8bjDmE0abE59HR1BJBlBbvTQFd7AL1RgyIrBAMyFque/TtrWLUpG4NJi7s7REq6EU9PiGBAxplqRKsVo9n6m3BJHeJv3KkQfWmZJq6cbSXgl+lxBbl9o4u8KZ+vMl93z82J/Q3odBKzS1PZ+Zu7LF6dSVe7n6y8JJrqvAT8YbLzLdyp6GJOaQp19930dAWZPN1G+eV2CmbYuXGlA0VRKJ6fwv6Patj0lfy4SeoBfxidTmL+0jSMJq36ut8n88lv72FK0mKx6enuDKDVaXB1+lm0KpOLp1qQgOIFyex9v4YN2/OovdtDZ4ef6cVOblxup3CWg2sX2kmyaHEkG6m+5SI738KaLTlotdqHBxUB8bb2wiNL6lqtlnXr1lFRUYFer2fKlCmcPHmSpUuXUl9fT09PDyUlJZw4cYI5c+bQ09NDXV0dy5Yt49SpU0yZMgWDwcCNGzdYvnw5V65cISUlhbS0NC5cuMDy5cu5efOmOs/76dOnWbhwIQ0NDbhcLubNm8fJkyeZOXMmycnJOBwOlixZwtmzZ5k0aRImk4ny8nJWrlzJxYsXcTgcZGVlqfu+ffs2AIWFhZw8eZLFixfT3NxMR0cHCxYs4Pjx48yaNYtgMEh1dTXLly/nzJkz5ObmYrFYuHbtGitXruT69etYLBZyc3M5ffo0y5cvp7q6mmAwyKxZszh58iTz58+nvb2dlpYWFi1axMmTJ5kxYwaKonD79m2WLl3KxYsXycrKwm63c+XKFVasWEFZWRkmk4lJkyZx7tw5lixZwr179/D7/RQXF3PixAkWLFigTrq2cOFCTp8+TWFhIdA7cdHKlSs5e/YsGRkZpKSkcOnSJVauXMmNGzcwGAzqcVu2bBl1dXW43W7mzp3LsWPHKCkpGfK46fV6KioqWLFiBZcvXyYlJYX09HTOnj3LypUruXXrFpIkUVhYOOi4zZ8/nxMnTjB79mx8Ph/3799Xj9vkyZMxGo2UlZWxcuVKLl++jMPhIDMzk4sXL7Js2TJu3boFwPTp0wcdt75zori4mEAgoB43l2vwaIeUNBMNtR4yss1MLrRRVemidHm6+vfauz0sWJaGTq+h8lon5iQdqzdn884v7nD+eDPmJB3driCpmSbmL00jNaN3f00NXkpXpDO1yEFddQ+LVmXgdYcou9hOdr6FWfMGrrqj1WpZvHgJtypr1WN96tQpli9fTk1NDV6vlzlz5nDs2DHmzZuHy+WioaGBpUuXcvLkSaZOnYpWq6WyspIVK1Zw6dIl0tLSSE1N5fz586xcuVK9RgsKCjhz5gyLFi2itrYWt9utnqNFM2ZgMpsHxJaebWbFhiwqr3WiM2jIzrcA0N0VIBgM8/gTk9n55l1sDgOly9O4eq6N88eaqL/vxp5soLXRx6RpNqbNdNDS6KXzdgC/L8y0mQ50Og0Op4GVm7PZ90ENOr2GhSsz0BsGVtCmTZvG3Llz1WN59uxZ8vLysFqtXL58mZUrV1JWVqZeg2fPnmXZsmVUVVURDAYpLi5Wr8GOjg5aWlro6enBZDJRVFSELMvcvn2bZcuWcf78ebKysnA4HFy9epUVK1Zw7do1zGYzkydP5vTp0yxbtkw9Lg9egw0NDSxZsoQTJ04wbdo0NBoNN2/eZOXKlVy4cEE9LhcuXGDFihVcuXJlWLn2kSV1WZapqKigs7MTSZLw+/2EQiFu3bqFx+MhGAxSXl5OIBDg7t27hEIhvF4vZWVleL1eamtr0Wq1+P1+bty4QXd3N4FAgM7OToLBIJWVlXR1dQFQWVlJIBDg9u3beDweAoEAN27cIBAIcP78eSRJwuv1Ul5ejtfrpa6uTt13eXk5PT09BAIBenp6htx3MBjk9u3beL1e9T2BQIB79+4hy7Iat8fjob6+Hp1Op8bQ1dWlTioWCoW4efMm3d3dyLKsxnjnzh38fj8+n4/y8nL8fj/3799HURR8Ph83btzA7XbT0NBAa2srgUCAiooKurq66Onpwe/3EwgEBu07GAxy584dgsEgHo+H8vJyNVFC70MWZWVluN1uGhsb6ejoIBgMqsdNo9EMOG59SweWl5cTDAYfetz63ldeXq4et66uLkKh0Jcet76yra6uJhwODzhufedE33bd3d34/X71M77suPWVd3V19YDjlpaWMuj8NSVpCfjDpGWacaYYuXCiBbvToLb1ZuaauXS6Fb1BQ36BjQsnmzl9pAmA4gWpKLKCzaFHUQAJqipdKApYbTq0Og0drT6mzXRw7VwrYRkKiuxUVXYNeR1VV1erx9rn86nnUU9PD+FweMDxCAQCeDweysrK8Pl81NbWqtdf37keCoXo6OggFAoNONZ9I8X6jnXf54TDYdra2ggGg/RfmaChxsO18204Uw10tvnVsrHYer/3uWNNOFMMeNxhrp5ro7nBy7wlaZjMOrLyk8jINtPW4qOjzc+9292kZpg++84QCim0t/o4f6wJm0NPMBBGYvCDhC0tLdTV1anXjsfjoa6uDr1er57Lfddg3/lbWVk56BqsqqrC7/fj9Xq5cOECPp+Pe/fuqddg374bGhpoa2tTr2+Xy4Xb7Vavk/7Hpf81GAgE1POt77j0XYP9j0tnZ6d6nbjd7mHlWkkZZg9ETk7OsHYoCNnZ2SiKgtVqpaamZkxP5EmSNKpOsr735eXl0d3drSb34SiePZMfvLEFrePagNfbW32YzDp0Oomu9gCurgAn9jeg1UqsfTwXAFlWyMxJ4sf/z1W+8lIBWXkWjCYt96u6sdj0WGw6NBoJjUai5m4PVpue1AwTjXW9dwEtjV40GonM3CS6OvykppsGJC7Zl8b//A93OXr43JCxazQaioqK1GTQ0tIy4rLr80Vln5WdyT++vR177t3PY5MV6u+7cXcHSc0wcfiTOtzdIYrmOima46S12Ud+gZVDu+tIyzSRP9VGZraZxjoPHneI3MkW3N0hnCkGaqp70EgSyWlG/L4wkkZC+uwYTJpqw9UZwJliRKf/vKYuYWDfL6bxvf/544d+p6lTp9LV1UVycjJ37tyJSgdsX7lOnz5dvUsfruHMfpvQbeoajQZFUcQTpONIq9Wqk7lJkoRWq2Xt2rX4fD6am5tpbGwkGAwOmHdfp+s97fq/R5Z7Rzj0tY/KskxpaSkFBQX89re/VT+v/zHt+/cH36/RaHjxxRc5c+YMBoOBUCiEy+VCp9MRDoeRZXnIuBVF+cLFEFLSTOq/p2ebSc82M23m4MVgQiGZ2aWpFBY71deG2m7G7M//PnmaDYBJU23qa2kZ5gffMoAkSYO+k8Vi4dVXX+VXv/oVbreb1tbWAd9tqPf0lUPfvyuKgl6v57XXXuP1118f8IOo1WoJh8NoNRp4oJas0UgD+hme+3rhgL8nf1Z+OZMsTC604fysr6CvmQbAZO49N6YU2tXXbP2KLiW9dx9pmV9eNg9+b71ez3PPPcfhw4fR6XRUVVWp59tQ54FGo0Gj0bB8+XJOnz6t5hFZltm+fTstLS2cOnWq3/fXIMsykiSpP8R9570kSWg0GhwOB1/72tf40Y9+RGZmJjU1Nep7+l8fD8bQ97fhSKikrtFoMBgM6gn78ssvU19fz4EDB9Rt0tPTyc7O5urVq1GMNDHk5OTw9a9/HZPJxM6dO0lKSuLxxx8nLS2N3bt3s3jxYhoaGnjyySdJTk6mvLycCxcu8PWvfx1FUXj//feZNGkSpaWluFwujh49yksvvURTUxPt7e1kZWUxefJkDhw4oM6quXbtWrRaLW1tbRQVFeH3+5k3bx6dnZ1cvnyZZ555hosXL7Jx40asVisul4uysjI2b95MYWEhTU1N7Nq1i1deeYWkpCQ+/PBDMjMzWbp0KS6Xi5/85CdjLhedTsOWpyeNeT9fRKPR8Nxzz1FUVERPTw+/+tWv+Na3voVeryc9PZ0pU6bgdruZNm0ay5YtIxwO8w//8A9s375dLYePP/6Yl19+maSkJD766CO2b99OZ2cnVquVw4cPs2HDBioqKvj000/VO69vfetb/NM//ROvfuMb2O2jW5dg3pK0CJfGYCtXrmTDhg1IksQ//MM/sHHjRubMmcO0adM4fvw4y5Yto62tja9+9asYDAbefvttMjIyWLduHV6vl3/913/lmWeeIS0tjUmTJjF16lQKCgoAOH78OFu2bKG5uZlLly7h8/kAeOWVVzh//jyFhYUEAgFmzpxJamoq586dw2q1smDBAmpra9m0aZPa3l5bW8tLL72E0Wjk9OnTdHZ2snXrVhRF4ac//SnPP/88KSkpXL9+nXfffXdY3z2hhoE88cQT/O7v/i6vvfYaxcXFTJkyBfMDnTlWq5X8/PwoRZh4GhsbCYfDrFq1ik2bNvHTn/6U48ePA70zYur1etra2mhsbGTdunVs3ryZY8eO8bOf/Yz09HSeffZZWlpamDt3Lvn5+TQ3N/Pmm29SWFjIsWPHOHfu3IBpku/cucOiRYtYtmwZ7e3tPPXUUzQ0NFBSUkJBQQE3btzg17/+NZcuXeL48ePYbDYmTZpEcXEx3//+9ykvL2fjxo1kZmbS09PD5s2bmTp1Kg0NDdy6dStuRkZJkoTb7ebevXssWLCA1atX4/F4+PGPf0xHRwdWqxWr1UogEKCmpoaioiLmzp3LzJkz+cEPfsCNGzfYtGkTKSkpdHd3s3nzZqxWK++88w6SJNHU1ER5eTmnTp1Sa4h9bcMrV64kOTl52G280RAMBqmtrSU/P5+SkhIWLlzID3/4Q8rLy9FoNKSlpaEoitqcsXr1ajZu3MjPfvYz9u7dy7Jly5gzZw6tra1YLBacTidHjx7l0KFDagfy8ePH1YQOUFVVxYoVK5g3bx5JSUnMnTuXxsZGNm7cSGpqKgcPHuTNN9+krKyMs2fPkp6eTmlpKa2trfzwhz9ElmVeeukluru7yczMZP78+eTn53Pt2jVaW1uHPRFhfJzBw1RQUMDu3bvR6XQ8/vjj6kiYeLlQ482MGTOw2+1cu3ZtwG18/9vErKwsiouLOX/+/IBmGJ/Ph8fjwev1cvnyZf7lX/6FtrY2PB4Pfr8fSZIGNA/0aWxsxGKxMGXKFCoqKvB6vVy5coXXX3+d5uZmvF4vwWBQfS+g7quvGUZRFKqrqzl48CC7du3i8uXL3L17lzVr1sTs2roPSkpKYu3atVy5coX29na1WaT/OgZ6vZ5169Zx+/ZtGhoa1GaqUChEV1cXiqJw9+5dDh06xAcffEAwGMTn8w1ognrw2jl16hQvvPACZWVlhGN0kqu+JsDa2lru378/oEml/7lZWlqKRqPh6tWr6mL0oVCI7u5utT/i5MmTnDlzBlmW1XOzrxz7mhH73Lhxg9LSUoLBII2NjTQ1NXHmzBl+9atf4ff71cERfc08gNrsEgwG6e7uJhwOc/36dX71q19RUVHB3r170Wg0rFmzZtDnPUxCZbuqqiqefPJJLBYLP/nJT/jkk08oKysbcKK73e4RdZoJD9fU1EReXh6LFi2iu7ubI0eO8NprrzFv3jx1ycDOzk4AduzYgdvt5ujRo6xfv57XXnsNv9/PkSNH2LJlC0uWLMHv9+NyuQiHw7S3t9PY2MjUqVMpKioiLy+PvLw8jEYj58+fp6Kigrq6Oo4dO8a2bdtYtGgRfr+fnp4eFEXh3r17rFy5Eo/HQ21tLXfu3OE//+f/zIoVKzh27Bipqals3boVp9NJVlYWixcvpqurK6Zrn/35/X7q6+t59tln0Wq1lJeX43Q6+YM/+AM1eYXDYe7du8fWrVux2Ww0NjZy9+5d/uiP/ogVK1Zw5MgRsrOz2bJlC8nJyXR0dBAOh+ns7MTv99PQ0MCmTZvIz88nLy+PrKwsKisr6ejoiOk1E/pGCK1fv5709HRaW1u5du0af/RHf0ROTo7aMVlbW0tRURGLFi2is7OTY8eO8fu///s8++yzXL58GbfbzeOPP05NTY1aJn2jq+7du8fixYuZMmUKeXl55Obm4vF4uHXrFufPn+f69eu43W6eeOIJJk+eTHd3t1qR6e7uZs2aNXR0dHD58mVycnL4zne+Q0pKCjt37mTt2rWsW7cOSZIoKSlhxowZ1NbWDnvx64Qa/aLRaDCbzTz99NO8+eabagfEg6sw9XVoCGNnNBpRFAVZlgmHwxgMvcP8srOz+eM//mO+973v0d7erpZ5MBjEYDCow+o0Gg16vV59v0ajIRQKodfrCYVCGAwG1q5dS0FBAYqicPr0aa5fv67WcPr3o/R1SPW9rtPpkGVZPQ/6hrWFw2H0er06bK/vb33xPWz0SyzoP/pFq9Wq3zEUCqHT6dBoNGi1Wl577TWuXbvGgQMH1I63vjulh5WDTqcjGAyqHalarZacnBwee+wxtFotXV1d6jS0aWkp/OSB0S/R1n/0S9/3VBRFnTZXr9cDsGTJEjZs2MD3vvc9tbO9//nbdx7odDp1OHL/nNHXmWw2m9m2bRspKSmEw2E+/fRTGhsb1XOu//v73iPLshqXJEkEg8EBxwBQr6G+Y9J3XMLhcHRGv9hsNnWc9KMmyzJut5tf//rX6gEY6jdLJPTIeXC4Yt9/y7LMv/7rv9LS0jKovPufG7IsD9hH37Z9tSm/38/evXvVJpgHj6csywPaNfu//uA52L+m038YmaIocbcQAqD+kPXp+056vZ7Tp09z9erVQds87D39/70vCYZCIe7fv8/PfvYzYGDZx/p4sgfPK0Bt1uvu7uYXv/jFkEMJ+78nFAqpFYyhtnW73fz2t7996LnZ9/4HPbivB/97qBhGYtRJXaPR8PTTT7Nv3z6+9rWvYbPZ+OijjyguLqapqYljx46NdtdjJpJ29NXU1FBTUxOx/YlhqcMXDAY5ceJExPaXSGWvKAqXL18e0Xu2b9/ORx999NDmj1grn1G3qWs0GgoKCli4cCGKovDxxx/z7LPPcuPGDdatWxeznZPZ2dksX7482mEIghAnMjIy4moJzDFnXrvdTn19Pffu3SMpKYmamhp0Oh2TJo3vON3RMplMpKQMfgxcEAQhEYw5qfc92df3S+b3++ns7CQ1NXXMwQmCIERbRUVFzDWxfJExd5Q2NzezYcMGvF4vLS0t2O12MjMzqaysjER8EedyuWhqaop2GIIgxIkjR45EO4QRGXVS7xsq1DeVampqKm+++Sbz58+noqKCnp6eSMYZMW1tbXG3kKwgCMJwjTqpy7LMzp078fv9fPzxx+rrubm53LhxIyLBjRcxOkYQhOEym814vd5ohzFso25TVxRlyKkrz58/H9NLxen1eozG+FhJRhCE6Hv66aeH/Yh+LIjNcYfjKDc3VwxpFISIiL1EFw5Hfj4am8325RvFkAmX1CVJwmKxfPmGgiA8VLerm6DXAsTO+G0llERd3f1ohxF1Ey6pC4Iwdl6vj9OHmiCYTEyM9lMkuhsnc+Lo9Yjv+ty5c3HVDxd790/jrL29nfLy8miHIQhxTZZlfvaTj3CkPM2a7RlI+q4HF0IaNkmSQFFGPZ+MEjbRXuvgh//PCarvRr4/7+LFixHf53iacEm9q6tLTL0rCBHQ2dnN//4f7/DGv2RTVDwZS5Jl5DN9SRILFy7sXSTd5RpxDIFggLqaZqqqamhpbh3x+xPRhEvqgiBEjtvt4WblHW5W3hnV+yVJorXJw7lz52K2suVwOGI2tqFMuDZ1s9lMUlJStMMQBIHeodGHDx/GNYpa+qPy1FNPiSGNsSwzM5NVq1ZFOwxBED7z4BKIscZkMkU7hBGZcEm9b5UbQRBiQ996nbFqpItURNuES+qCIMQOSZJYtWoVdrs92qE81J49e4a9PmgsiJ+GoghpampSF0UWBCH6srKyMBgM0Q7joWJ52pOhJGxST01NpbCwkPb2dm7fvq222Xk8HpHUBUFIWAmV1NPS0igsLKSrq4upU6diNptpamqK6U4YQZjIFEWhpqYmphf+njx5Mvfv34+bPJJQberPPPMMFouFJ598ElmWKSgoYP78+QPWF7RYLGI5O0GIISdPnqS7uzvaYTzU1q1bY74zt7+ESuoGg4GGhgZCoRCtra3s3LmTgoKCAQckIyODxYsXRzFKQRCE8ZNQSX3fvn3MmzcPk8lEZ2cnJSUlHDp0aNCQpHh6kEAQEp1erx9wNx1rAoFAtEMYkYTKbpWVldy6dYsFCxZw+/Ztbt26NWibcDhMMBiMQnSCIDxIkiQee+wxTp48GbPLTH744YdxNVZ9TEnd6XTS1dVFamoqBoOBlpYWZsyYQXNzMy0tLZGKcURkWebChQsP/XttbW3MnjyCMBFZrdaYbrNub2+PdggjMuqkrtVq+frXv87OnTv55je/SU9PD+Xl5fj9fubOnctvfvObSMYZMbIsx3SnjCAIwliMuk1dkiR0Oh1FRUVcvHiRn/zkJ5SWlnLp0iXmz58fd/MlCILw6CmKwrVr13C73dEO5aFKSkrQaOKn+3HMbeoGgwGfz0cgEECr1dLW1kZrayszZ87k8uXL6naSJJGVlRX12yybzYbD4Yi7p8SERycrMxNtjF7EkiSRlp5OXl5etEOJmO7ublJTU6MdxkM9/vjjdHd3R70vbrgdtmNO6oFAALvdjtFoJBwOo9FoMJlMg57a1Gq1lJSUYDabx/qRY5KRkUFubi6XLl2KahxC7MrLy0Gn0xGLXWMajZYZ02cgB2P3sfpEk5eXR2lpadTnf2lraxvWdmNO6jdv3uSb3/wm06dP59KlS+o8DlVVVQO2C4VC7NmzZ6wfN2YFBQUUFxeze/fuaIcixKji2TPZ8Y0taKNb/xhSOBzi5MkTHD18LtqhRIzdbsftdkc9aT6M1WqNqxEwo07qiqLQ0tLC3bt3+f73v4/JZKKhoYGnn36aY8eOxWwB+P3+mH4kWRAmEkmS2LBhA0ePHo3ZUSbvv/9+zOazoYw6qYfDYd566y3C4TDNzc3q6/v378fr9UYkuPHQ2Ng47NsYQRDGn9FojOmOyFjuxB3KmJpffD7foNdi9de2jyzLoqYuCDFEluWYnixLo9Egy3K0wxi22P15FAQh4SmKwunTp2P62ZH169dHfdTeSEy4pJ6WlkZJSUm0wxAE4TM1NTUxPb9KYWFhTM9N86AJl9RtNhv5+fnRDkMQBGFcTLikLghCbMnMzIzpxeAbGhpius3/QRMuqXu9XlwuV7TDEASB3iGN69atw+FwRDuUh/roo49idgz9UBJq6t3hEEMaBUFIZBOupg5EfQ4HQRA+Fw6HY7p5I5bH0A8lvqKNAI1GE3cHSRASlaIo7N+/n87OzmiH8lBPPvmkGNIYy/Ly8li6dGm0wxAE4TOdnZ0x3WadlZUlhjTGMq1WS0pKSrTDEARBGBcTLqkLghBbioqKoj4l9xeprKyM6Tb/ByVsUk9LS+Oll14iOzt7wOsul4vq6uroBCUIwgCSJDFv3jwsFku0Q3moI0eOxHTz0IMSakjj0qVLmTdvHh6PB71ej8vlGjRjZFtbmxjSKAgxJNbbq+Oplg4JVlNftmwZe/bsITMzk5ycHCRJ4rnnnhOjXQQhhsXyAhnQOzVwPEmobNfR0cGyZcswmUxUVFRgMBgGTZmp1+vR6RLqBkUQ4paiKBw4cICurq5oh/JQTz31VFzljPiJdBjeeecdcnJyyMjI4NNPPyU9PZ3W1tYBiT07O5upU6dy+PDh6AUqCIIqlhfVAXA6ndEOYUQintS1Wm3UJr33eDzcvn2bX/7yl7jd7iFXLNFqtTHdKSMIE40kSTHdbh3LsQ1l1M0vkiSxbNkyDAYDW7Zs4atf/SqZmZls2bKFOXPmRDLGERMTdglC/CgtLY3pitaJEycmxspHWq2WVatWUVpaSmlpKT09Pbzyyiu0tbWxadOmmO3Rbm9v58aNG9EOQxAEeiuHhYWFMT1OvaysbGIk9T4ZGRlUVFRw4sQJ0tPTuXXrFunp6aSnp0civojr6uqiqqoq2mEIgiCMizG3qT/YHuZ2u2lqamLKlCk0Nzerr2u1WtasWYPJZBrrRwrCuMqflIvBoCcWB9lptVoWL16CxZwW7VAiQpIkpk+fjizL9PT0RDucISUlJeH1eqPett7R0TGs7cac1F0uF8XFxUyePBmPx4PZbCYrK2tQbViWZaqqqqI+NMhoNKLT6YbsRBUEAFkOEQ7boh3GkGRFoba2lps3b0Y7lIiprKyMdghf6IUXXuDdd98lFApFNQ6fzzes7cacYS9evMicOXPYsWMHH3zwATNmzBhyIQpFUbh3795YP27MCgoKmDZtGvv37492KEKMMpr0hMPFxOJkq4os09BQz507d6IdyoTR1tbGnTt3op7Uh2vUSV2WZU6dOoXL5eJHP/qR+vrjjz/Ovn37on6r8kXi7QkxQRCiJ5Zz2VBG3VEqyzInTpwY9IX37NkT06NLFEWJq55sQUhkkiSxYcOGmF6j9NNPP43paQweFPEG7lhPmHV1dXg8nmiHIQjCZ9LT09Hr9dEO46Hu378f7RBGJKHmfhmOYDA4YFSOIAhCIplwSV0QhNihKApVVVXDHtkRDVOmTInZhymHMuGSutVqJTc3N9phCILwmfPnz8fsGHWATZs2iYWnY1l6ejrz5s2LdhiCIHwm1keXxFNChwmY1CH2V1oRhInEZDLF9DUZDAajHcKITLikHgqF4mp4kiAksr4hjbE8Z/nOnTvjKmck1CIZw9HQ0BDTq6wIwkRjs9liuomjpaUl2iGMyISsqYv51gVBSFQTLqkLghA7FEXh6tWrMT3B3qJFi+Jq8fr4iTRCHA4HBQUF0Q5DEITP3LhxI6bXKV24cKFI6rHAbreTmpqK3W4f8HpKSgrFxcVRikoQBGF8JVRHqclkwul0EgwGmTFjBgUFBWRkZPCjH/0ornqvBWEisdlseDyemL1Gu7u7ox3CiCRUUn/mmWfQ6XRkZWXxt3/7t1itVm7fvj3gZAkGgzH9SLIgTCSSJLFlyxYOHTo0aA2GWPHWW2/F7A/OUBKq+SUtLY1Dhw7h8/kwm83MmDGD69evD9imtraWkydPRilCQRAepNVqY/rho3hK6JBgSf3SpUs8+eSTOBwOMjMzKS8vH3Ka3VjulBEEQRiLhErqx44d45/+6Z+4fPkyVVVVHDp0KNohCYLwBRRF4dixYzH97MiGDRti+uGoB40pqfcN89FoNOqXzszMJCkpaeyRjVI4HGbnzp0PXawjJydHTOglCDGkvr6eQCAQ7TAeavr06THdPPSgUXeUarVa/t2/+3fs3r2bb37zmxgMBj799FOys7Pp6elhz549kYwzYoxGI3l5eVy5ciXaoQiCIETcqGvqkiSRmprKvHnzqKur4xe/+AVbtmzhypUrrFq1Cp0uoQbWCIIwTnJzczEYDNEO46Hq6+tjfnrg/saceZOSkujo6KCtrQ2j0UhDQwN+v59p06ZRWVk5YFuz2Rz12xhJkujp6YlqE5EQ23qngo12FA8hSRiNxoQ5fyVJYt26dRw5coT29vZohzOko0ePYjQaox3GsEfhjDmpy7KM0WhEo9GgKArhcBi/34/JZBr4QTod27Zti/rJKEkSGo2GSZMmRTUOIXZl52RiNGiIxVm0dVotq1atJisjMaa6kCSJhQsXYrfbY3r1o1gw3LWVx5zUa2pqeO6557BarVRXV5OSkkJKSsqgWnooFOLDDz8c68cJwrgrnj2Tx17aiMb05ds+aqFQmMNHDnPs8LlohxIRGo0Gj8fDsWPHYvbhI51ORzgcjnoTzHA/f9RJXVEUvF4vZWVlaDQanE4n58+fZ926dVy8eHHIpzZDodBoPy5itFotiqI8dHSMIIRCIWK3CVUhHArFxLUUKfv376e7uztmH/LZunUrn3zySczG96BRJ/VwOMzbb79NMBjk4sWL6us3btyI2bYxgOzsbPLy8jh9+nS0QxEEAejs7Ix2CF8oNzc36n2BIzGm5pehVgS5devWWHY57vR6PampqdEOQxAEYVwk1BOlghAJgUAgZm+1tdhQlMS6bIuKijCbzdEO46GuXbsWV821iXV2DENPTw+1tbXRDkOIYa0tbfi6LRBr7eoK+N0mau83RDuSiJEkifnz52OxWKIdykOdPHlSJPVY1tLSIp4mFb5Ql8vFsT3NSMHc2EnsCkhyKqf2d1NX1xjtaIQYJh77FIQHKLLCT374GwLBbWz76gKM1u7oPoyk6Aj7rZw95OUH/+8vY3qelNGI5QUyoPdhtHhag0FShjn4MScnZ7xjeSS0Wi0ajYZgMBYfLRFiiU6nw+G0M3PmNCQpeje1gUCAxsYWGhuaEy6hQ+/ghd5hpLFyWzTQ7/7u7/Jv//ZvMTGMtL6+/ku3mXA19by8PCZPnszRo0ejHYoQ40KhEG2t7Zw4HrtDdBNBrFewHnw6PtZNuDZ1jUaDzWaLdhiCIAjjYsIldUEQYsvSpUuxWq3RDuOhTpw4EVejXyZc80tjY2PMtt0JwkQjSRJTpkzhzp07MTuh14PrHMe6CVdT93q9VFdXRzsMQRCEcTHhkrogCLGlubk5pjtL421akYRtfsnPz2fOnDlcv36dmpoa9fW+BQY6OjqiGJ0gJA5JktBqtaOe9Or06dOEw2H0ev2o3h8Oh8e1zfvJJ5/kjTfeiIkhjcORUEm9oKCAuXPn0tXVRWFhIZ2dnWzcuJFf/vKXajt6VlYWM2fOjNk1VAUhnuRPyuHx7auZNiMdo1n7yD9fkqChtoNjh8o4f/Yafn/kx/HHwqpHI5FQSX3btm2cOHGCTZs20dzcTEFBwaDB+hqNRqyfKggRMGfuDP7H/7eDtKl3UTR3iNacCiWKhq0vLuWTX8/l//y//0YgENmmnFh+2nUoCdWmHg6HsVgs6HQ6bDYbZ8+exW63o9F8/jVlWY6r4UmCEIt0Oh3/6f96mtRp5ciadhT8KASi84/kQzZVsPE5E8VzpkX8ux48eDCuEntCJfUPPviApKQkZFnmo48+QqfT8eGHHw44II2NjVy6dCmKUQpC/LPZraRP8qJI3miHotLbalm1ZkHE91tVVRVXw6ATqh2isbGRpqYm7ty5Q21t7YAO0j5+v5/GRjHLnSCMhdFoRNK4ox3GQFIIuy052lFE3ahr6pIkkZ+fjyRJFBYWMn/+fMxmM8uXL2fSpEmRjHFEFEWJu19WQRAiZBym05wxY0ZcLWc36qSu1Wp54YUXmD17Nr/3e7/H6tWrefHFF7FarWzatCmSMUZUUlISGRkZ0Q5DEIQ4sX79erTaRz+yZ7TG3KY+ZcoUzp8/zxtvvMH06dO5du0aRUVFMTuXQ2ZmJosXL452GIIgCONizG3qOp2OUCiELMtoNBo6OztpbGxk5syZnD9/Xt1Oo9EwY8aMUT9gECm5ublMnjyZuXPnRjUOQYhnaWkpUb+Wh5KWlhbxazszM5O5c+dG/eEjt3t4fRhjTuper5fMzEzsdjvBYBCdTofT6aSlpWXAdpIk4XQ6oz6Q32azYTKZSElJiWocghDPHE4nkib2Bs+Nx7V96tQp7HZ7RPc5GsNtAhpzUr9+/TqrV6+mqKiIQ4cOkZ+fTyAQGDTyJBwOc/r06bF+3JhptVrsdruYJkAQxiArO5Ov+7cTa8tH1NbWcuTIkWiHEVWjTuqyLFNVVUVDQwN/+Zd/iU6nw+Px8Mwzz3Do0KGYfcAnHA6LhC4IQsIaU1L/4IMPkGV5wKKsu3btiqunrwRBEL7IokWLuHjxYsxWVB80pkaxob6kz+eL6Wk0MzIymD59erTDEAQhTixcuHDAVCOxLn4ijRCLxcKMGTOiHYYgCMK4mHBJXRAEYSS6urqiHcKITLikHggE6O7ujnYYgiDEiY8++ijqY9RHIqEm9BqOhoaGQWPoBUEQHsbj8UQ7hBGZcDV1WZYJBCK/OoogCIkpnibzggmY1OPtAAmCEF2rVq0So19iWd88DoIgCMNRXFwsknosM5vNUZ3vXRAEYTxNuKQuCIIwEtXV1XG16M6EG/3i9/tpb2+PdhiCIMSJPXv2RDuEEZlwSb2+vp76+vpohyEIgjAuEiqpS5KkdmisX7+emTNncvr06QGLdQiCIIyEJEmi+SVaNm/ezLRp09DpdGi1Wo4fP87SpUsHzLDWN6Qxng6SIAjR89xzz/H+++/HzVOlCdVROmvWLHbt2oVGo+HIkSNDzq6Wm5vLokWLohShIAjxJt5WSUuopF5TU8PWrVux2Ww0NTUhyzLHjh0bMEWwXq8nIyMjilEKgiCMn4Rqfvnoo4+w2+089dRTtLW18etf/zru5m0QBCG2XL9+PW4WyIBxSOpms5lgMBiV9qdQKER7ezu/+tWvCAaD+P3+Qdu0tbVx9+7dRx6bIAjx6eTJk3HVBzfqpK7RaNi6dStHjhzhueeew+Fw8PHHH1NSUkJdXR1nzpyJZJwj8kUrL7lcLsrLyx9hNIIgxLN4SugwhjZ1jUZDcXExixYtwul0cvr0aV544QVu377Nxo0bxcRZgiAkBIvFEu0QRmTMHaVOp5N79+5RWVmJ1Wrl3r17mM1mcnNzIxFfxOl0OpKSkqIdhiDENanf/ya6HTt2oNPFT/djRCLtXyv3+Xy0tbWRnZ1NbW3t5x+k07Ft27aoJ9Tk5GTS09O5efNmVOMQhHjmcNgwJ5miHcYgRUVFvPjiixHd55o1a5AkiXA4HNH9jtRwF/cZc1Jva2tj+fLltLe309nZidVqJTs7e1DSDIfDHD9+POpTWE6ePJkZM2awf//+qMYhCPEsMzOdJ353NfpoB/KA+/fvR/zazsnJ4eDBg1/YV/coDPfzR53UFUVBlmUuXrxITk4Os2bN4je/+Q1z587l9u3bgxZrVRQlJibSslqtdHV10draGu1QBCFu6fRa5CjXXIfi9Xojfm0fOnRIfe4lHow6qcuyzJ49e/B6vbz99tvq6/n5+TFdC25paaGysjLaYQiCECcuXboU7RBGZEw19bKyskGvnzhxIqaHALndbu7cuRPtMARBEMZFxBu4YzmhC4IgjFR2dnZcDdFOqLlfhkOv12Oz2aIdhiAIcWL79u1otdpohzFsEy6p5+XlsXr16miHIQhCnIj2iL2Riq9oIySebqUEQRBGYkImddHuLwjCcH3wwQdRf/BoJOLn2dcIqaurG3L2RkEQhKE0NTVFO4QRmXA19UAgIBaeFgQhYU24pC4IgjAShYWFcdUPN+GSutPpjNkZJAVBiD3r168XQxpjWXJyMiUlJdEOQxCEOCGGNMaBeDtIgiBEj8/ni3YII5JQ2U2r1ZKbm4ter8dqtTJ9+vRBq5aEw+G4O0iCIETPzp07o7Lm8mjF/ZDGpKQkpk2bht/vR6fT8eqrr/L3f//3rFmzhkAgwPLly3njjTfUaTPr6+vFtLuCIAxbLEwZPhJxX1N/7LHHKCoq4nd+53eoqqri0qVLaLVaHA4Hx48fJzk5eUBzSygUwuPxRDFiQRCE8RP3Sd1ms1FRUUF3d7f6pGjfAh52u51wOCyeIBUEYdRKSkriqh8ufiJ9iGPHjlFaWkpaWhoAd+7coauriyNHjrB48WIOHz484BHftLQ0CgoKohWuIAhxZvny5XGV1OO+Tb26uprq6mrWrFlDOBzm9OnTQO/aqdevXx+0vc1mo7i4mLt37z7qUAVBEMbdmH5+kpKSgN51P5OTk9FqtRQWFpKcnByR4Ebi6NGjcdVDLQhCfGhra4t2CCMy6pq6Vqvl1Vdf5aOPPuLb3/42wWCQM2fOoNfr0Wq1vPfee5GMM2JCoRBerzfaYQhCwvH7wpw92kR3V4DFqzNJzzKPaj99XWCS1Ns/Vn/fTWZuEjqd5qHbjacPP/wwriqMo07qkiRhMpmYPXs2169f5+DBg/zH//gf+ed//mdee+01du3aRSAQiGSsEVFbWysm9BKEcVB920VjnYfl67OoquxSk7osK1y/0Ma9292UrkinpdFLQ40Hu1NP6YoMzh5tIuAPU7o8g+P76pky3U53V4DO9gAzS5J54x8qeOEb0/F6wtTd72HxqgzuVLrweUKs3JSNyTy+rcjBYHBc9x9pYy4No9GI2+3G4/Gg0+loaWmhs7OToqIirl27pm4nSRIpKSlx1eEgCMLQ0lJT0TwwH0reZCtVFS4unmxh0aoM9XVXZ4Br59vY+GQex/c1YDRrmVOayvULbRzdU09bsw+TWcu1C210dQSYPM3GrfJO/L4wzQ0eiuenYLbquHG1g6VrMzl9uIme7iDrHs/FaBoYQ5LZTHp6+iMpg0dtuD8uY07qwWAQi8WCXq9XH/DRarWDble0Wi0rVqxQ2+EFQYhfDocNo9E44LX2Vj9Fc51odRoO7q7ld14rAkAO97aTGM06ZFlBQkKj6W0z8XvDBP1h8qZYSMsw097sw+sJUVXpIhiQCQUVNFoJOayg1UmYzFoURUGnk7Da9INmT8yfNIkNGzZE9LvOnz+fq1evqvktWlpaWoa13ZiT+p07d3j11VeZMmUKZWVlZGRkYLFYuH379oDtQqEQO3fuHOvHjVl2djYpKSmUlZVFOxRBiFtZ2Zls+9p29P3GRNideg5/3IK7O8jchalcOdOK3x8mLdNEwQw7+z64z4Ll6ZRf7uDY3npS0k2s2pzNif0NtLX4mTbLSUaOmSSrDkUBU5KW1AwTiqLg6QnhTDFyYGcti1ZlUHu3B51+8F1/ZWUlb731VkS/q9Pp5J133ombZphRJ3VFUejs7OTWrVv8/d//PRaLhbt37/Lkk09y8uTJmC0Ak8mk/gAJghA5jmQjO17pfQYkEAhTfasbvUGDOUnH8g1Zaq367k0Xy9bmk5nbe9f++HOT1X3kTuqdq+nF35/+hZ81tcgxHl/hoeLpAcZRJ/VwOMxvfvMbwuEw9+/fV18/duwYPT09EQlOEIT4ZDBomTHbOeTflm/IwjzOnZuRdP/+/YmR1IEhk3djY+NYdjnuXC4Xzc3N0Q5DECYsm90Q7RBGZO/evWLh6VjW1tZGR0dHtMMQBCFOxFNChwSY+2U0ot2LLQhC/NDr9dEOYUQmXFLXaDRxd5AEQYiebdu2iTVKY1l2djZLly6NdhiCIMSJrKysQePhY9mES+oGgwGH49EOhxIEQXhUJlxSFwRBGInKysqJM6QxHrW3t1NTUxPtMARBiBOHDx+OdggjMuFq6l1dXVy9ejXaYQiCIIyLCZfUBUEQRsJut0c7hBGZcEldDGkUBGEknnrqKXS6+GmpnnBJPT8/n3Xr1kU7DEEQ4oTZPLoVnKIloZJ6cnIyzz33HE6nk9zcXJ599lkMhoHzTGg0mkGvCYIgJIr4uad4iKlTp7JmzRpkWebw4cNMnToVh8OBwWCguLiYTz/9NCaX1RMEIT4cOnQoruZ/ifua+sqVKzl37hyZmZk0NTVRV1eHoihUVVXR3t4+aPvm5mYqKyujEKkgCPHo5s2bcTVOPe6TeldXF8XFxUM+JTrUgXC73YNWZRIEQUgUcZ/U9+3bR1lZGW63G+id+7ipqYlwOMx7772H1+uNcoSCIMSzzMzMiT33y6P+8l6vl/Lycv7lX/6FQCBAS0sLfr8f6F2w48Fpdi0WC8nJyUPtShAEYZAnnnhiYszSKEkSJSUl6HQ6VqxYweOPP05ycjKbNm2iqKgokjEOS0tLy7DavTIyMliyZMkjiEgQhEQQb8+1jDqpa7VaHnvsMebPn8/mzZux2Wy88soreL1eNm/eHNO3K/H0IIEgCNEVTyNfIALNL9nZ2Vy7do29e/eSm5tLRUUFeXl5MdvEoSgKoVAo2mEIghAnJtwapRqNBlmW1aaP7u5uGhoaKCws5OzZs+p2Wq2WJUuWYDQax/qRY2I2m0lKShJPlQrCGKSkOKN+LQ9lvJ4Ynzp1asT3OVJdXV3D2m7MSb2np4fCwkKys7Px+XyYTCYyMzO5d+/egO0URaG9vT3u2qcEQRiKTFjOinYQg3g9HlpbW6MdxrjoG+H3Zcac1C9fvszChQt5+eWX+eijj5g2bRptbW00NzcP2E6WZfHQjyAkiKzsTELB6dEOY5DWtjauX78e0X1OmTKFe/fuxc0DSKNO6rIsc/HiRdrb2/mbv/kboLc2/pWvfIX9+/fHbAE4HA5MJhNNTU3RDkUQhDjw2GOP8frrr8dNX9yoO0plWebgwYMoiqL+A7B7926uXbsWsQAjLSUlhUWLFkU7DEEQ4kQsj+QbSsTH9sVTL7EgCMKX8Xg80Q5hROJ+moCRUhRF/PAIgjBs77//ftw0vUACTL07UrW1taI9XRCEYevp6Yl2CCMy4ZJ6KBSKq19dQRCEkZhwzS+CIAgjsWzZMjSa+EmV8RNphKSlpVFQUBDtMARBiBPz5s0TST2W2Ww2Zs2aFe0wBEEQxsWES+oQf+NOBUGInqGWxYxlEy6pe71eXC5XtMMQBCFOfPjhh3E1uGLCjX5pbGykra0t2mEIghAnAoFAtEMYkQlXUwcIBoPRDkEQhDgRb821CZfUjUYjkiSh1WpJSkoacm3BeOrJFgQhutavXz8x1iiNFVqtFofDgdVqZfr06fzFX/wFubm5bN++na997Ws88cQTA35pMzMzKS0tjWLEgiDEk+nTp8dVbT3u29TXrFnDjBkzyM7O5vvf/z537txBp9Nx5coVqqqqmDNnzoDtk5KSyMzMjFK0giAI4yvua+qTJk3i4MGDuFwugsEggUAAWZZxu90sX76cffv2xezc7oIgxL76+vq4yiFxn9SvXbvGY489Rk5ODgAdHR2Ew2G2bt2Kw+GgtLR0QBt6d3e3GP0iCMKw7d69O65mdo375peLFy9y+fJlnn/+eWRZ5pNPPkFRFN544w0kSRqwgAdAa2trwq5hKAhC5MmyHO0QRiTiNfXk5GRMJlOkd/uFZFnmrbfeIhgMqglcURRkWY6r2yZBEGKP0WiMdggjMuqkrtVqefnll0lJSeG73/0u//2//3cWLFjApk2bWL58eSRjFARBiJodO3ag08VPo8aok7okSeTk5LBgwQJcLhdvvfUWX/nKV7h69Spr166N2XGdubm5rF69OtphCIIQJ5KTk6MdwoiM+efHarXS3NxMQ0MDZrOZuro6FEVhypQp3Llz5/MNFQX9WD8sAix6PSkWC3rRLCMIoxar149GliMemzYcxgBIUf7Ow/30MSd1WZYxGAxqp2QoFKKnpwe73T7og77i85EU5YJJa24mW6PB7vVGNQ5BiGeOjg6SYm2SK1lmZkMDL0b42k7fuZPnu7uRo5y7mof5JPyYk3pDQwNPPPEEGo2G+vp6nE4n6enpVFZWDtguBOw2mYj2c1kOnY58s5nrZnOUIxGE+JXpdLJZp8MW7UD602i4mZXFO5G+thsb4REP/hjKcAdVjjqpK4pCIBDg6tWrmM1mUlJS+PWvf83SpUu5evUqHo9n4BskCd9oPyyCvC4XTeXlKHH02K8gxBqfRjPs5oBHKaTV4p3g1/aok3o4HObdd98lEAhw7Ngx9fX79+9z4cKFiAQ3XsQwR0EYLDU1leTkZJqamgiHwxgMBrq7u0lPTwd6H+xLTk6Ou0Ujxspms9Hd3R3x/Wq1WnJyctBqtdTV1ZGSkkJLSwtOp5NwOIzZbKa9vZ3U1FQaGxuHnbfG1PxSV1c36LXr16+PZZfjzmg0otVqB99JCMIEZrPZ+Pf//t/j9/sxm82cP3+evLw8PvnkE/7wD/+QqqoqJEli+vTp/NVf/VW0w32knn76aX79619HfKGMGTNmsGPHDpKSkjh16hSrVq3if//v/80LL7xARUUFGzdupKqqCr1ez09/+tNhJ/W4nyZgpHJycsQ4ekF4QN8AB4PBQFFREWazecD0Grt372bbtm0cPnyYzs7Oz16NhfFsA4VCkV/QwjxO/W/BYJBwOIzVamXKlClqeWs0Gnp6eti/fz9PPfUUO3fuHNFTrRMuqQOP/IlXQYh1WVlZzJgxg4MHD+L3+/H7/aSkpDB58mQMBgNTp06lubmZ4uJidDodri4XAXcSRH3ow+eUkJWamvvRDmPYlixZQltbG1euXEGWZYLBIAUFBWRkZKDVapk9ezZ1dXUUFhaOaL8TMqmLNnVBGKihoYHr16+zatUqLl26xNWrV/F6vaxYsYLy8nImTZrE3/zN39DY2Ehqaio+n48je2pRAqnExOWkaGm/n8+xw1cjvuvjx4+Py/wvJ06cICUlBbvdzs2bN/n444/ZvHkzLpcLWZZxuVz89V//Nbm5uej1w78rkpRhZri+WRDjndVqxel0UltbG+1QBCGuWW1J/MEf7+CxZzLQGLvQaKJRa1cIB000ViXxg+8d4Ozpqwldaauvr//SbSZcUhcEIXKMRiPp6SkUFk0myWx55J8fDAaor2umtqaBri7XI//8R00kdUEQhDGQJIn8/Hxqampi4g5gOEl9QrapZ2Zmxt0kPYIgPHq5ubksWLAg2mGMSPzMJxlBiqKwatUqbty4QVNTk/pggSRJ2O12dYZJt9uN3+8HeocZORwOdQFal8uljls1mUwkJSWp+3a5XOpKKUlJSepoG1mW6erqUn/xbTab2gHi9/txu91qHDabTZ3u0+v14v1sPgtJknA4HOrwp56eHgKB3mFcer0em82mxtHd3T1kjACdnZ1q50//GIPB4IAHLaxWKwaDYVCMAA6HQy0rj8eDz9f7zLBOpxsw90//GA0GA1arVf3bw8oxHA7T1dWlbtc/xkAgQE9Pj/q3h5Xjg8fswRhtNpv6t4fF+OAx6x9jKBSiu7tb/ZvFYlHn3u5fjg8eM5/Ppz4nodVqsdvtD42xrxwVRaGrq0s9Zg/G2Ne59mXl2P+Y9S9HjUaD3W4fMkaNRoPT6RzymOn1eqxWqzr3U/9z/4vKsf8x61+OD577D5aj0+kc8pj1L8cHz/0vKsf+xywcDuNyudQ4CgsLWbJkCXv37o2JWvpwTcik3tzczPHjx1m6dCl2u51Lly6hKAo2m43Nmzej1+tRFIWzZ89SVVUFQHp6OuvWrVNP+v3799PS0gLA5MmTKS0tBXp/CPbs2aOe2LNmzWLGjBkAtLe3c+DAAfVkKy0tVZu1qqqqOHPmDNDbTrl+/Xr1wrx69SplZWUA2O12Nm7cqCbakydPcu/ePaD3DqRvWuFAIMDevXvVC6KgoID58+cDvRfDvn371ORRXFzM9OnTAWhsbOTQoUNA74WyatUq9a7m9u3bnDt3Dugdu7t27Voslt521CtXrlBeXg70Jo7HHnsM6L2YDx48qJZVTk4Oy5YtQ5Ik/H4/+/fvx+VyDYqxq6tLXcUKeod/ZWdnA70PvfWNSNDr9axcuVKN8c6dO5w9e1aNcfPmzWoSO378ODU1NUDv05Nr1qxBp9MRCoU4fPiwGmNWVhYrV64EepPbrl27CAaDAMybN4+pU6cC0NbWxqFDhwgGg2i1WhYtWqQez4aGBg4fPgz0JpX169erP0oXL15U50ayWq2sX78eo9GILMucOnWK+/d7h+U5nU42b94M9Cacjz/+WE3CRUVF6qLqfWOavV4vkiRRUlLCtGnTgN4f708//VRNVCtWrFATdEVFBZcuXVLPudWrV2O1WlEUhcuXL1NRUQH0/qBu2rRJLcd9+/apq4fl5+ezZMmSIY/n9OnTKSkpAXorJrt27VLP/UWLFpGVlQVATU0NJ0+eRFEUdDody5cvJyUlBYDKykouXrwI9P6A9JXVg8czPT2dNWvWoNVqCYVCHDlyhObmZqB3HeOlS5eq5bh79271h3/27NlqWbW2tnLw4EHC4TCSJKHRaPjwww8HVCDigWhTFwRBiBOiTV0QBGGCEUldEAQhgYikLgiCkEBEUhcEQUggIqkLgiAkEJHUBUEQEohI6oIgCAlEJHVBEIQEIpK6IAhCAhFJXRAEIYGIpC4IgpBARFIXBEFIICKpC4IgJBCR1AVBEBLIsKfeFQRBEGKfqKkLgiAkEJHUBUEQEohI6oIgCAlEJHVBEIQEIpK6IAhCAhFJXRAEIYGIpC4IgpBARFIXBEFIICKpC4IgJJD/HwjWdEbEYDUxAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('circle4.png')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "6bd34621-0458-4a1b-ac69-62892bcba54c", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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zWj37t2EQiFqa2t56KGHeOqppxgZGWHVqlX5c9xisRjJZNJ3J4tffHJ+Z2cnTz75ZP53yHYrtLW18dxzzzE+Pp4/ipZMJn0XAoXr43kee/fuZdmyZRhjuPPOO3nzzTfp6OggFouxevVqXnrpJaLRKK7r5mdc8evnk0gk+O///m8aGxtpbGxk06ZNPPHEE4yNjbF+/XpSqRTpdDq/rZXLAaj5oDCbgcLxV57nYa2lvr6eM2fOMD4+TltbG3fffTfvv/8+Dz/8MI7jcP78eV5++WVSqZSvdhhgUk0rk8kQCoW46667sNbS2NjICy+8QDwe56abbuLGG28kk8lw8OBBDh065LtAK+R5HqdOnaKqqoqqqio6OzupqanhN3/zNzlx4gQ33ngjzc3NZDIZXn31Vfr6/DcxZKFkMkl3dzcbN26kp6eHeDzO2rVrueOOO/jggw947LHHMMbQ39/Pq6++mp/9wm/b23xTM3OGck1NyIZAT08P0WiUxx57jNtvv50PPviAbdu28f777/PEE08QiURoaWkpcamnVth0huyRtIMHD7J582b27dtHPB7PDwd49tlneeGFF7j55pvznex+U7g+uSmHTpw4wUMPPcSjjz6aH+ycSCR44oknOHjwIDfffDPg3yZnYSB1dnayYMECvvOd77Bjxw7279/Ptm3beOedd/j5z39ObW0tixcvLmFpS0s1szmKx+M8//zzVFdXk0wmefTRR3njjTc4fvw4NTU11NfXMzo6WjbfkqdPn+bnP/851dXVtLa2sn79ep566inGx8fZtGkT4+PjZdGUyYXTO++8Q21tLalUiq1bt+bPEgBoa2vj9OnTpSzmtBljGB8f57nnniMWi5FKpXjsscd49dVX6ejoYMGCBfkplqZ7PdmgUc1sDnIBlU6nGRwcJBqNYq2lvb09P4L78OHDDA4OltXGdfbsWdrb21m5ciWffvop8XictrY2brvtNt54442yCLPC2ubQ0FB+Hfbv348xhltvvZWamhoOHTpU4pJOT277SSaT+W0tnU7T1dWVb0Lv378/EPOrzZZqZrN08fRDxhhGRkZIJBLcfffdtLS0cPTo0fxIbb+bqubY0dHBHXfcwaJFi2hububFF1/0ff9SoYvnumtvb+f2228nHA6TyWTYvXt32Ux8efE0PSMjI2QyGe6++26WLFnCwYMH+fjjj6d8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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('circle4hist.jpg')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "5216c457-12f6-451e-92a8-d43c5a15e98f", - "metadata": {}, - "source": [ - "## Line 8 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "c6ebdc89-ba16-41c4-b623-7862a0ae29af", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('line8.png')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "6dffee97-669a-4c03-a506-55c8ebbe0be1", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('line8hist.jpg')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "8cb5df08-342e-4cfd-b65e-42a8528b6969", - "metadata": {}, - "source": [ - "## Line 16 nodes\n", - "![alt text](line16.png)" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "62827e5d-82f4-433e-80ea-7eecf1dedbfb", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('line16.png')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "a29b9882-972f-4f52-b4d2-0eb4d4ee866e", - "metadata": {}, - "source": [ - "eof" - ] - } - ] -} From e9f4de866c65d93f31a65cb0452fabbdcd4f00c3 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Fri, 26 Jul 2024 22:47:34 +0200 Subject: [PATCH 76/83] Delete community/womanium/assignments/hw4-5-2b.ipynb --- community/womanium/assignments/hw4-5-2b.ipynb | 969 ------------------ 1 file changed, 969 deletions(-) delete mode 100644 community/womanium/assignments/hw4-5-2b.ipynb diff --git a/community/womanium/assignments/hw4-5-2b.ipynb b/community/womanium/assignments/hw4-5-2b.ipynb deleted file mode 100644 index 852fa348..00000000 --- a/community/womanium/assignments/hw4-5-2b.ipynb +++ /dev/null @@ -1,969 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "b7f74e3a-7dae-4939-a2ef-0ff82d8eadd0", - "metadata": {}, - "source": [ - "\n", - "# Assignment 6.12 - womanium 2024\n" - ] - }, - { - "cell_type": "markdown", - "id": "adc17ffc-b892-4a94-bebb-4ba74d208a9e", - "metadata": { - "tags": [] - }, - "source": [ - "## Advanced Algorithms Design:\n", - "## Quantum random walk" - ] - }, - { - "cell_type": "markdown", - "id": "2060a234-6a10-453e-b4a2-7b644128c3e9", - "metadata": { - "tags": [] - }, - "source": [ - "Following the example of a quantum walk operator for \n", - "the case of a circle with 4 nodes, a quantum walk \n", - "operator is designed for the case of a line with 16 \n", - "nodes.\n", - "\n", - "Using the file quantum_walk_circle_example.py as a \n", - "template, both the case of a circle and of a line with \n", - "4, 8, and 16 nodes are implemented in this notebook.\n" - ] - }, - { - "cell_type": "markdown", - "id": "fe7f2080-a6eb-4aa5-8865-97aa9acd5c14", - "metadata": {}, - "source": [ - "## Environment and imports" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "fd9eebc7-b78b-4aa7-8614-fbd7dc07f452", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", - "qiskit-ibm-runtime 0.25.0 requires pydantic>=2.5.0, but you have pydantic 1.10.17 which is incompatible.\n", - "qc-grader 0.19.7 requires networkx==3.2.1, but you have networkx 2.8.8 which is incompatible.\u001b[0m\u001b[31m\n", - "\u001b[0mNote: you may need to restart the kernel to use updated packages.\n" - ] - } - ], - "source": [ - "%pip install -U -q classiq" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "202628d6-3fe3-47fa-8a15-04b7fd9716f4", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "from classiq import *" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "99432d7f-12fd-4a46-bbf0-cf3651c04076", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg" - ] - }, - { - "cell_type": "markdown", - "id": "59927721-34b7-49e8-8b88-6a75663aef7a", - "metadata": {}, - "source": [ - "## Implementation" - ] - }, - { - "cell_type": "markdown", - "id": "bbe3dfa3-2265-44af-b708-9a0ad189f5bf", - "metadata": {}, - "source": [ - "\n", - "## Common functions for circles or lines\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "425c8fd2-f8f5-409b-a569-d923819437c4", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Prepares the minus state (aux qubit) for the diffuzer oracle\n", - "@qfunc\n", - "def prepare_minus(x: QBit):\n", - " X(x)\n", - " H(x)\n", - "\n", - "# x: current node\n", - "@qfunc\n", - "def diffuzer_oracle(aux: Output[QNum],x:QNum):\n", - " aux^=(x!=0)\n", - "\n", - "# Zero diffuser using Grover's algorithm technique\n", - "# x: current node \n", - "@qfunc\n", - "def zero_diffuzer(x: QNum):\n", - " aux = QNum('aux')\n", - " allocate(1,aux)\n", - " within_apply(compute=lambda: prepare_minus(aux),\n", - " action=lambda: diffuzer_oracle)\n", - "\n", - "# non-zero probabilities for allowable transitions\n", - "# @qfunc\n", - "# def W_iteration\n", - "\n", - "# Iterates over all possible positions and applies \n", - "# the W_iteration for each position.\n", - "@qfunc \n", - "def W_operator(vertices:QNum, adjacent_vertices: QNum):\n", - " for i in range(num_nodes):\n", - " W_iteration(i,vertices,adjacent_vertices)\n", - "\n", - "# Edge oracle for checking adjacency of 2 vertices\n", - "#\n", - "#@qfunc\n", - "#def edge_oracle\n", - "\n", - "# Swaps the contents of two quantum registers: moves the walker\n", - "@qfunc \n", - "def bitwise_swap(x: QArray[QBit], y:QArray[QBit]):\n", - " repeat(count= x.len,\n", - " iteration= lambda i: SWAP(x[i],y[i]))\n", - "\n", - "# shift operator moving the walker if vertices adjacent\n", - "@qfunc \n", - "def S_operator(vertices:QNum, adjacent_vertices: QNum):\n", - " res = QNum('res')\n", - " edge_oracle(res,vertices,adjacent_vertices)\n", - " control(ctrl= res==1,\n", - " operand= lambda: bitwise_swap(vertices,adjacent_vertices))\n" - ] - }, - { - "cell_type": "markdown", - "id": "9761696b-cefe-4ea0-9c91-ebd33af62e22", - "metadata": {}, - "source": [ - "## Circle-specific functions\n", - "\n", - "Here we have the function W_iteration with the \n", - "probability of 0.5 going in either direction.\n", - "\n", - "What is special about a random walk on a circle is that \n", - "the node (0) and the node (num_nodes-1) are adjacent. \n", - "This fact is taken care of in the function edge_oracle." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "5ab73e30-56fd-4028-bb13-e2f883a4e3ae", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "\n", - "# non-zero probabilities for allowable transitions\n", - "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", - " prob = [0] * num_nodes\n", - " prob[(i+1)% num_nodes]=0.5\n", - " prob[(i-1)% num_nodes]=0.5\n", - " print(f'State={i}, prob vec ={prob}')\n", - " \n", - " control(ctrl=vertices==i,\n", - " operand=lambda: within_apply(\n", - " compute= lambda: \n", - " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", - " action= lambda: \n", - " zero_diffuzer(adjacent_vertices)))\n", - " \n", - "# Edge oracle for checking adjacency of two vertices \n", - "@qfunc\n", - "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", - " diff = vertices - adjacent_vertices\n", - " mod = diff%num_nodes\n", - " res |= (mod == 1) | (mod == num_nodes-1)\n" - ] - }, - { - "cell_type": "markdown", - "id": "423cf377-1bc7-4637-855c-b82ced39cca9", - "metadata": {}, - "source": [ - "## Circle with 4 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "e39e695c-cc7d-4983-ba7b-2d076262a66b", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Circle with 4 Nodes \n", - "\n", - "# Size of the register required for the number of nodes\n", - "size = 2\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "a863aa31-dc65-4ad4-9985-4fca062ab269", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk operator function\n", - "# applies the W and S operators after initializing\n", - "# vertices\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "1427b784-9701-4338-aec2-5cb5566a6d32", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 0.5, 0, 0.5]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5]\n", - "State=3, prob vec =[0.5, 0, 0.5, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "22cec3d3-aef0-46c6-9de2-74ee40d81b96", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "write_qmod(qmod,\"random4\")" - ] - }, - { - "cell_type": "markdown", - "id": "0c9a5e9c-ed50-44d1-b9ed-665f96274a92", - "metadata": { - "tags": [] - }, - "source": [ - "## Circle with 8 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "a5063b48-425c-4d73-8d6e-8b575cc61be3", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Circle with 8 Nodes \n", - "\n", - "# Size of the register required for the number of nodes\n", - "size = 3\n", - "num_nodes = 8\n" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "d137cf61-e92b-46d4-870e-4d1fc021650c", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk operator function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "94168a88-cdb4-411c-a162-52adf0c622bb", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0.5]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=7, prob vec =[0.5, 0, 0, 0, 0, 0, 0.5, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "7458e3ac-0e87-49e2-9139-59ee31fc27f4", - "metadata": {}, - "source": [ - "## Circle with 16 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "7e7ad59c-80ca-4452-af10-883711c9b104", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Circle with 16 Nodes \n", - "\n", - "# Size of the register required for the number of nodes\n", - "size = 4\n", - "num_nodes = 16\n" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "d3444344-5117-4021-9d15-1476582bf61d", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "d30601d3-5b4f-4b23-af9d-f93d0a4f6777", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", - "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", - "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=15, prob vec =[0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "ccfdf941-9d91-402f-a200-ccc266f73e99", - "metadata": {}, - "source": [ - "## Line-specific functions\n", - "The function W_iteration defines the transition \n", - "probabilities for a line. At the beginning and at the \n", - "end of the line the walker can go only in one direction \n", - "(probability = 1). For all other nodes the probability \n", - "going in either direction is 0.5.\n", - "\n", - "Here the function edge_oracle just has to check whether \n", - "the vertices are adjacent (distance = 1)." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "47e777d7-6527-4901-a034-951c624037e4", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "\n", - "# non-zero probabilities for allowable probabilities\n", - "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", - " prob = [0] * (num_nodes)\n", - " if i == 0:\n", - " prob[i + 1] = 1.0\n", - " elif i == (num_nodes) -1:\n", - " prob[i - 1] = 1.0\n", - " else:\n", - " prob[i - 1] = 0.5\n", - " prob[i + 1] = 0.5\n", - " print(f'State={i}, prob vec ={prob}')\n", - " \n", - " control(ctrl=vertices==i,\n", - " operand=lambda: within_apply(\n", - " compute= lambda: \n", - " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", - " action= lambda: \n", - " zero_diffuzer(adjacent_vertices)))\n", - "\n", - "\n", - "# Edge oracle for checking adjacency of two vertices\n", - "@qfunc\n", - "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", - " diff = vertices - adjacent_vertices\n", - " res |= (diff == 1) | (diff == -1)\n" - ] - }, - { - "cell_type": "markdown", - "id": "07488d17-7cac-4e36-8335-e3303cff8efe", - "metadata": {}, - "source": [ - "## Line with 4 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "92d3f78c-ee23-45bf-acba-6d0ff0608847", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Line with 4 Nodes\n", - "\n", - "# Register size to accomodate the number of vertices\n", - "size = 2\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "613c61cc-10ea-4950-a262-3dd572c8701c", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "46fca7f3-3106-416d-a3f8-379f7095f8fa", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 1.0, 0, 0]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5]\n", - "State=3, prob vec =[0, 0, 1.0, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "9dd17d8c-83dd-463d-b155-9b8c949f97d1", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "write_qmod(qmod,\"random4\")" - ] - }, - { - "cell_type": "markdown", - "id": "cfbc239f-2bfb-496a-a752-1a84f657ac3f", - "metadata": { - "tags": [] - }, - "source": [ - "## Line with 8 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "08283335-a49f-4d6e-a702-fb76ab01724b", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Line with 8 Nodes\n", - "\n", - "# Register size to accomodate the number of vertices\n", - "size = 3\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "07a57ceb-c1da-47d7-8d6b-45e18667d747", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "fb711141-eadd-4ac5-bb1d-fbd31bb71f8f", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=7, prob vec =[0, 0, 0, 0, 0, 0, 1.0, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "7b486184-7850-4c58-baac-9e89a942e059", - "metadata": { - "tags": [] - }, - "source": [ - "## Line with 16 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "52ccbff2-f15f-4fe2-86fd-6e1d0128f428", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Line with 16 Nodes\n", - "\n", - "# Register size to accomodate the number of vertices\n", - "size = 4\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "e773bbb1-e532-477e-8891-c47f8f4f1f8d", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "c3833a55-49af-4214-be22-5b52eaa22ba6", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", - "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", - "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=15, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "4b28d548-febf-43b3-9271-6cab28fd2cbb", - "metadata": {}, - "source": [ - "# Results" - ] - }, - { - "cell_type": "markdown", - "id": "b7d6c2a8-063f-4ffe-bf3c-18212aa1d57f", - "metadata": { - "jp-MarkdownHeadingCollapsed": true, - "tags": [] - }, - "source": [ - "## Number of qubits vs. nodes\n", - "\n", - "| random walk | num_nodes | transpiled qubits |\n", - "| :- | :-: | :-: |\n", - "| circle | 4 | 13 |\n", - "| circle | 8 | 22|\n", - "| circle | 16 | 33 |\n", - "| line | 4 | 17 |\n", - "| line | 8 | 25 |\n", - "| line | 16 | 37 |\n", - "\n", - "Here we see that the more nodes we have, the more \n", - "transpiled qubits are going to be used. Lines need more \n", - "qubits than circles." - ] - }, - { - "cell_type": "markdown", - "id": "2d8f26a8-18aa-4dda-a3ed-a3974e0184b9", - "metadata": {}, - "source": [ - "## Circle 4 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "335019e0-e185-41d5-b894-6116ada649d6", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('circle4.png')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "6bd34621-0458-4a1b-ac69-62892bcba54c", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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zWj37t2EQiFqa2t56KGHeOqppxgZGWHVqlX5c9xisRjJZNJ3J4tffHJ+Z2cnTz75ZP53yHYrtLW18dxzzzE+Pp4/ipZMJn0XAoXr43kee/fuZdmyZRhjuPPOO3nzzTfp6OggFouxevVqXnrpJaLRKK7r5mdc8evnk0gk+O///m8aGxtpbGxk06ZNPPHEE4yNjbF+/XpSqRTpdDq/rZXLAaj5oDCbgcLxV57nYa2lvr6eM2fOMD4+TltbG3fffTfvv/8+Dz/8MI7jcP78eV5++WVSqZSvdhhgUk0rk8kQCoW46667sNbS2NjICy+8QDwe56abbuLGG28kk8lw8OBBDh065LtAK+R5HqdOnaKqqoqqqio6OzupqanhN3/zNzlx4gQ33ngjzc3NZDIZXn31Vfr6/DcxZKFkMkl3dzcbN26kp6eHeDzO2rVrueOOO/jggw947LHHMMbQ39/Pq6++mp/9wm/b23xTM3OGck1NyIZAT08P0WiUxx57jNtvv50PPviAbdu28f777/PEE08QiURoaWkpcamnVth0huyRtIMHD7J582b27dtHPB7PDwd49tlneeGFF7j55pvznex+U7g+uSmHTpw4wUMPPcSjjz6aH+ycSCR44oknOHjwIDfffDPg3yZnYSB1dnayYMECvvOd77Bjxw7279/Ptm3beOedd/j5z39ObW0tixcvLmFpS0s1szmKx+M8//zzVFdXk0wmefTRR3njjTc4fvw4NTU11NfXMzo6WjbfkqdPn+bnP/851dXVtLa2sn79ep566inGx8fZtGkT4+PjZdGUyYXTO++8Q21tLalUiq1bt+bPEgBoa2vj9OnTpSzmtBljGB8f57nnniMWi5FKpXjsscd49dVX6ejoYMGCBfkplqZ7PdmgUc1sDnIBlU6nGRwcJBqNYq2lvb09P4L78OHDDA4OltXGdfbsWdrb21m5ciWffvop8XictrY2brvtNt54442yCLPC2ubQ0FB+Hfbv348xhltvvZWamhoOHTpU4pJOT277SSaT+W0tnU7T1dWVb0Lv378/EPOrzZZqZrN08fRDxhhGRkZIJBLcfffdtLS0cPTo0fxIbb+bqubY0dHBHXfcwaJFi2hububFF1/0ff9SoYvnumtvb+f2228nHA6TyWTYvXt32Ux8efE0PSMjI2QyGe6++26WLFnCwYMH+fjjj6d8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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('circle4hist.jpg')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "5216c457-12f6-451e-92a8-d43c5a15e98f", - "metadata": {}, - "source": [ - "## Line 8 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "c6ebdc89-ba16-41c4-b623-7862a0ae29af", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('line8.png')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "6dffee97-669a-4c03-a506-55c8ebbe0be1", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('line8hist.jpg')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "8cb5df08-342e-4cfd-b65e-42a8528b6969", - "metadata": {}, - "source": [ - "## Line 16 nodes\n", - "![alt text](line16.png)" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "62827e5d-82f4-433e-80ea-7eecf1dedbfb", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('line16.png')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "a29b9882-972f-4f52-b4d2-0eb4d4ee866e", - "metadata": {}, - "source": [ - "eof" - ] - } - ], - "metadata": {} -} From 10db58fc07dbf7bd283ce5fa5e4ac040d020fb67 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Fri, 26 Jul 2024 22:47:48 +0200 Subject: [PATCH 77/83] Delete community/womanium/assignments/hw4-5-4.ipynb --- community/womanium/assignments/hw4-5-4.ipynb | 632 ------------------- 1 file changed, 632 deletions(-) delete mode 100644 community/womanium/assignments/hw4-5-4.ipynb diff --git a/community/womanium/assignments/hw4-5-4.ipynb b/community/womanium/assignments/hw4-5-4.ipynb deleted file mode 100644 index 31b88b32..00000000 --- a/community/womanium/assignments/hw4-5-4.ipynb +++ /dev/null @@ -1,632 +0,0 @@ -{ - "metadata": { - "kernelspec": { - "name": "python", - "display_name": "Python (Pyodide)", - "language": "python" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat_minor": 5, - "nbformat": 4, - "cells": [ - { - "id": "b7f74e3a-7dae-4939-a2ef-0ff82d8eadd0", - "cell_type": "markdown", - "source": "\n# Assignment 6.12 - womanium 2024\n", - "metadata": {} - }, - { - "id": "adc17ffc-b892-4a94-bebb-4ba74d208a9e", - "cell_type": "markdown", - "source": "## Advanced Algorithms Design:\n## Quantum random walk", - "metadata": { - "tags": [] - } - }, - { - "id": "2060a234-6a10-453e-b4a2-7b644128c3e9", - "cell_type": "markdown", - "source": "Following the example of a quantum walk operator for \nthe case of a circle with 4 nodes, a quantum walk \noperator is designed for the case of a line with 16 \nnodes.\n\nUsing the file quantum_walk_circle_example.py as a \ntemplate, both the case of a circle and of a line with \n4, 8, and 16 nodes are implemented in this notebook.\n", - "metadata": { - "tags": [] - } - }, - { - "id": "fe7f2080-a6eb-4aa5-8865-97aa9acd5c14", - "cell_type": "markdown", - "source": "## Environment and imports", - "metadata": {} - }, - { - "id": "fd9eebc7-b78b-4aa7-8614-fbd7dc07f452", - "cell_type": "code", - "source": "%pip install -U -q classiq", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", - "qiskit-ibm-runtime 0.25.0 requires pydantic>=2.5.0, but you have pydantic 1.10.17 which is incompatible.\n", - "qc-grader 0.19.7 requires networkx==3.2.1, but you have networkx 2.8.8 which is incompatible.\u001b[0m\u001b[31m\n", - "\u001b[0mNote: you may need to restart the kernel to use updated packages.\n" - ] - } - ], - "execution_count": 10 - }, - { - "id": "202628d6-3fe3-47fa-8a15-04b7fd9716f4", - "cell_type": "code", - "source": "from classiq import *", - "metadata": { - "tags": [] - }, - "outputs": [], - "execution_count": 2 - }, - { - "id": "99432d7f-12fd-4a46-bbf0-cf3651c04076", - "cell_type": "code", - "source": "import matplotlib.pyplot as plt\nimport matplotlib.image as mpimg", - "metadata": { - "tags": [] - }, - "outputs": [], - "execution_count": null - }, - { - "id": "59927721-34b7-49e8-8b88-6a75663aef7a", - "cell_type": "markdown", - "source": "## Implementation", - "metadata": {} - }, - { - "id": "bbe3dfa3-2265-44af-b708-9a0ad189f5bf", - "cell_type": "markdown", - "source": "\n## Common functions for circles or lines\n", - "metadata": {} - }, - { - "id": "425c8fd2-f8f5-409b-a569-d923819437c4", - "cell_type": "code", - "source": "# Prepares the minus state (aux qubit) for the diffuzer oracle\n@qfunc\ndef prepare_minus(x: QBit):\n X(x)\n H(x)\n\n# x: current node\n@qfunc\ndef diffuzer_oracle(aux: Output[QNum],x:QNum):\n aux^=(x!=0)\n\n# Zero diffuser using Grover's algorithm technique\n# x: current node \n@qfunc\ndef zero_diffuzer(x: QNum):\n aux = QNum('aux')\n allocate(1,aux)\n within_apply(compute=lambda: prepare_minus(aux),\n action=lambda: diffuzer_oracle)\n\n# non-zero probabilities for allowable transitions\n# @qfunc\n# def W_iteration\n\n# Iterates over all possible positions and applies \n# the W_iteration for each position.\n@qfunc \ndef W_operator(vertices:QNum, adjacent_vertices: QNum):\n for i in range(num_nodes):\n W_iteration(i,vertices,adjacent_vertices)\n\n# Edge oracle for checking adjacency of 2 vertices\n#\n#@qfunc\n#def edge_oracle\n\n# Swaps the contents of two quantum registers: moves the walker\n@qfunc \ndef bitwise_swap(x: QArray[QBit], y:QArray[QBit]):\n repeat(count= x.len,\n iteration= lambda i: SWAP(x[i],y[i]))\n\n# shift operator moving the walker if vertices adjacent\n@qfunc \ndef S_operator(vertices:QNum, adjacent_vertices: QNum):\n res = QNum('res')\n edge_oracle(res,vertices,adjacent_vertices)\n control(ctrl= res==1,\n operand= lambda: bitwise_swap(vertices,adjacent_vertices))\n", - "metadata": { - "tags": [] - }, - "outputs": [], - "execution_count": 3 - }, - { - "id": "9761696b-cefe-4ea0-9c91-ebd33af62e22", - "cell_type": "markdown", - "source": "## Circle-specific functions\n\nHere we have the function W_iteration with the \nprobability of 0.5 going in either direction.\n\nWhat is special about a random walk on a circle is that \nthe node (0) and the node (num_nodes-1) are adjacent. \nThis fact is taken care of in the function edge_oracle.", - "metadata": {} - }, - { - "id": "5ab73e30-56fd-4028-bb13-e2f883a4e3ae", - "cell_type": "code", - "source": "\n# non-zero probabilities for allowable transitions\ndef W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n prob = [0] * num_nodes\n prob[(i+1)% num_nodes]=0.5\n prob[(i-1)% num_nodes]=0.5\n print(f'State ={i}, prob vec ={prob}')\n \n control(ctrl=vertices==i,\n operand=lambda: within_apply(\n compute= lambda: \n inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n action= lambda: \n zero_diffuzer(adjacent_vertices)))\n \n# Edge oracle for checking adjacency of two vertices \n@qfunc\ndef edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n diff = vertices - adjacent_vertices\n mod = diff%num_nodes\n res |= (mod == 1) | (mod == num_nodes-1)\n", - "metadata": { - "tags": [] - }, - "outputs": [], - "execution_count": 4 - }, - { - "id": "423cf377-1bc7-4637-855c-b82ced39cca9", - "cell_type": "markdown", - "source": "## Circle with 4 nodes", - "metadata": {} - }, - { - "id": "e39e695c-cc7d-4983-ba7b-2d076262a66b", - "cell_type": "code", - "source": "# Circle with 4 Nodes \n\n# Size of the register required for the number of nodes\nsize = 2\nnum_nodes = 2**size\n", - "metadata": { - "tags": [] - }, - "outputs": [], - "execution_count": 5 - }, - { - "id": "a863aa31-dc65-4ad4-9985-4fca062ab269", - "cell_type": "code", - "source": "# Main quantum walk operator function\n# applies the W and S operators after initializing\n# vertices\n@qfunc \ndef main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n\n allocate(size,vertices)\n hadamard_transform(vertices)\n allocate(size,adjacent_vertices)\n\n W_operator(vertices,adjacent_vertices)\n S_operator(vertices,adjacent_vertices)", - "metadata": { - "tags": [] - }, - "outputs": [], - "execution_count": 6 - }, - { - "id": "1427b784-9701-4338-aec2-5cb5566a6d32", - "cell_type": "code", - "source": "qmod = create_model(main)\nqprog = synthesize(qmod)\n#show(qprog)", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 0.5, 0, 0.5]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5]\n", - "State=3, prob vec =[0.5, 0, 0.5, 0]\n" - ] - } - ], - "execution_count": 7 - }, - { - "id": "22cec3d3-aef0-46c6-9de2-74ee40d81b96", - "cell_type": "code", - "source": "write_qmod(qmod,\"random4\")", - "metadata": { - "tags": [] - }, - "outputs": [], - "execution_count": 32 - }, - { - "id": "0c9a5e9c-ed50-44d1-b9ed-665f96274a92", - "cell_type": "markdown", - "source": "## Circle with 8 nodes", - "metadata": { - "tags": [] - } - }, - { - "id": "a5063b48-425c-4d73-8d6e-8b575cc61be3", - "cell_type": "code", - "source": "# Circle with 8 Nodes \n\n# Size of the register required for the number of nodes\nsize = 3\nnum_nodes = 8\n", - "metadata": { - "tags": [] - }, - "outputs": [], - "execution_count": 8 - }, - { - "id": "d137cf61-e92b-46d4-870e-4d1fc021650c", - "cell_type": "code", - "source": "# Main quantum walk operator function\n@qfunc \ndef main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n\n allocate(size,vertices)\n hadamard_transform(vertices)\n allocate(size,adjacent_vertices)\n\n W_operator(vertices,adjacent_vertices)\n S_operator(vertices,adjacent_vertices)", - "metadata": { - "tags": [] - }, - "outputs": [], - "execution_count": 9 - }, - { - "id": "94168a88-cdb4-411c-a162-52adf0c622bb", - "cell_type": "code", - "source": "qmod = create_model(main)\nqprog = synthesize(qmod)\n#show(qprog)", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0.5]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=7, prob vec =[0.5, 0, 0, 0, 0, 0, 0.5, 0]\n" - ] - } - ], - "execution_count": 10 - }, - { - "id": "7458e3ac-0e87-49e2-9139-59ee31fc27f4", - "cell_type": "markdown", - "source": "## Circle with 16 nodes", - "metadata": {} - }, - { - "id": "7e7ad59c-80ca-4452-af10-883711c9b104", - "cell_type": "code", - "source": "# Circle with 16 Nodes \n\n# Size of the register required for the number of nodes\nsize = 4\nnum_nodes = 16\n", - "metadata": { - "tags": [] - }, - "outputs": [], - "execution_count": 11 - }, - { - "id": "d3444344-5117-4021-9d15-1476582bf61d", - "cell_type": "code", - "source": "# Main quantum walk function\n@qfunc \ndef main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n\n allocate(size,vertices)\n hadamard_transform(vertices)\n allocate(size,adjacent_vertices)\n\n W_operator(vertices,adjacent_vertices)\n S_operator(vertices,adjacent_vertices)", - "metadata": { - "tags": [] - }, - "outputs": [], - "execution_count": 12 - }, - { - "id": "d30601d3-5b4f-4b23-af9d-f93d0a4f6777", - "cell_type": "code", - "source": "qmod = create_model(main)\nqprog = synthesize(qmod)\n#show(qprog)", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", - "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", - "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=15, prob vec =[0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0]\n" - ] - } - ], - "execution_count": 13 - }, - { - "id": "ccfdf941-9d91-402f-a200-ccc266f73e99", - "cell_type": "markdown", - "source": "## Line-specific functions\nThe function W_iteration defines the transition \nprobabilities for a line. At the beginning and at the \nend of the line the walker can go only in one direction \n(probability = 1). For all other nodes the probability \ngoing in either direction is 0.5.\n\nHere the function edge_oracle just has to check whether \nthe vertices are adjacent (distance = 1).", - "metadata": {} - }, - { - "id": "47e777d7-6527-4901-a034-951c624037e4", - "cell_type": "code", - "source": "\n# non-zero probabilities for allowable probabilities\ndef W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n prob = [0] * (num_nodes)\n if i == 0:\n prob[i + 1] = 1.0\n elif i == (num_nodes) -1:\n prob[i - 1] = 1.0\n else:\n prob[i - 1] = 0.5\n prob[i + 1] = 0.5\n print(f'State ={i}, prob vec ={prob}')\n \n control(ctrl=vertices==i,\n operand=lambda: within_apply(\n compute= lambda: \n inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n action= lambda: \n zero_diffuzer(adjacent_vertices)))\n\n\n# Edge oracle for checking adjacency of two vertices\n@qfunc\ndef edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n diff = vertices - adjacent_vertices\n res |= (diff == 1) | (diff == -1)\n", - "metadata": { - "tags": [] - }, - "outputs": [], - "execution_count": 14 - }, - { - "id": "07488d17-7cac-4e36-8335-e3303cff8efe", - "cell_type": "markdown", - "source": "## Line with 4 nodes", - "metadata": {} - }, - { - "id": "92d3f78c-ee23-45bf-acba-6d0ff0608847", - "cell_type": "code", - "source": "# Line with 4 Nodes\n\n# Register size to accomodate the number of vertices\nsize = 2\nnum_nodes = 2**size\n", - "metadata": { - "tags": [] - }, - "outputs": [], - "execution_count": 15 - }, - { - "id": "613c61cc-10ea-4950-a262-3dd572c8701c", - "cell_type": "code", - "source": "# Main quantum walk function\n@qfunc \ndef main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n\n allocate(size,vertices)\n hadamard_transform(vertices)\n allocate(size,adjacent_vertices)\n\n W_operator(vertices,adjacent_vertices)\n S_operator(vertices,adjacent_vertices)", - "metadata": { - "tags": [] - }, - "outputs": [], - "execution_count": 16 - }, - { - "id": "46fca7f3-3106-416d-a3f8-379f7095f8fa", - "cell_type": "code", - "source": "qmod = create_model(main)\nqprog = synthesize(qmod)\n#show(qprog)", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 1.0, 0, 0]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5]\n", - "State=3, prob vec =[0, 0, 1.0, 0]\n" - ] - } - ], - "execution_count": 17 - }, - { - "id": "9dd17d8c-83dd-463d-b155-9b8c949f97d1", - "cell_type": "code", - "source": "write_qmod(qmod,\"random4\")", - "metadata": { - "tags": [] - }, - "outputs": [], - "execution_count": 29 - }, - { - "id": "cfbc239f-2bfb-496a-a752-1a84f657ac3f", - "cell_type": "markdown", - "source": "## Line with 8 nodes", - "metadata": { - "tags": [] - } - }, - { - "id": "08283335-a49f-4d6e-a702-fb76ab01724b", - "cell_type": "code", - "source": "# Line with 8 Nodes\n\n# Register size to accomodate the number of vertices\nsize = 3\nnum_nodes = 2**size\n", - "metadata": { - "tags": [] - }, - "outputs": [], - "execution_count": 18 - }, - { - "id": "07a57ceb-c1da-47d7-8d6b-45e18667d747", - "cell_type": "code", - "source": "# Main quantum walk function\n@qfunc \ndef main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n\n allocate(size,vertices)\n hadamard_transform(vertices)\n allocate(size,adjacent_vertices)\n\n W_operator(vertices,adjacent_vertices)\n S_operator(vertices,adjacent_vertices)", - "metadata": { - "tags": [] - }, - "outputs": [], - "execution_count": 19 - }, - { - "id": "fb711141-eadd-4ac5-bb1d-fbd31bb71f8f", - "cell_type": "code", - "source": "qmod = create_model(main)\nqprog = synthesize(qmod)\n#show(qprog)", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=7, prob vec =[0, 0, 0, 0, 0, 0, 1.0, 0]\n" - ] - } - ], - "execution_count": 20 - }, - { - "id": "7b486184-7850-4c58-baac-9e89a942e059", - "cell_type": "markdown", - "source": "## Line with 16 nodes", - "metadata": { - "tags": [] - } - }, - { - "id": "52ccbff2-f15f-4fe2-86fd-6e1d0128f428", - "cell_type": "code", - "source": "# Line with 16 Nodes\n\n# Register size to accomodate the number of vertices\nsize = 4\nnum_nodes = 2**size\n", - "metadata": { - "tags": [] - }, - "outputs": [], - "execution_count": 21 - }, - { - "id": "e773bbb1-e532-477e-8891-c47f8f4f1f8d", - "cell_type": "code", - "source": "# Main quantum walk function\n@qfunc \ndef main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n\n allocate(size,vertices)\n hadamard_transform(vertices)\n allocate(size,adjacent_vertices)\n\n W_operator(vertices,adjacent_vertices)\n S_operator(vertices,adjacent_vertices)", - "metadata": { - "tags": [] - }, - "outputs": [], - "execution_count": 22 - }, - { - "id": "c3833a55-49af-4214-be22-5b52eaa22ba6", - "cell_type": "code", - "source": "qmod = create_model(main)\nqprog = synthesize(qmod)\n#show(qprog)", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", - "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", - "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=15, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0, 0]\n" - ] - } - ], - "execution_count": 23 - }, - { - "id": "4b28d548-febf-43b3-9271-6cab28fd2cbb", - "cell_type": "markdown", - "source": "# Results", - "metadata": {} - }, - { - "id": "b7d6c2a8-063f-4ffe-bf3c-18212aa1d57f", - "cell_type": "markdown", - "source": "## Number of qubits vs. nodes\n\n| random walk | num_nodes | transpiled qubits |\n| :- | :-: | :-: |\n| circle | 4 | 13 |\n| circle | 8 | 22|\n| circle | 16 | 33 |\n| line | 4 | 17 |\n| line | 8 | 25 |\n| line | 16 | 37 |\n\nHere we see that the more nodes we have, the more \ntranspiled qubits are going to be used. Lines need more \nqubits than circles.", - "metadata": { - "jp-MarkdownHeadingCollapsed": true, - "tags": [] - } - }, - { - "id": "2d8f26a8-18aa-4dda-a3ed-a3974e0184b9", - "cell_type": "markdown", - "source": "## Circle 4 nodes", - "metadata": {} - }, - { - "id": "335019e0-e185-41d5-b894-6116ada649d6", - "cell_type": "code", - "source": "import matplotlib.pyplot as plt\nimport matplotlib.image as mpimg\n\nimg = mpimg.imread('circle4.png')\nplt.imshow(img)\nplt.axis('off') # Turn off axis numbers\nplt.show()", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "execution_count": 24 - }, - { - "id": "6bd34621-0458-4a1b-ac69-62892bcba54c", - "cell_type": "code", - "source": "import matplotlib.pyplot as plt\nimport matplotlib.image as mpimg\n\nimg = mpimg.imread('circle4hist.jpg')\nplt.imshow(img)\nplt.axis('off') # Turn off axis numbers\nplt.show()", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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zWj37t2EQiFqa2t56KGHeOqppxgZGWHVqlX5c9xisRjJZNJ3J4tffHJ+Z2cnTz75ZP53yHYrtLW18dxzzzE+Pp4/ipZMJn0XAoXr43kee/fuZdmyZRhjuPPOO3nzzTfp6OggFouxevVqXnrpJaLRKK7r5mdc8evnk0gk+O///m8aGxtpbGxk06ZNPPHEE4yNjbF+/XpSqRTpdDq/rZXLAaj5oDCbgcLxV57nYa2lvr6eM2fOMD4+TltbG3fffTfvv/8+Dz/8MI7jcP78eV5++WVSqZSvdhhgUk0rk8kQCoW46667sNbS2NjICy+8QDwe56abbuLGG28kk8lw8OBBDh065LtAK+R5HqdOnaKqqoqqqio6OzupqanhN3/zNzlx4gQ33ngjzc3NZDIZXn31Vfr6/DcxZKFkMkl3dzcbN26kp6eHeDzO2rVrueOOO/jggw947LHHMMbQ39/Pq6++mp/9wm/b23xTM3OGck1NyIZAT08P0WiUxx57jNtvv50PPviAbdu28f777/PEE08QiURoaWkpcamnVth0huyRtIMHD7J582b27dtHPB7PDwd49tlneeGFF7j55pvznex+U7g+uSmHTpw4wUMPPcSjjz6aH+ycSCR44oknOHjwIDfffDPg3yZnYSB1dnayYMECvvOd77Bjxw7279/Ptm3beOedd/j5z39ObW0tixcvLmFpS0s1szmKx+M8//zzVFdXk0wmefTRR3njjTc4fvw4NTU11NfXMzo6WjbfkqdPn+bnP/851dXVtLa2sn79ep566inGx8fZtGkT4+PjZdGUyYXTO++8Q21tLalUiq1bt+bPEgBoa2vj9OnTpSzmtBljGB8f57nnniMWi5FKpXjsscd49dVX6ejoYMGCBfkplqZ7PdmgUc1sDnIBlU6nGRwcJBqNYq2lvb09P4L78OHDDA4OltXGdfbsWdrb21m5ciWffvop8XictrY2brvtNt54442yCLPC2ubQ0FB+Hfbv348xhltvvZWamhoOHTpU4pJOT277SSaT+W0tnU7T1dWVb0Lv378/EPOrzZZqZrN08fRDxhhGRkZIJBLcfffdtLS0cPTo0fxIbb+bqubY0dHBHXfcwaJFi2hububFF1/0ff9SoYvnumtvb+f2228nHA6TyWTYvXt32Ux8efE0PSMjI2QyGe6++26WLFnCwYMH+fjjj6d8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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "execution_count": 25 - }, - { - "id": "5216c457-12f6-451e-92a8-d43c5a15e98f", - "cell_type": "markdown", - "source": "## Line 8 nodes", - "metadata": {} - }, - { - "id": "c6ebdc89-ba16-41c4-b623-7862a0ae29af", - "cell_type": "code", - "source": "import matplotlib.pyplot as plt\nimport matplotlib.image as mpimg\n\nimg = mpimg.imread('line8.png')\nplt.imshow(img)\nplt.axis('off') # Turn off axis numbers\nplt.show()", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "execution_count": 26 - }, - { - "id": "6dffee97-669a-4c03-a506-55c8ebbe0be1", - "cell_type": "code", - "source": "import matplotlib.pyplot as plt\nimport matplotlib.image as mpimg\n\nimg = mpimg.imread('line8hist.jpg')\nplt.imshow(img)\nplt.axis('off') # Turn off axis numbers\nplt.show()", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "execution_count": 27 - }, - { - "id": "8cb5df08-342e-4cfd-b65e-42a8528b6969", - "cell_type": "markdown", - "source": "## Line 16 nodes\n![alt text](line16.png)", - "metadata": {} - }, - { - "id": "62827e5d-82f4-433e-80ea-7eecf1dedbfb", - "cell_type": "code", - "source": "import matplotlib.pyplot as plt\nimport matplotlib.image as mpimg\n\nimg = mpimg.imread('line16.png')\nplt.imshow(img)\nplt.axis('off') # Turn off axis numbers\nplt.show()", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "execution_count": 28 - }, - { - "id": "a29b9882-972f-4f52-b4d2-0eb4d4ee866e", - "cell_type": "markdown", - "source": "eof", - "metadata": {} - } - ] -} \ No newline at end of file From bbca3543650e32aaea9b39014f3eeb4bf08464e2 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Fri, 26 Jul 2024 22:48:03 +0200 Subject: [PATCH 78/83] Delete community/womanium/assignments/hw4-5-5.ipynb --- community/womanium/assignments/hw4-5-5.ipynb | 988 ------------------- 1 file changed, 988 deletions(-) delete mode 100644 community/womanium/assignments/hw4-5-5.ipynb diff --git a/community/womanium/assignments/hw4-5-5.ipynb b/community/womanium/assignments/hw4-5-5.ipynb deleted file mode 100644 index 9313702f..00000000 --- a/community/womanium/assignments/hw4-5-5.ipynb +++ /dev/null @@ -1,988 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "b7f74e3a-7dae-4939-a2ef-0ff82d8eadd0", - "metadata": {}, - "source": [ - "\n", - "# Assignment 6.12 womanium 2024\n" - ] - }, - { - "cell_type": "markdown", - "id": "adc17ffc-b892-4a94-bebb-4ba74d208a9e", - "metadata": { - "tags": [] - }, - "source": [ - "## Advanced Algorithms Design: Quantum random walk" - ] - }, - { - "cell_type": "markdown", - "id": "2060a234-6a10-453e-b4a2-7b644128c3e9", - "metadata": { - "tags": [] - }, - "source": [ - "Following the example of a quantum walk operator for \n", - "the case of a circle with 4 nodes, a quantum walk \n", - "operator is designed for the case of a line with 16 \n", - "nodes.\n", - "\n", - "Using the file quantum_walk_circle_example.py as a \n", - "template, both the case of a circle and of a line with \n", - "4, 8, and 16 nodes are implemented in this notebook.\n" - ] - }, - { - "cell_type": "markdown", - "id": "fe7f2080-a6eb-4aa5-8865-97aa9acd5c14", - "metadata": {}, - "source": [ - "## Environment and imports" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "fd9eebc7-b78b-4aa7-8614-fbd7dc07f452", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", - "qiskit-ibm-runtime 0.25.0 requires pydantic>=2.5.0, but you have pydantic 1.10.17 which is incompatible.\n", - "qc-grader 0.19.7 requires networkx==3.2.1, but you have networkx 2.8.8 which is incompatible.\u001b[0m\u001b[31m\n", - "\u001b[0mNote: you may need to restart the kernel to use updated packages.\n" - ] - } - ], - "source": [ - "%pip install -U -q classiq" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "202628d6-3fe3-47fa-8a15-04b7fd9716f4", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "from classiq import *" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "99432d7f-12fd-4a46-bbf0-cf3651c04076", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg" - ] - }, - { - "cell_type": "markdown", - "id": "59927721-34b7-49e8-8b88-6a75663aef7a", - "metadata": {}, - "source": [ - "## Implementation" - ] - }, - { - "cell_type": "markdown", - "id": "bbe3dfa3-2265-44af-b708-9a0ad189f5bf", - "metadata": {}, - "source": [ - "\n", - "## Common functions for circles or lines\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "425c8fd2-f8f5-409b-a569-d923819437c4", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Prepares the minus state (aux qubit) for the diffuzer oracle\n", - "@qfunc\n", - "def prepare_minus(x: QBit):\n", - " X(x)\n", - " H(x)\n", - "\n", - "# x: current node\n", - "@qfunc\n", - "def diffuzer_oracle(aux: Output[QNum],x:QNum):\n", - " aux^=(x!=0)\n", - "\n", - "# Zero diffuser using Grover's algorithm technique\n", - "# x: current node \n", - "@qfunc\n", - "def zero_diffuzer(x: QNum):\n", - " aux = QNum('aux')\n", - " allocate(1,aux)\n", - " within_apply(compute=lambda: prepare_minus(aux),\n", - " action=lambda: diffuzer_oracle)\n", - "\n", - "# non-zero probabilities for allowable transitions\n", - "# @qfunc\n", - "# def W_iteration\n", - "\n", - "# Iterates over all possible positions and applies \n", - "# the W_iteration for each position.\n", - "@qfunc \n", - "def W_operator(vertices:QNum, adjacent_vertices: QNum):\n", - " for i in range(num_nodes):\n", - " W_iteration(i,vertices,adjacent_vertices)\n", - "\n", - "# Edge oracle for checking adjacency of 2 vertices\n", - "#\n", - "#@qfunc\n", - "#def edge_oracle\n", - "\n", - "# Swaps the contents of two quantum registers: moves the walker\n", - "@qfunc \n", - "def bitwise_swap(x: QArray[QBit], y:QArray[QBit]):\n", - " repeat(count= x.len,\n", - " iteration= lambda i: SWAP(x[i],y[i]))\n", - "\n", - "# shift operator moving the walker if vertices adjacent\n", - "@qfunc \n", - "def S_operator(vertices:QNum, adjacent_vertices: QNum):\n", - " res = QNum('res')\n", - " edge_oracle(res,vertices,adjacent_vertices)\n", - " control(ctrl= res==1,\n", - " operand= lambda: bitwise_swap(vertices,adjacent_vertices))\n" - ] - }, - { - "cell_type": "markdown", - "id": "9761696b-cefe-4ea0-9c91-ebd33af62e22", - "metadata": {}, - "source": [ - "## Circle-specific functions\n", - "\n", - "Here we have the function W_iteration with the \n", - "probability of 0.5 going in either direction.\n", - "\n", - "What is special about a random walk on a circle is that \n", - "the node (0) and the node (num_nodes-1) are adjacent. \n", - "This fact is taken care of in the function edge_oracle." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "5ab73e30-56fd-4028-bb13-e2f883a4e3ae", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "\n", - "# non-zero probabilities for allowable transitions\n", - "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", - " prob = [0] * num_nodes\n", - " prob[(i+1)% num_nodes]=0.5\n", - " prob[(i-1)% num_nodes]=0.5\n", - " print(f'State ={i}, prob vec ={prob}')\n", - " \n", - " control(ctrl=vertices==i,\n", - " operand=lambda: within_apply(\n", - " compute= lambda: \n", - " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", - " action= lambda: \n", - " zero_diffuzer(adjacent_vertices)))\n", - " \n", - "# Edge oracle for checking adjacency of two vertices \n", - "@qfunc\n", - "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", - " diff = vertices - adjacent_vertices\n", - " mod = diff%num_nodes\n", - " res |= (mod == 1) | (mod == num_nodes-1)\n" - ] - }, - { - "cell_type": "markdown", - "id": "423cf377-1bc7-4637-855c-b82ced39cca9", - "metadata": {}, - "source": [ - "## Circle with 4 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "e39e695c-cc7d-4983-ba7b-2d076262a66b", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Circle with 4 Nodes \n", - "\n", - "# Size of the register required for the number of nodes\n", - "size = 2\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "a863aa31-dc65-4ad4-9985-4fca062ab269", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk operator function\n", - "# applies the W and S operators after initializing\n", - "# vertices\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "1427b784-9701-4338-aec2-5cb5566a6d32", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 0.5, 0, 0.5]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5]\n", - "State=3, prob vec =[0.5, 0, 0.5, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "22cec3d3-aef0-46c6-9de2-74ee40d81b96", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "write_qmod(qmod,\"random4\")" - ] - }, - { - "cell_type": "markdown", - "id": "0c9a5e9c-ed50-44d1-b9ed-665f96274a92", - "metadata": { - "tags": [] - }, - "source": [ - "## Circle with 8 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "a5063b48-425c-4d73-8d6e-8b575cc61be3", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Circle with 8 Nodes \n", - "\n", - "# Size of the register required for the number of nodes\n", - "size = 3\n", - "num_nodes = 8\n" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "d137cf61-e92b-46d4-870e-4d1fc021650c", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk operator function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "94168a88-cdb4-411c-a162-52adf0c622bb", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0.5]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=7, prob vec =[0.5, 0, 0, 0, 0, 0, 0.5, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "7458e3ac-0e87-49e2-9139-59ee31fc27f4", - "metadata": {}, - "source": [ - "## Circle with 16 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "7e7ad59c-80ca-4452-af10-883711c9b104", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Circle with 16 Nodes \n", - "\n", - "# Size of the register required for the number of nodes\n", - "size = 4\n", - "num_nodes = 16\n" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "d3444344-5117-4021-9d15-1476582bf61d", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "d30601d3-5b4f-4b23-af9d-f93d0a4f6777", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", - "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", - "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=15, prob vec =[0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "ccfdf941-9d91-402f-a200-ccc266f73e99", - "metadata": {}, - "source": [ - "## Line-specific functions\n", - "The function W_iteration defines the transition \n", - "probabilities for a line. At the beginning and at the \n", - "end of the line the walker can go only in one direction \n", - "(probability = 1). For all other nodes the probability \n", - "going in either direction is 0.5.\n", - "\n", - "Here the function edge_oracle just has to check whether \n", - "the vertices are adjacent (distance = 1)." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "47e777d7-6527-4901-a034-951c624037e4", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "\n", - "# non-zero probabilities for allowable probabilities\n", - "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", - " prob = [0] * (num_nodes)\n", - " if i == 0:\n", - " prob[i + 1] = 1.0\n", - " elif i == (num_nodes) -1:\n", - " prob[i - 1] = 1.0\n", - " else:\n", - " prob[i - 1] = 0.5\n", - " prob[i + 1] = 0.5\n", - " print(f'State ={i}, prob vec ={prob}')\n", - " \n", - " control(ctrl=vertices==i,\n", - " operand=lambda: within_apply(\n", - " compute= lambda: \n", - " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", - " action= lambda: \n", - " zero_diffuzer(adjacent_vertices)))\n", - "\n", - "\n", - "# Edge oracle for checking adjacency of two vertices\n", - "@qfunc\n", - "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", - " diff = vertices - adjacent_vertices\n", - " res |= (diff == 1) | (diff == -1)\n" - ] - }, - { - "cell_type": "markdown", - "id": "07488d17-7cac-4e36-8335-e3303cff8efe", - "metadata": {}, - "source": [ - "## Line with 4 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "92d3f78c-ee23-45bf-acba-6d0ff0608847", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Line with 4 Nodes\n", - "\n", - "# Register size to accomodate the number of vertices\n", - "size = 2\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "613c61cc-10ea-4950-a262-3dd572c8701c", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "46fca7f3-3106-416d-a3f8-379f7095f8fa", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 1.0, 0, 0]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5]\n", - "State=3, prob vec =[0, 0, 1.0, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "9dd17d8c-83dd-463d-b155-9b8c949f97d1", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "write_qmod(qmod,\"random4\")" - ] - }, - { - "cell_type": "markdown", - "id": "cfbc239f-2bfb-496a-a752-1a84f657ac3f", - "metadata": { - "tags": [] - }, - "source": [ - "## Line with 8 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "08283335-a49f-4d6e-a702-fb76ab01724b", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Line with 8 Nodes\n", - "\n", - "# Register size to accomodate the number of vertices\n", - "size = 3\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "07a57ceb-c1da-47d7-8d6b-45e18667d747", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "fb711141-eadd-4ac5-bb1d-fbd31bb71f8f", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=7, prob vec =[0, 0, 0, 0, 0, 0, 1.0, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "7b486184-7850-4c58-baac-9e89a942e059", - "metadata": { - "tags": [] - }, - "source": [ - "## Line with 16 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "52ccbff2-f15f-4fe2-86fd-6e1d0128f428", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Line with 16 Nodes\n", - "\n", - "# Register size to accomodate the number of vertices\n", - "size = 4\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "e773bbb1-e532-477e-8891-c47f8f4f1f8d", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "c3833a55-49af-4214-be22-5b52eaa22ba6", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", - "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", - "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=15, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "4b28d548-febf-43b3-9271-6cab28fd2cbb", - "metadata": {}, - "source": [ - "# Results" - ] - }, - { - "cell_type": "markdown", - "id": "b7d6c2a8-063f-4ffe-bf3c-18212aa1d57f", - "metadata": { - "jp-MarkdownHeadingCollapsed": true, - "tags": [] - }, - "source": [ - "## Number of qubits vs. nodes\n", - "\n", - "| random walk | num_nodes | transpiled qubits |\n", - "| :- | :-: | :-: |\n", - "| circle | 4 | 13 |\n", - "| circle | 8 | 22|\n", - "| circle | 16 | 33 |\n", - "| line | 4 | 17 |\n", - "| line | 8 | 25 |\n", - "| line | 16 | 37 |\n", - "\n", - "Here we see that the more nodes we have, the more \n", - "transpiled qubits are going to be used. Lines need more \n", - "qubits than circles." - ] - }, - { - "cell_type": "markdown", - "id": "2d8f26a8-18aa-4dda-a3ed-a3974e0184b9", - "metadata": {}, - "source": [ - "## Circle 4 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "335019e0-e185-41d5-b894-6116ada649d6", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('circle4.png')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "6bd34621-0458-4a1b-ac69-62892bcba54c", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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zWj37t2EQiFqa2t56KGHeOqppxgZGWHVqlX5c9xisRjJZNJ3J4tffHJ+Z2cnTz75ZP53yHYrtLW18dxzzzE+Pp4/ipZMJn0XAoXr43kee/fuZdmyZRhjuPPOO3nzzTfp6OggFouxevVqXnrpJaLRKK7r5mdc8evnk0gk+O///m8aGxtpbGxk06ZNPPHEE4yNjbF+/XpSqRTpdDq/rZXLAaj5oDCbgcLxV57nYa2lvr6eM2fOMD4+TltbG3fffTfvv/8+Dz/8MI7jcP78eV5++WVSqZSvdhhgUk0rk8kQCoW46667sNbS2NjICy+8QDwe56abbuLGG28kk8lw8OBBDh065LtAK+R5HqdOnaKqqoqqqio6OzupqanhN3/zNzlx4gQ33ngjzc3NZDIZXn31Vfr6/DcxZKFkMkl3dzcbN26kp6eHeDzO2rVrueOOO/jggw947LHHMMbQ39/Pq6++mp/9wm/b23xTM3OGck1NyIZAT08P0WiUxx57jNtvv50PPviAbdu28f777/PEE08QiURoaWkpcamnVth0huyRtIMHD7J582b27dtHPB7PDwd49tlneeGFF7j55pvznex+U7g+uSmHTpw4wUMPPcSjjz6aH+ycSCR44oknOHjwIDfffDPg3yZnYSB1dnayYMECvvOd77Bjxw7279/Ptm3beOedd/j5z39ObW0tixcvLmFpS0s1szmKx+M8//zzVFdXk0wmefTRR3njjTc4fvw4NTU11NfXMzo6WjbfkqdPn+bnP/851dXVtLa2sn79ep566inGx8fZtGkT4+PjZdGUyYXTO++8Q21tLalUiq1bt+bPEgBoa2vj9OnTpSzmtBljGB8f57nnniMWi5FKpXjsscd49dVX6ejoYMGCBfkplqZ7PdmgUc1sDnIBlU6nGRwcJBqNYq2lvb09P4L78OHDDA4OltXGdfbsWdrb21m5ciWffvop8XictrY2brvtNt54442yCLPC2ubQ0FB+Hfbv348xhltvvZWamhoOHTpU4pJOT277SSaT+W0tnU7T1dWVb0Lv378/EPOrzZZqZrN08fRDxhhGRkZIJBLcfffdtLS0cPTo0fxIbb+bqubY0dHBHXfcwaJFi2hububFF1/0ff9SoYvnumtvb+f2228nHA6TyWTYvXt32Ux8efE0PSMjI2QyGe6++26WLFnCwYMH+fjjj6d8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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('circle4hist.jpg')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "5216c457-12f6-451e-92a8-d43c5a15e98f", - "metadata": {}, - "source": [ - "## Line 8 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "c6ebdc89-ba16-41c4-b623-7862a0ae29af", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAQ4AAAGFCAYAAAAMxh2+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAABg90lEQVR4nO39eXBcd3bnC37uvXlzT2Qm9o0ACBDcQRJcQHFRlVu1qKSS36spO+p5edU99kS3uyPm1YueiH7dfjHTHTHtiJno6dcdfnb4xRu7Y17Zrq7ustsuuyWrSqJKlChRFCnu4AJi3/cEMpF73mX+gDJFiBuYSty8Kfw+EQwJyIs85y75zd/v/M7vHMk0TROBQCB4DuRyOyAQCCoPIRwCgeC5EcIhEAieGyEcAoHguRHCIRAInhshHAKB4LkRwiEQCJ4bIRwCgeC5cWz2wObm5q30QyAQ2ISZmZlnHiNGHAKB4LkRwiEQCJ4bIRwCgeC5EcIhEAieGyEcAoHguRHCIRAInhshHAKB4LkRwiEQCJ4bIRwCgeC5EcIhEAiem02nnNuBfHlURVFwuVyYpkkmk8EwDCRJKrN3AsH2oWKEwzRNJEli9+7d/M7v/A7Hjx8nl8vxzjvv8Cd/8icsLCwI8RAILKJihAOgra2NP/qjP2Lfvn0Fkdi7dy/d3d384Ac/YG1tTYiHQGABFSUc3/ve99i7d+8GcZBlmZdeeomXX36Zv/3bvyWXy1FVVUUoFELXdWZnZzEMg+rqavx+P9lslvn5eUzTpK6uDo/HQzweJxKJIEkSjY2NqKrK6uoq0WgUh8NBXV0dsiyzurpKIpHA6/VSW1sLwPz8PNlsFr/fT3V1NbquMz8/j6ZphEIhqqqqyGQyLCwsbLCZTCZZWlpCkiQaGhpwOp3EYjFWV1dRVZWGhgYkSSISiZBIJHC5XNTX1wOwuLhIOp3G5/NtsKnrOsFgkGAwSC6XY3Z2FoCamhp8Ph+pVIrFxUVkWaahoQFVVVlbW2NlZQVFUWhqakKWZVZWVlhbW8PpdBZsLiwskM1m8Xg81NbWous6q6ur6LqOy+UiGAyiaRrz8/MYhlE4z3Q6zcLCAgCNjY04nU4SiQTLy8vIskxjYyOKohTO8+FzX1hYIJPJ4Ha7qaurwzRN5ufnyeVyhfPUNI25uTkMwyic58PXu76+HrfbXThPSZJoamrC4XCwsrJCLBbbcI9jsRjxeByv10tNTQ0Ac3Nz5HI5AoEA4XAYXdeZm5tD13XC4TCBQGDDeeZt5s/z4XscjUaJRqMbznN5eZlkMonb7aa+vh7TNAvnnn+ukskky8vL2KWbSUUJx8GDB1lYWODNN99E13UAPB4Pv/Irv0JPTw9vvPEGuVwOt9tNKBQik8kURMbr9RIKhUgkEoVpj9/vJxAIYBgGkUgERVEIhUKoqko6ncbpdPIP/+E/5LXXXsPpdHLx4kX+4A/+gIWFBUKhUOEGA7hcLkKhELlcjrm5uYJveZv5qVRVVRU+nw9JkgrCEQqFcDqd5HI5VldXkWWZYDCILMtEo1EAHA4H4XAY0zRZWloCwOl0Eg6HyeVyBT8CgQChUIh0Os3c3BymaVJVVUUgEEBRlILNqqoqXC4XmUwGAEmSCAaDKIrC2toaQOF6AEQiEbLZLF6vl56eHr73ve/R3t6Opmncu3ePN954g7GxsYIfPp+Pqqqqgv95m263m1wuB1A4T1VVSSQSJBKJwjlJksTKykpBOMLhMIZhsLS0RC6XK1zbdDpdeD58Ph+hUIh4PF64x4FAAJ/Ph6ZprKys4HA4CIVCOBwOkskkkiRx/Phx/tk/+2fs3LmTxcVF/uZv/obXX3+9IBLz8/MAhecqm80W7nH+uYrH4ywuLgIQDAbxeDyYplkQyHA4jKqqZDIZotFo4dpKksTq6mrhHodCIQzDKLxX/rnyer1Eo9HCtSs30mYbMpW7Hodpmvzbf/tv+d73vkc0Gi0oryzLhEIhfvd3f5c/+7M/K8lUxTRN/H4/v//7v8/LL7/M2toaCwsLdHd3c/fuXX77t3+biYmJbTctyn+D//Ef/zEnTpxgZmYGTdNoa2vjgw8+4B//439cGLlVAqZp0tPTwx//8R/T1tbG/fv3aW1txePx8KMf/Yh/+S//Jdls1lbn4/V6SSaTW2pjM/U4bD3iUBQFh8NBZ2cn7e3tvPXWW/zyL/9yYZoA6zd/bGyM999/v6S2z549y9e//nUURWFxcZFbt26xe/du9u3bxz/4B/+AP/vzH2Kj52kDy0srxOOJLRnWvvbaaxw/fhxJkujv78fhcNDe3s6pU6f4lV/5Lm+fe6uk18XQDRYWljeMLEqFoij89m//Nm1tbUiSxCeffEIgECAQCPCrv/qrnDv3NsMjgyWyJpGIJ1heXsEwjKLf5fTp07z77ruFEXe5sLVwvPLKKzQ0NGAYBlNTU4yOjvJ7v/d7/OAHPyj8fmhoiH/9r/91yUcAe/bsIZfL8dd//ddMTEwwOztLPB7n29/+Nt96rY9jr4zj8dozDSa6JPNnf3Sfv/ubSxhGacXjwIEDRKNR3njjDe7evQusf0N95zvf4b/7/ov8t/8wi+os3XUxDJgbl/j937vIzWsPSva+sC4ce/bsYXh4mAsXLnDt2jWWlpbYsWMHr732bf6v//wlXDWtyHJpnqt0Ei6dS/FH/8vfEYvFi3oPVVVL4ssXxbbCIUkSbrcbgGw2S21tLbdv3+ZHP/oRH3zwAb/0S7/EwMAA9+/fZ2VlpTCnLRWRSASXy8XXvvY1hoaGuHv3Lq+++iqhUIiV9DVcoUmcHnsKR10V/JP/eQ/9NyYYG50u6XsvLS0RCAR4+eWXcblcKIrCiy++iMfjwVAWcIYmUdXSXpeOkMQ//72/x+/8dzOsrRX3gXschmGwsrLCvn37+Pa3v00qleLMmTO0traiOBQk1wzO4GTJhMMZhG/+hp+RwWP85M/fK+o9bt68+YVGLKXCnk8+61OQn/3sZ4yOjvLWW29x7ty5QsR+bGyMH//4x1y8eJFIJAJQ8nnohQsXmJ6epqamhpaWFjo7O6mrq0M3skRSF1GdNp2nAEjgDUXZvbe95G/985//nGg0Sm1tLe3t7bS3t1NbW0sqs8qacRWHYwuui2QSbl6htj5U0rfVdZ2f/vSnwPpKSGdnJ83NzVRXVxOJjmK4Rks/HVXiHDtV/H2ZmZmxxcpKUcIRCATweDx0d3dTX1/Pvn37CqODUhKPx/nFL37B4uIii4uLG0YV+RWTrQpcjY+P87u/+7s8ePCAxsYGzp49w1pigTuTP8RVM4RsW8n9FEnH63OV/G1v3rzJv/pX/4qJiQl6j/Zy+HAPK7Ep7s38B3y18yW3l0dWNJzO0g7TTdPkv/7X/8of/MEfsLS0xNe//jVC4Srmlu8xsvIfCFSXPq4C4FSdRf9tfX29LYK1RU1VDh06hM/no6mpCb/fz+joKF6vl6tXr5bav8fidDrZsWMHw8PDW/L+kiRhmibnz5+nv7+ff/7/+AfsOpLEUKfx1sZwurZOsOyMJEnous5f/dVfcfnyZf7vv/d9GnYuYzin8DckcaiVdV0kSSKdTvP7v//7vPXWz/kXv/dtfDVLSO5pqhpzyErpR7JflGPHjvHWW2+VPTha1PdmPvfgzp07JJNJ7t+/z5EjR0rs2pPJC8dWkn9gIpEIurxIVcsDQg1r21Y08uTPfXFxAdmzQFXLIKH6VMWJRp68GE7PTOMMTRBsGaOqxp6iAdgivgFfIDiaTqdpaGjA7XbjcDi2ZLnsSei6vuVr2Q8jSSDJAPZ7kMrJ+nWp/GuSFwhJsqdYPMwHH3xQ9tEGFDniyGaz3L59G13XuXTpErt37+by5cul9u2JpFIpy6ZFAoGdSCQS5XYBKHLEcePGDTRNY3R0FIDJyUlWVlZK6tizsMuQTSCwko6ODsbHx8u+slL0iOPhD+7S0pKlwyev18uhQ4cssycQ2IV9+/Yh22BJr/weFEF+05BAsN2wMpb4NCpSODRNK+zCFAi2ExcvXqzc4Gi5SafThX0SAsF2Il8GodxUpHBIkoSiKOV2QyCwnP3794sYR7F4vV6OHTtWbjcEAstpb2+3Ra5JRQqHJEl4vd5yuyEQWE4kEin7UizYeFv908hms4yPj5fbDYHAci5fvmwL4bD1iEOSpEJB28OHDxd+n81mC8lnAoHAemwtHN/4xjf4/ve/j9/vp7u7u/B7WZZxuUq/ZVwgsDunTp0SwdGnIUlSobJ1PB4nm80WXvN6vRw/fryM3gkE5SEYDIrg6NMwTZNz584RjUZJpVJcuHBhw+t2qb0oEFjJ1NSULWIcRQVHPR4PmqZRW1tLIpGgurqamZmZDaOCUrC8vMzrr7/+yIa2ZDJJf39/SW1tlmxGxzTB5d6YR5LN6pjGo79/ElrOQMsZuL2OwoPwrG+SXFYnkzbwBRy2+Nb5MmOaJqZZ3Fb7zd7PYrh9+3bJ37MYihKO3t5eXC4Xu3btwuFwMDU1RSAQ2JKTetwu2HxjnnIwOhgjGsnSc6wGTTMwDBOXW+HezRVcboWGZi9en4NUSsM0wTRMgtUuopEM/iqVVEJDdcpMjSVIrOU4dqaepfk0C7NJmtv8qKpEKqkTCKrE13J4fSpazsA0TPqvRwjXuGhs9eJ2K2Qz69cmlzNwOCQUh0wgqApR+YKYpkn/1QgLs0m694do6wpgmiaryxlcHgUtZ5LLGgSrnawur9/X+FoOl0shlzNYnEtRFXLidiu4POv3SXXK+PxffJSsqqotmjIVJRyyLFNbW8v169fp6enh/v37nDlzZoNw+P1+0uk0LpeLbDaLqqqFHHtFUchms7jdbtLpdOG/TqcTTdOQZRlJktA0DafTWejmlX8/XdcJhUKsrq5iGEahQ5bb7SaVSuF2ux9rM5fL4XK5Nth0uVzkcrmCTV3XC++X993h+OwymQbMzyRZjWQIVKlMTySornWTzeiEalzMTCTIpHUMY/3hqm3w4K9SWZpP4XDIxFazBKud6JqJv2r9QYrHckyMxBm8E6X7QIjh+1H8ARXDMFGdMsm4hi+wLjpen4PbnyyTSmhkMjrhGjeGYRKNZHB7HHztv2ktFAz2eLw4HI4nnuuTrm/+nE3TxDAMHA5H4X7lr69pGiiKhav5koTPt34+m31OnnYeDx+jKAqqw7Eh6GgYJm6PA6drfQS5MJvi7o0IpgGppEYgqJLLGqwsZ6gKOtE0g/omL0P3ogTDTkI1TjJpA0NfF5yvfKu5IByqqhYqxOefyVQqVWiZ+bTz+3t/7+/x3nvvFc7l4fN7+HOQf8YzmcxjPwefv155m5v90in6zud7o7pcLgzD2DAykGWZzs5OxsfHaW1tZW5ujnA4TDqdxjRNvF4vS0tLtLS0MDk5SVtbG5OTkzQ0NBCLxVBVFYfDQSwWo76+npmZGXbs2MHExAQtLS0kEgmOHTvG1atXyWQyhEIh5ufnaW1tZXx8nB07djA3N0dNTU2h8InX6yUSidDU1MTExARtbW1MT0/T2NhIJBLB7XYjyzKJRILa2lqmp6dpaWn5dDRV9fDzy87uKobuR0klNOLRHFVBJx6vg2RcYy2aJZXQaevyAxL1TR5GB2OkEhqSBNV1blSnjGGYSNL6A+qvUnF7FDxeB7msTi6jk5QkOvdWsTibIlzrYmEmRX2zZ300k9CI6ybBkItQtRNfQMXplEnENczCbZBoamrE5/MVrm9jYyOrq6u4XC5kWSYej1NXV8fMzAxtbW2MjY3R2trK4uIiVVVV5HK5Qi/excVFWlpaGB8fp6WlhaWlJXwWJuHJskxr6w5Gh2eor68nGo3idDpRVZVYLEZdXR3T09O0t7czMTFBU1NToZWDrutkMhmCwSDz8/OFZ6m1tZXZ2VmqqqpwOh0bigg7HBJur4ORgSj1zR5yWQOHQy58KciyRDKuoaoyVWEnqiozP5MindJo7fAhIaGqMmlNw+t3EKr5bBWwqqqKmpoa/H5/4XMwPj5eeCYbGhoK/WXz51dfX8/k5CQ7duzA5/PR2NjI4uIifr8fwzDIZDKEw2FmZ2dpbW0tHDs7O1voPQvrn4Pl5WWampqYmpqira2NqakpGhoaWFlZ2fSKTVEtIE+dOsXy8jKHDx9mbm6OQCDA+Pg4d+7c2ZTRL4rP5+PYsWPP3b0t3y823xv1WVRVVRGPx/l//a//PSdenQZMkvEcpgnplLb+jWKYBIIqkcUM1bUuViIZPF4HbrcCEqhOhWxaZ/XTqYpDlXG6FOankxiGycTwGs1tPgKhdfFRVZml+RSBoBO3VyGXNQoPq8+v4vEqLMyk8PodSLKEwyGjOCSyGR1DX58WybKEZPj5/X+xxk//8t3nukbrHyJnoZ/uk3C5nPzhn32fruPW5NPkEiF+8L3rDNzbvL38/a6urmZ2dvapMbhQOMj/96+/RW3bejX9xJrG/EwSp0th6N4qzTt8+AIqXr+DTz5YoPtAiOYdPmYnE4Rr1695KqmRTumEql1kMzqZtI7X7wATQjWuwrf5zXOd/NN/9CdP9MXpdOJwOGhqanqkIPeuXbsYHh7e0gDplrWAvHnzJtlslgcP1jtrtbS0WLrNPZlMcv369ef+u46ODn7rt36LP/mTP2Hv3r0MDAzQ1dVVUOlcLsfg4CAHDx5kZmaGX//1X+ff/Jt/s+E9vJ8ON32BjfPVYHj9GyVY/Wh+ide38RsHYOfu9VFM197gI8fnpzBPoqXD/8jvPN7N38qDBw8yNzdHKBSiqamJtbU13G43brebb3zjG/zt3/4ty8vLHDx4kHg8zvz8PAcPHuT69et0d3eTy+W4ffvWpu1tJQ6Hgz179rC6uorX66Wjo4Ph4WHa29uRZZmvfOUrvP322+RyOQ4ePMjQ0BAOh4O2tjZu3brF4cOHGRsbY2nps+dXkiT8VSr+qvV7s2PnZ9fbNE36vtJAMOxEkiQ6uj8bjQaCm297UFNTg9frLXS637VrF0NDQ3R3d1NXV4eiKAwPD5PNZtm/fz83btygs7MTwzBIpVIcPHiQGzduFBpiW01RwvH5QsHT06XtFvYsTNPc9KjhYSKRCPPz8zQ0NNDd3c3+/ftRVZX+/n5M0+To0aOcOnUKTdOor69nfn6eVCq1BWdQXvbu3cvRo0cxTZPOzk5M0ySbzfLjH/+YhYUFAoEABw4cYGVlvc/p3//7fx9N02hoaKC5uZmxsTHu379X7tMA1gPlfX19hcr7iqLQ09ODLMv8p//0n9i7dy9dXV3s2bOH/v5+Wltb+eY3v0k8Hqe1tZW6ujokSWJpeXNffJIkEXrMl0MxvPzyywA0NjYWhG1+fp7R0VFCoRBHjhxh//79XLp0iRMnTnD69OlCz9789LxcwmHbPI6noarqhqnTZsnlcqiqyp49e0gmk6iqytraGisrK1RXV+NyuYjH44yOjtLf348syzidxTfPsSv9/f3s27ev0D7z8uXLrK2tsbS0hGmahaCaz+fD7/cXrsng4CCTk5Ps3LkT9Qs0FSolhmEwOjpKOBwu9Pi9ceNG4b7m42WZTIbq6mqcTiexWIx79+4xPj7O/Pw83d3dSBZXsI9EIvj9fiYmJohGowwODjI8PMzS0hKxWIxAYH0lJ5fLUVNTg2marKyssLi4yPz8PLlcbstbhDyNitzk5nK52L1796bmYg+TSqV4/fXXicViNDY2Eo1G0TSNTCbD/v37yeVy/OhHP2LHjh2Mjo4SjUa/lEWRh4aG+MM//EPm5uZYW1sjlUpx+/ZtUqkUf/M3f4Ou68TjcRoaGkilUly6dIn29nbGxsZYXl7m0qVLtqm2Desbv+7du0csFqO7u5u5uTkGBgZIJpO8/vrrZLNZVlZW6OjoYGZmhtu3b1NfX8/4+DhLS0uFLoFWYpom//E//kcSiQSffPJJIZCpaRrJZJJUKkUqlSKZTLJjxw6uXLnCgwcPOHv2LNevX2dxcbGs+7UqUjjySlzM3w0NDQFsiMk4nU4uX77M0tISkUikEBSMxWK22BdQajRNK0wv79+/v+G1h3cdr66uPvL/0WgUWA+O2oVkMlmYPt+6tTH2kr/fsDF5Kj/Ez/8uFH401rTV5J/BRCLxSCD6Yb/zHQQGBweJRCIsLy+zvLxsnaOPoSKFI6/SpSKbzZYtE1UgeB7KLRh5Kvbr1C61FwUCK2loaLBFZnBFCofb7Wbv3r3ldkMgsJze3l5bTJ/L70EROBwOGhsby+2GQGA5dmiNABUiHC0tLRw7dqywZ0TX9UKQTiDYTnz00Ue2EA9bB0e/8pWv0NrayoMHDzYsB6ZSKW7evFlu9wQCy4nH4+V2AbDxiEOSJJqbmwu7/nRdJxaLFV63QzETgcBqdu7cKYKjT8M0zULVr3Q6zdjYWKHql2g6Ldiu7N271xbB0aKmKqqqYhgGfr+/sK19aWkJTdNK6tz09DR/+Zd/ia7rG0YYoum0YLuSSCRsMdouSjjygcpDhw6Ry+VYWFhgYGDgkSzEUvA4MRJNpwXblYsXL9piG0RRY558rYDLly+jaRoPHjywtOq4aDot2K6UelRfLEVPlnRdx+fzoapqofSYVYim04LtSkUngBmGwcDAAB0dHUxMTLB7926uXbtWat+eiGg6LdiuNDY22mJVpagYR39/P+l0ulAqcNeuXUxOTpbUsachmk4LtivLy8uVGxx9OJ8CNm4BtoJ0Om2pzfVYlASU/4Y9D6ZRWf6WG6uK+Zhm8cHNK1eu2EI4yj9ZKgJN05iamrLElmmaLM5mkExbJ9k+gqGpTE2KlafNkklnSCfcW//dYCrMzTy5CPSzsMM0BSpUOGRZxu9/tGDvVmCaJm/89DKLY/VIphsJ1eb/nKAHuXbeyYOBCUuu0ZeBdDrD3/7HEXLJaiTTuTX3xnSzMtXMf/3L4gs9nzx50hbB0cr6Gv0Uj8dDb2/vI/1kt4qBe6P8i3+kcfqr+6ipC9h6xmIYJmPDS7z3i+usxeyxr6ESME2Tv/rPHzI93sO+Q034/b6Sv//83Coff3iOsZHii3uHQiFbjDoqUjgkSbJcdUeGJxkZti4ALLAeXdO5+MENLn5wY1PHK4pCS0sLExPWjezs0nS6/GOeIkgmk5Y1fxIInoSqquzevdtSm7dv367czNFyU86m0wJBHtM0LS9h6Xa7LbX3JCpSOBRFobq6utxuCLY5mUyGS5cuWWrzzJkztsiargjhqKurY+/evYUL5vF4xLZ6gS0opk3HF8EuDcJsLRx9fX1897vfpampia9+9asEAgFgfYhoh3meYHujqir79++31KaIcTwDSZLo7OxElmU8Hg+rq6u4XOs9O5PJpKV7YwSCx6EoSlGtSL8IYlXlGZimyZUrVwgEAiSTSYaHhwvNaEzTtE3tRcH2xTAMy4tmB4PWd5x7HEXlcSiKgmEYuFwuNE0jEAgQi8VKXn15eHiY6elpstnshuGZy+WiqamJsbGxktoTCJ6HbDZb0o6Cm+GFF17g3LlzZa90XpRw9Pb2IkkSfX19xONxotEot2/fZnh4uNT+kU6nH/mdqqp0dHQI4Sgr5c9e3I7YIWsUihQOt9tdqADW09PD0NAQfX19nwmHaeJg6x4th2GgJZOoNpjrbVdU00Sy9PpLqKqjULDaDjidTg4ePGhpvO3mzZsoirJlmdObjZ8UnXJuGAZOpxNZlllbW8Pn+yy3XwFOZbN4t+rBymZxfPQRL1m8FCb4DIdhEF6zLs6kOBT6TvTR0tRpmc1nkV9VCYVC5XalZGw2dliUcJimyfDwMCdPnmRxcZGuri5u3fpsx58OXNjC9eb8cM20wS7B7YrL7eI7gQBhrMng1TWNix9d4f7dUUvsbQan08no6Kil2x8aGxuZn58v+8pKUcJx//59EokEN2/exDRNDh48uDG+scXzMJfbTUdHx5ZUVRes43A46OrqIhaLYZom0WiU6upqDMNAkqT11QSLp9t2m5lms1nL90z19vby1ltvVWZwNL8smqe/v78kzmyWfNNpIRxbR21tLb/0S79EbW0ty8vLnD9/nr6+PkKhEJqm8cMf/rDcLtoCVVUtzR7NZrOW2XoaFTnWF02nt56GhgZgXaTzQi1JEoZhkMvlbJG9WG5cLhcnT5601OaHH35Y9tEGVGg9jlQqxfXr18vtxpea0dFRmpubGRgYYH5+ns7OTu7du0c2m0WSJFutbpQLSZIs3636uPSEclCRwgHrN63cAaIvM7FYjDfffLPw87179za87nLZY7NVOcnlcgwODlpqc+/evQwMDJT92a/IqYrX6+Xw4cPldkOwzdF1nfHxcUtt7ty50xY1R8vvQRHIsvylWjv/MhCP5chmdFaWMyTWcuRyz46BmOZnKyWmaZJOaU983Y5IkmRZ0ew88Xi87KMNqNCpSiaTsaw9gmBzjD6IoWkGd69HaOsKcPRUHQ6HxPjQGguzKRqaPUyNJWjp8BGP5cAETTPweB0sL6YJVbu48fESL/xSA0vzaRpbvSzOpjjyQi2KYs/vN5fLxYkTJ3j33Xcts1nRTafLTS6Xs7wJlODpNLZ6uXsjQkOzl9VIBo/PgaGbjA7GCARVrn64SFXYye1Plrl0fp471yPMTCTx+VXWVrNMjcWpb/QwMhDDX6Vy/aNFAiEnsmyPvRlPwuppgx1EAypIOOrr6wsZo5IkFWpzCOxBMOwkUOVkd0+IcI2LqbE4k6NxfD6VmYkE1fVu7t9aoaHZy659QXbtC1LX5CGXM9A0k2DYCRJUhZzMTibo6K7CH1Bts6nrcWSzWW7evGmpzSNHjtgixmHrqUpPTw8tLS0MDAzw67/+6/z7f//vSaVSheDoxYsXy+2i4FNUp8xrv9aBJEFLu5+5qQSSJHH0dB2SLDEyEGXn7iraOv3rcQsTkNaTjNu6/OsC8envTBNs8Nl4JuUomt3Y2Lhhe0e5sK1wSJLEgQMHyOVyvPjiizidTgKBAKlUCkmSbFN7UbCOJEmFnQaKsi4eD7NrX/CR4/Ioin1HFU9DlmVqampYXFy0zObS0pItgqO21XXTNOnv76euro433niDn/zkJ6ysrADWN50WfHHWBaMyBeJJOJ1Oy9MCPvnkE1vEOYoaceSTr/KVwLxeL8lksuRK2N/fz9jYGKlUasP+GCubTgsET8Pq9G9FUdA07dkHbjFFCcfhw4cxDIMzZ84QiURIp9Ncv359S1rhPa4+QL6AcSKRKLk9gWCzZDIZLl++bKnN06dP88EHH5R91FGUcPj9fhobG7l+/ToHDhxgYGCAvr6+z4TDNLd0x7Xf4+HosWO89957W2hF8DRkEySLp9qybL/pTjKZtNSnQCCAoihlj3OUJDi6vLxMX19f4WcFOJPN4tmik/NIEl0zM7gsbr8n+AzVMAivrVlmT3E4OHXqNG2t3ZbZfBaKolBbW8v8/LxlNhsaGvj617++ZSOOLa0ABjA+Pk5fXx+rq6vs3LlzQ0ETHfjA6dyyUYcsy4QjEZZFLkfZcLmsrgCmc+nSRwzcG7PE3mZwu92cPXuWc+fOlduVkrGlNUeHhoZYW1vj+vXrGIbBsWPHuHv37mcHSBJbOQPTDYOFSGTLK41tZ2RZpqmpqRBHSiaT+P3+woOVyaQxLb38Jrpu2KIWRR5N04jH45b65PF4SKVSltl7EkUJx9zc3Iafr1y5UhJnNouqqlRXV1s6RNxu1NfX88u//MsEAgFWV1d5//33OXnyJFVVVRiGwZ/+6Z+W28Wyk8lk+Pjjjy21eebMGd59992yC6ht8ziehsvlYt++feV240tNbW1tYand5XIRDocLPXszmYwtlgTtgNXXwS4FlGybOfo0TNO0vEv4dmN2dpbV1VXm5+eZmppi165dTE1NFa672Cu0/iHes2ePpTV37dJ0uiKFI5lMcvXq1XK78aVmeXmZn/zkJ4WfP3+9RQWw9VWVxsZGS4XDLomPFTlVMU3TNrUXBdsXwzCIRCKW2rRLAauKFA6Xy0VHR0e53RBsc7LZrOVFs0+ePImiKJbafBwVKRz5ptMCQbmxOpO13BmjeSpSOAzDEFMVQdlxOp0cP37cUpuXLl0q+1IsVIhweDwempqacDjWY7nJZNLyzUUCwedRFIVgMGipzVgsZqm9J2HrVZVdu3bR1NSE2+3G4/Hw9ttvF9bN7bAktb358mXtqqrKma8cprevA7fn2R8NVVVpaGjg+Is1zzxWApYW1zj/9l0GB8aKnnK0tbUxOTlZ9imLbYVDkiSOHz9OLpdjfn6e+vp6amtrmZycxOPx0NHR8UiTIIGV2GOuXSokSeL7/5ev8xs/qEJxr7L585tn/2aNmDK//Jsv8T//znvcvllcIaoDBw4wPT1d9umKbacqpmkyPDxMc3Mz6XSalZWVQr9YRVEKvU0FglLg8bj5xv+pEdm9iEkOE630/6QsvroJXvvV4quG2aXpdElGHC6Xi2w2W/Lh05UrVxgeHiYWi21I7c3lcpYXiRV8uXG6nCiu5NYbknTq6kNF/3lFN50+cOAAmqZx9uxZFhYWME2Tq1evMjs7W2r/Hptgk8lkNmzjFwgqiS+yhGuX1cSipirhcJiDBw9y//59GhoamJ+f31DIxwrs0FtCILCavXv32qIKWtGfPlmWyeVyGIbB7OwsTU1NpfTrqXi9Xo4ePWqZPYHALlR80+np6enCKGPHjh0MDAyUzKlnIcsyPp/PMnsCgV2o6KbTExMTrK6ucuPGDTRN4+TJk1y7dq3Uvj0R0XRasF2xS9PpooXjYS5cuFASZzaLaDot2K7YQTTAxnkcT0O0gBRsV/r6+io7xlFOvF6v5as4AoEdqK6uruxVlXIiSVJhw5tAsJ2YnZ2t3OBouUmn0wwODpbbDYHAcm7cuFFuF4AKHXFomsb09HS53RAILMcuI+2KFA6Hw2Gb2osCgZWcOXNGlA4sFrfbzeHDxe8wFAgqFa/XW24XgAoRDkmSHrlgdggQCQRWMzQ0ZItcDntMmJ5Aa2srdXV1hW5i58+fxzAMksmkbYJEAoGV2GVRwLbCIUkSZ8+eBdbbEUajUerq6pifn8cwDNvUXhQIrMQuTadtO1UxTZPp6WkaGhq4ceMGiUSiUItAVVUaGxvL7KFAYD12CY6WZMThcDi2pPnuhQsXGBwcJBKJbCiZ5nK52Lt3L3NzcyW3KRDYGbssxxblxe7du8lms5w5c4a5uTlUVeXq1assLi6W2r/HioNpmqJbumDLME2TtWiO2ckEOzoDeH3P/pjkY/WSBOmUhuKQUVV5w+ulyBS/du1a5QZH6+vrqa+vZ2pqij179nD79m1OnDjB3/3d35Xav8ci+qoItppPPlggXONiYSZJR3cV6ZTGtYuLBMNO4msauZzOzu4qhu5GaWrzMT0Wp6bBzepylrVoloZmD9mMQVXIyWokw87dVbS0+7+wXwsLCyU4uy9O0eMeRVFIJpNomsbk5OSGvApZljl06BBjY2O0tbUxMzNDTU0NqVQKwzDw+/0sLCywY8cOxsfH6ejoYGJigsbGRqLRKKqqoqoq0WiUhoYGpqamaG9vZ2xsjNbWVhYXFwkEAui6Tjqdprq6mtnZWdra2hgdHaW9vZ2ZmRlqa2tJJBLA+vp3JBKhubmZsbExOjo6mJycpKmpiUgkgtvtRlEU1tbWqK+vZ3Jykvb2dsbHx2lra2Nubo5gMEgulyOXyxEMBpmbm2PHjh2MjY2xc+dOJicnqaurIx6PoygKbrebSCRCY2Mjk5OT7Ny5k7GxMZqbm1leXi4UI0okEtTU1DAzM0NHRwejo6Ps2LGDubk5wuEwmUwGXdfx+/0sLi4WbLa3tzM5OfnIdVtdXaWpqalwDvnrtrS0hN/vf+p1m52dpbq6mmQyiWma+P1+lpaWaGlpKZznxMTEpy04rdtspSgO9u/fz+J8lMbGRlZXV3E6nYXnJP9Flr/GLS0tLCwsUFVVha7rZDIZQqEQs7OzhWvS1tbG9PQ0wWAQxSHjdrsL9nYfDDE5GiceywEwO5nE61eZm0mi50xa2n384vUpXB6FZEKjpt5NJqUzOhCjc08VpgmBkJOl+TTxWJb65s/SCWpra2ltbS1c29bWVkZHR+no6GBqaoqGhoZHPgeNjY2Mj4/T09PDnTt3aG1tZWFhofA5yGQyhMNhZmZmaGtrY3x8nPb2dqanp6mpqSGZXC/E7PP5WFpaorm5uXAf85+9lZWVTe+8lcxNJkQ0NzcX/v/s2bMoisKBAwfQdZ1r164RDod56623Csd4PB6y2SxOp5NcLoeiKJimiWmayLKMpmk4nc7CMdlsFlVV0XUdSZKQJAld13E4HORyuQ3HOBwOWltbGRkZwTCMR4552GZ+WCfLMrquo6rqc9t83DkoivLIMdlsFofDgWEYzzwHTdMKN+lx55A/5vPXzTAMvF5vIebzpHN43Hk+/H5Pu25OpxPDMNB1/YnXze/382//+FfpOj66qQfti5JLhvmfvn+X/lsPNpxvfs4vyzKpVOqp1+9J90xRFIKhKv63v/gG1TvmMU2TgdurTI/Hqa5zo6oybq+DqbE4VUGV8eE4/iqVrj1VjI+s0druBwnmppLEYznadwXIZnRWI1kCQRUJOHyyDkVZF9o753fzf/ud//DI58Dv9xfuq6Zpj72fr732Gm+++Wbhb591fg9/DmRZRlXVDdfp89dLkiTGx8efeT+KGnHMzs4SiUS4ffs26XSaU6dO8cknn2w4Jr9klP/v42ISnz/mcWXf83/38DF+v5/Gxkbu37//2GOeZvNx7/esYx73frlc7gudw2aP0TQNj8eDpmlomkZLSwsvvPACw8PD3Lx5E5fLVXgQ8n653W4ymQyqqgLr+TC1tbVcvXoVTdNQVRXDMAr/nxc3RVF48cUXGR4eJpVKEYlEMAyjIIT5B9ThcFhfbds0SafThQ9IXqSPHj2K3+/n7t27LCwsFPzNi3L+Q5fL5ZBlGUVROHr0KA8ePGBxcbHw4eSh709JktjTE2JPT4hsxiC6ksHjddC1twpMUJ0K+4+EkRWJnXuqCn+3a9/m2kFqmkYul8PlchWuZSAQ4Fd+5Ve4ffs2t27dQlVVMplM4cOeTqcLz4Gqqpimicvl4vTp0/ziF79A1/XC/dF1vSAosB5QfeGFF7hz5w7hcJjh4eHCl0d+i75hGAVR2QxFCcfw8PCGn3/xi19Ymsmp6zpra2uW2SsndXV1fPe738U0TRYWFmhtbcU0TdxuN9XV1ezfv59bt26xd+9e0uk0S0tLdHV1MTk5SXd3N9FolFQqhcfj4fr16xiGwXe/+10mJyepr6+nra2NXC6Hx+NhcHCQF198EYfDga7rdHZ2Eo/HSSQStLe309/fT09PD0tLS/z1X/91Wa5Hb28vp06dYnx8nJaWFmpqapifnyeVSvHSSy8RDoe5ePEivb29LC4uUlVVRTgcZnp6mtraWtLpNPX19eRyORYXF/H7/bzyyis4XQ4CAT8wD3zWwsDlVqhv+myaYWJy8Fj1hmOKweVy8Wu/9mtUV1dz8eJFTpw4QWNjY0Hwe3t7mZqaora2tjAK2L9/P4ZhsG/fPpaXl1lZWeHkyZNcvHiRRCLBCy+8QDabZc+ePQSDQVRVZXZ2Fr/fT2dnJ9lslsbGRl588UV0XWdqaop9+/YxMzNDOBwG4C/+4i825X9J8jisTv9OpVJcv37dUpvlIhAIIMsybW1t7Nixg5/97GdkMhkCgQCNjY2k02mOHDnC7Owsb7/9NocOHSIWixWEZnx8nNXVVSYmJgrTttnZWb7+9a8jSRI+n6/Q8Ordd99lbGyMdDpNZ2cn9+/f5/3336enp4eVlRUAFhcX8Xg8KEp5UoAaGhpIJBLs37+fbDbLxYsXcTgchMNhfD5foXXHO++8w71799i7dy9LS0u43W5u3ryJ0+lkbGyssLs6Ho/j9/tpb2snHo8/035+hPJFi+l4PB78fj/hcJgDBw5w/vx5FhYWCqPpVCrF/v37kWWZn/70p+zcuRPDMJifnyedTvPxxx+jKApjY2OFUcLIyAivvfYa8Xic5ubmQuzuwoULDA0NsbCwQH19PalUitdff73wZZPJZFhaWsLhcBRGqc/Ctglgz2K77FXJD1enpqa4c+cOX/va11hdXQVgbW0NRVHo7+8nEAhw9uxZ3n33XWRZZnZ2lpmZGZaXl5mcnKSmpobe3l56e3sZGRlhaGiICxcusLCwQDQaZXx8vPAt7HA4uHbtGu3t7Rw7dozz58+jKAqLi4uYpkkymcQwynP919bWcLvdDA4OkkwmOXDgAPF4HE3T0HWd5eVlrly5wle/+lWam5v56KOPABgbG2N1dZWpqSkmJiY4cuQIR48eZd++fdy+fZvb/f2WLnPmp57Ly8t88sknnDlzhkwmg2maxONxXC4Xw8PDRCIRXn31Va5cuUI6ncbn8zE1NUUikWB2dpZUKsXRo0cL7UKGh4e5cOECd+/eJZ1OMz4+TiKRYGJigubmZh48eEA2m+Ub3/hGoSvc0tISpmmSyWQ2neZQVHC03Hg8Hnbv3s3NmzfL7UpZ6OjooLe3l5/+9KebFlBVVens7ESW5Q3fUsXicrn4wz/7760LjiZC/OB71xm496i9V155heHhYR48eLDp9wsGg7S2tpLJZBgZGSEYDPC///W3qG0rfS7S57l5rpN/+o/+5JHfh8NhXn31VX7yk58UYmif59VXX+XnP/95IQYmSRLt7e34fD7m5uZYXl7+wv7NzMw88xh7pKE9J4qiFOZk25GxsTHGxsae629yuVyJe9/YZ8T35ptvPvffRKPRQhNzsMfZrKys8KMf/eipx3w+KG2a5nM/C6WgIqcqoum0YLtil6bTFSkcmUyG/v7+crshEFhOJpMptwtAhQoHiKbTgu3J4cOHbfHsl9+DTeBwOHC5XIUlMK/Xy4kTJ8rslUBgPc3Nzbboq2Lr4GhtbS3hcBhVVenr6+PNN99kfn4eWZbxeDzldk8gsJyVlRVbpCLYVjgkSeJrX/saqqry9ttvs7KyUgiIZjIZJicny+yhQGA9ly5dKrcLgI2nKqZpEolEqK6upqGhgcHBwUI0OZfLPZL2LhBsB+wwTYESjTjyG6BKzblz5xgcHGRubm7D+rUsr2+Bzm8VFgi2CydPnuTy5ctlL+ZTlHB0dHSQzWbp6+tjbm4On8/HtWvXCvsZSsWTklu8Xi9Hjhzhgw8+KKk9gcDuhMNhW4w6ipqqtLa20tfXRyKR4MiRI2SzWY4fP15q356KHQq2CgRWMz09bYvgaNExDlVVWVlZIZPJMDo6SldXVyn9eirpdJq7d+9aZk8gsAu3bt0q+zQFvoBwRCIRent78Xg81NXVMTU1VUq/noqmaVtSGFkgsDub3fa+1RQV41heXmZxcZEHDx4Qj8cLARurcDgc+P3+wvZygWC7cPr0aT744IOy71cpSjju3bu34edz585Z2q4g33T6vffes8ymQGAHvlRNp0WPE0GlYxgGGNZMA1Lp4tMI7t69W9kxjnKSTCa5evVqud0QfIlIJpKM3TfA3NrVOlOr4vql6aL/fnx83BarKrZNOX8ahmFsqj6kQLBZNE3nD/7f7/BP1a/TsVfB6SrxR8M0SawZXPhZhDd++nHRbxMIBGxRqLsihUNVVWpra5mdnS23K4IvEZMT8/xP/+Q/EwwFcDpdJX1v0zRJxBPE44kvNGI4ffo0586dq8zgaLlxuVzs2bNHCIeg5GiaxvJSaTOgS4kdskahQmMchmFY3xBIIPgcTqeT3t5eS21evXrVFsHRihxxiOCowA7IskxNTY2lNu2S+FgxI47PD9GeVD5eILAKXdeZn5+31GZ9fb0tpiu2Fo5AIEBTUxNnzpzhN37jNwgEAsBnMQ6BoJzkcjlu375tqc2jR4/aouaobacqkiTxrW99C6/Xi67r1NbW4nK5WFtbQ1VVmpqaStwnRCB4fhwOh6UJkHaIb4CNRxz5VoNVVVUkk0kWFhYKy1iaptliLVuwvXG5XPT19Vlq86OPPir7UizYeMQB8LOf/Yw9e/YU+ppms1lgfVv9dmk6LbAvkiRZvnfELl+YRQlHc3MzmUyGI0eOMD8/TzAY5Pbt28RisZI6p+v6E+tu2GXIJti+aJrGyMiIpTa7u7sZGhoqe9p5UVOVzs5Ozpw5g8fj4cUXX7R8Pdvj8XDkyBHL7AkEj6McwrFr167KDo663W5GRkaoq6tjeHiYV155pbDNXTZN9mgazpK5uRGvw8E+w8AUS7Jlwwn4U9Yl4cmywp49e3A7qyyz+SwkScLhcFiaGtDa2srhw4e3LM6x2cTKooUjGo2yf/9+fD4fwWCQhYWFwmsmsCrLOLZoOBU3DFyxGBEbrGdvV5yKQs7Cuq8mJtFolEgkYpnNZ+FyuTh27BgXL160zOZbb721pdP0zYpgUcIRi8UYGhqiurqa1dVVjh49uqECmClJzG7lQ2UYDI+NgcPWsd0vNS6Hg4zTujJ2pmEwNzdnq0Zcbrebjo4OW/lkFUV98m7fvo1pmszNzQHrpQTzKx5WUI4h4najurqa1157jbW1NbLZLLdv3+bQoUOFHr5vvf1WuV0sO/nrYiVHjhyxRcHioqIsn4/oZjIZS6O8Xq/X8nYM2w2/34/L5aK3t5eOjg58Ph9VVVXU1NTg9XrJpDPldrHsGIZhecp5U1OTSDkvFkmScLlKWy9BsBGv14vf7yeVSrGyssJLL72Ey+XCMAxUVcXtdpfbxbJTjk1ukUik7EuxYPMEsCeRyWQYGhoqtxtfagYGBpiYmMAwDDRNw+l0out6YYgsGmKtb6s/cuQI77zzjmU2r1y5UvZpClSocORyOUv7uGxH8in/eT6/H0OWyz9ctgN2+BCXg4qcqiiKYpsy8YLtSyaT4ZNPPrHUZl9fny0SwMrvQRF4PB6OHTtWbjcE2xzTNC3fO1LRTaftgJhjC8qNoijs2LHDUpujo6O2mB5VpHCkUinL188Fgs+jqqrlBaXu378vVlWehdvtxu12s3v3bpqamvj5z39OOp1G13WWl5fL7Z5gm2OapqWJj7C+kmO1zcdh6xHHq6++yne/+106OztpbW2ltrYWWK+6FA6Hy+ydYLuTyWT46KOPLLX5la98xRbTdFsLh2EYuFwurl69yurqamGDk9vt5tChQ2X2TiCwvmi2qlq3P+hp2Fo4/u7v/o4rV66wsLDAf/kv/6WQV2Capi3Kpwm2N6qqsm/fPktt3rlzxxbB0aJiHLW1tWSzWfbs2cPy8jLhcJj79++TSCRK6lw2m33sOrnoqyKwA4qi0NLSwr179yyzOTExYZmtp1HUiGPv3r28+OKLdHR08Morr1BdXc3hw4dL7dsTMU2TVCplmT2B4HEYhkE0GrXUZjAYtNTekyh6VcXn8zEyMoLf7+fBgwe8/PLLhYImkmnSruts1WwsHxy1S1er7YhTlvCkrYvuy7JMe3sbhmavhcBYLEZ3d7dl9s6cOcOlS5e2bKq+2RWbou9CIpGgs7MTr9eLz+djZWVjo16Z9RKCW4Hb6aSro4Plh6qOCaxFNkHCynwCCVmSbZFu/TBW+6MoCrIsb1kux2azUosSjmQyydjYGC0tLVy7do19+/Y9UgFsZAurc3kdDlwuFwM2iTBvR1xOlaTbutIGhqEzOjbGwMCoZTafhdPppKenx9J4WyQSYWlpqexJYEV9um/evIlhGIUdqnNzcxt2Um41yWTS8s1F241gMMgrr7xCJBIhl8sxMDDA/v37cTgcSJLEhx9+WG4Xy44sy5bnE9llel6UcHx+fhWPx0vizPNgZdu97UggECAQCHDgwAHm5uaYm5ujvr6eQCBAJpMhkxEVwHRdZ3Z21lKbra2tTE9Pl33EYa8J4yZxuVyWr59vN0KhED6fj0wmQyKR4Ctf+QperxdFUXC5XKICG+vJX3fu3LHUZk9Pjy3iPPYKUW8SVVVpaGiwdP18u3H37l1mZmbQNI1sNlsQkXzyUbm/8eyC1U2n7TLSrkjh0DSt5O0mBRsxDGNDD5PPN+pxubaq3VblkG86feHCBctsvv/++7bImi7/mKcI0uk0N27cKLcbgm1OOYpm2yW2VJHCIRDYgVwux+DgoKU29+zZIyqAFYvP5+Po0aPldkOwzdF1nfHxcUttdnZ22iI4Wn4PikCSJPx+f7ndEGxzyvEcxuNxWwSmbSkcDoej0Jfz1KlT7N+/n1dffRWPxwOI9ggCe+ByuThx4oSlNj/66CNbbKu3nXBIksS3v/1tfuM3fgPTNGlqamLv3r3kcjkaGxsB0ZBJYB+snjbYZTnWdsIB63kasiyTTqfJZDKkUinq6uoKae2SJNmmEtL2pfwBunKTzWa5efOmpTaPHDliixiH7fI4TNPkzTff5MSJEyQSCd599110Xcfv9xcKFHu9Xg4dOmR5vUfBw5R/nl1uDMNgaWnJUptNTU22qPBflHAEg0FyuRxtbW2srq5SU1PD8PDwI0lCxZJIJDh//vyG3z28fi2aTgvsQL7ptJUbz+bm5mwRHC1KOHp6evD5fDQ0NBAIBBgZGcHj8Vi2YzWTyVi+fi4QfB6n08nhw4c5d+6cZTavX79uma2nUfRUJRgMcvfuXXp6ehgYGOCll14qCIdkmtQbxtbNg3QdJiZo2ar3FzwTp6bjylpX4VuSZBoa6onHyt9TJI/L5aK6upqWFuueREmStnTEsdmq7UV/ttPpNE1NTXg8HlRV3VCPQwJqDAPXFp2goii4PR4SZdjOL1jHqeuoFkb4JVmiurqatXr7CIckSYyNjVFfX2+ZzePHj3Pt2rUtW5LdbLihKOHIZDLcunWL7u5uPvzwQ3bv3r2hApghSdzdwlUPv99Pb28v1y3cXCTYiMvlJO710GCRPUPXuXfvPgP37FMBrBw0NjZy48aNsm90K0o48o6PjY0BMDk5aXm1ZzssSX2Z8fv9fO1rX2NpaQlN0xgdHaW7uxtZlpEkSWwyZD1RcceOHYyOWidmIyMjtkgAK0o4Pj8Penj7tRUkk0nL18+3G1VVVdTX13P8+HFmZ2eJxWJ0dHRQVVVFJpPZMMLcrjgcDrq6uiwVjoGBActsPQ3b5XFsBsMwWF1dLbcbX2rq6urweDxomkYul+PkyZOoqlqoOSoS8MrT38fj8diip1BFCofD4aC2tpa5ublyu/Klpb+/n0gkQjabJZlMEg6HSSaThbl1uefYdqAcI6/Tp09z/vz5sl//ihQOt9vN3r17hXBsIbquMzk5Wfh5bW1tw+uiAtg6Vjeddjrtcd0rMsJomqZtNvsIti+qqnLgwAFLbfb399siOFqRwiGaTgvsgKIoNDU1WWpzcnLSFinnFSkcoum0wA4YhvFI69Otpra21lJ7T6IihcPpdNLR0VFuNwTbnGw2y7Vr1yy1efz4cRRFsdTm47ClcEiShKIoNDc3c+TIEZqamujt7S28LoRDICgvthSOb33rW3z/+9/H4/HQ1dWFpml0dXUVXjcMo2Rb+AWCYnE6nfT19Vlq8+LFi2VfigUbCockSVRVVWGaJolEgmw2SywWI5v9bHOTaDotsAOyLBMIBCy1aZdGZLYTDtM0efvtt1leXiaZTPL++++TzWZ5//33NxwnlmMF5UbXdcuLZu/YsaNy+6p4vV6cTictLS2EQiE6OztLmpgSiUR44403iMViRKNRTNPckGLu8Xjo6ekpmT2BoBhyuRz379+31ObBgwdtscGzqMzRI0eO4Ha76ezsRFVVJicn8fv93Lp1q2SOPW2tWlEUampqSmZLICgWp9O5YRq91Vhp62kUJRz5Wos3btwoVAA7e/bsZ8JhmgRNk61aNPJks5gLC1TbIINuu+LSDVTNuiCdJEkEg0Gqq6sts/ksXC4Xvb29XLp0yTKb9+/fJxgMbtn7bzbwWvRelVwuRzgcxuVyYZrmBoMy0KVpuLcow03SNLQbN9hrgwy67YpTkvCmrWuALMsKnTt34pC9ltl8Fi6Xi66uLkt3am916cCHK/k9jaKEQ9M07ty5Q09PD7du3WLPnj0bVjkMSeLaFm7GkSQJSZJskbO/XXG5nPym34tVeYy6rnH9xg1bVQBTFIWhoaENmwG3mj179vDgwYOyp50XJRw3b97c0Km7qanJ0hLxHo+H/fv3iyXZLcTj8XDmzBmWlpbQdZ3p6Wna29uBdeEWVeYf3UFsBZ2dnQwNDZU9l6Mo4fj8PpHZ2dmSOLNZZFkWTae3mFAoxM6dO3nxxReZn5/n3Xff5cCBAwSDQbLZLPfu3S23i2Un33T68yUHtpLV1dWyjzbAhnkcm0E0nd56GhoaCvEr0zQ5dOgQHo8Hh8OB0+m0xX6JclOOptMff/yxLaboFVnIRzSd3nru3r1LNpslk8kQi8VoaGggFouRy+U+DdBtPH5+JonX52BhNoW/SiUYcuL2OjZ+O5o8vuWsCYZpEo1kCdc+2qHPDglPT8LqnAo7iAZUqHDka17aZU37y0g2m+Xu3c+mI5+PYX2+AlhkMcPQ3SijD2I07fBy5utNmKbJzcvLRBbThGtdLMykqG/2kFjLYZqQyxrU1LtZmE1RFXJy72aEQydqWV3OUNvgZjWS4czXm1AUewpHNpu1vC7MyZMnuXLlStkFpCKnKl6vl2PHjpXbDcFDNLZ6uX9rhY7uAIk1DZdLwdBNVpbTNLf7GBmI0dzuY3I0zv3bq6wsZdByBqEaF7mszupyhtYOP5HFNM1tPkYfxGjtCCDL9hQNKE89jurqaluMwCp2xCGaTpebjQ9voEql53gNXXuDzE0nuHllGV0zaGj2EllI09LuY/DOKj3Ha2jr9CMrMi63jNuj4PWrNLZ4WYtmqQo5WV5Ic/hkLYEqpy0+JE9CURTq6uosrX07Oztri+BoRQpHKpXi3r175XZjm7Px4XWoMn1fWe/rVl3nIp1aXy50uxUkWWJ6PE7X3iB1jZ5H3qmh2T5JXc+DqqocPHjQUuGwSyOsihQOXdeZn58vtxuCJyBJEh7vxkerpf3LuXxudZVzh8Nhi53hto5x1NbWsnv3blpbWzlx4gQOx/rDqCgKoVCovM4Jtj3l6Kty6tQpW+yOLb8Hj+Gll17iN3/zN6mpqeHw4cP4fD527NhR2Nzj8Xg4dOhQmb0UbHfKUTTb7/fbIu5jO+GQJIn6+npM0yQajZLJZFAUBdM0Cxl6pmna4uIJtjf53rFWYpem07YTDtM0ee+999A0jXQ6zaVLl0gmkwwPDxeyFVOplG2CRILti8PhYOfOnZbaHBgYqNxVFafTia7rVFVVkU6nCYfDLCwslCxoMzs7y1/91V898f0MwyAajZbElkBQLKZpbnobeqnw+/3E43FLbT6OooTj6NGjhaWo/ArHgwcPSrpE+jQRcjgc1NTUiJUVQVnJZDJ8/PHHlto8ffo077zzTmXujnU4HDQ2NnLlypVCBbATJ058Jhymicc0t2we5Hc66e3u5oLFu3IFn+EyTBTdwrm2JOH1ePD5fNbZtCE+nw+fz7dlwrHZ+EnReRy6ruP3+1FVlUwmU1gqhfXAyWFNw7NFczF3MknnzAwZi9fQBZ/hBAIWDtMVWeFgTw+hYINlNp+Fqqq0t7dbuuHSMAyOHz++ZXGORCKxqeOKEg7DMLh//z7Hjh1jdHSU3bt3b2iFZ0gSl7awAhiAZ3aWlEg7Lxsul5NfDfipwZoCTrqucfnydVtVAHO73Zw9e5Z333233K5YTlHCcfv2bdLpdGH3ZGdnp+X1MUTT6a3F6XTS29tLJBLBMAwWFxdpbGwE1pfMp6eny+xh+TEMg6WlJUtt1tXVsbS0VPaVlaKE4/MVj0ZGRkrizGZxu93s2LFDlK/bQvLJd01NTSwsLHD+/HmOHz9OMBhE0zR++Kc/LLeLZSebzXLz5k1LbR47doy333677MFR2+VxbAaHw0FLS0u53fhS09jYiKIoSJKELMt0dXXhdDqRZXm9WPRjK/JsP0QhnwpC13VL6zxuR+7fv4/L5SKVShGJRGhtbWVoaKiwqUtRKvI7p6SUo6/Kxx9/XPbRBlSocKRSKa5fv15uN77UpFKpDR+Iz1fz/nwFsO1Ivlixldgl8bFivzbKHRwSCDRNY3x83FKbFd10utx4PB4OHjxYbjcE2xxN0ywP0Nul6XT5PSgC0XRaYAckScLtdltq0+q9MU+iIoVD0zTL188Fgs/jdDo5efKkpTYvXrwogqPPoqqqimAwSCaToba2loGBAXRdJ51O09/fX273BNucfJsOK7G6VOGTsOWI4/Tp0/zqr/4qra2tnD59mkAgwIsvvkggECgcIzqJCcpNLpfjzp07lto8dOiQiHE8DkmSaGtrQ5IkIpEIqVQKVVVZXV0ttETw+Xz09vaW2VPBdkfXdcv7Jre0tIhVlcdhmiaXL1/G6/WSyWS4fv06a2trDA4Osry8DJRn/Vwg+DyyLFteNHtlZcUWqQhFxTjyNUBdLheaplFVVcXq6mrJgjYjIyNMT0+TzWYLnbIe3lSVTqcZHbXPLknB9sTpdHLs2DHeeecdy2xevnzZFmnnRVcAk2WZ48ePk0wmWVlZob+/v6R1CTKZzBNfK0fijUDwOOzw7V8OihIOl8tFU1MTly9fpqenh6GhIfr6+j4TDtNE5fGNyUuBLMuFfRSC8uA0QTas/NBIOFUV5xbXeXle+vv7LfXpxIkTXL16dctGHZsVwqKXYw3DwOl0oigKa2treL2ftfFTgJPZLN6tqgDmdrOzqUm0gSwjqmEQjG+uWlQpUBwKx0+coKmxwzKbduTYsWMEAoEtE47NFkIuSjhM0yyMMhYXF9m1a9eGdgU68MEWqrDf7+d4WxvnLa4DIvgMl9vFdwJ+qq2qAKZpfPTRFe7ftU9sS1EUGhsbLS1qtLCwwK1bt8oe5yhKOO7du0cymSwUMdm/f//GYj5bvFyUSqW4e+/eltvZzjgcDnbv3s3q6mqhOVZNTQ2GYSBJ0nrQ2uLLb7dwgqqq7Nu3z1LhsEs/oaKEIxKJbPg5X0LQKnRdZ2FhwVKb243a2lpefPHFQqm68+fP09fXRygUWq8A9sP/o9wulh3TNC3P5HS5XE9dOLAK2+VxbAbRdHrraWhYryauKAqKotDc3IwsyxiGgaZpGJYGRu1JJpOxtIgPwJkzZ2yRNW3rvSpPwuPxcOTIEc6fP19uV760jIyM0NDQwL1795ifn2fnzp309/eTzWYBLN+jYVes/vZ32aSyf0UKB9in9uKXlbW1Nd56663CzwMDAxteFxXA1uNAnZ2dPHjwwDKbd+/etcWzX5FTlUQiYZsgkWD74nA4aGtrs9Tm+Pi4LZLOKlI4TNMkFouV2w3BNscwDMuLZj+8Q7ycVKRwOJ1OduzYUW43BNucbDbLlStXLLV56tQpWwRHK1Y4urq6yu2GQGD5tMEOtTjA5sLh8Xiora0F1hsE5S+aaZqk0+lyuib4EiPLcmEZ+mn/PB4PR48e3dSx+eZWX5Rr167ZIjhqy1WV3t5empqamJycZP/+/Vy4cIHf+q3f4t/9u39HKpUimUxy9erVcrsp+JLh9Xl47Tun6T3Zgtvz7O9Uh8NBKBRmaalnU+8fWUpy7vUBLl+6ja4X9+G3S+Kj7YRDkiT27NlDLpdjcXGRVCrFsWPHUFWVQCBAKpUqS8ae4MuNLMv8zg9e5Zd/ywDH86SQj7LpZqSmxNlXD/Mv/4nGxxeLKzlol6bTtpuqmKbJ7du3qa2tJZfLce/ePd544w1+/OMfF4r6uN1uuru7y+yp4MuEx+vm5Et+cEQBc2v+SQaqf4Zv/bcHivbz2LFjtohzFDXikCQJ0zRxOBwYhoHX6yWZTJZs7nXnzh3GxsZIpVKFcoEPJyDlm06LbvWCUqGqKrJqQdxMMgiGil9S1TSthM4UT1HCceTIEUzT5PTp06ysrJBMJrlx40ZJq3IlEk+u9VCO9XOBoFR8kSBpRfdV8fl8NDY2cvXqVQ4ePMjdu3fp6+v7TDhMc0vnQOlEghtXryLbIINuuyKbIFl6+SVkWd6yYboiy0gW1gko9jzS6XTlTlXy5JVzZWWFcDhc+L0CnNnCCmCfGrdfgYZthMMwCFs46lMcCqdOnaJ9x9bEtnw+Dx6PZ0ve+/PUN9TzzW9+s6i/bWpqYm5ubsuCo5sdyRctHGNjY/T19bGyslLYOZlnqyuAeb1ednV3c+vTQkIC63G5XHwnECCMNa04dU3no48+YuDe1lQAC4eD/Nr/8DLeZx/6hVmYX9iwgfB5eOWVVzh37lzZpytFCcfg4CBra2vcuHEDwzDo7e3l/v37nx0gSWxpioqiEKquxhAVwLYMWZZpaWkhkUhgmibJZLJQ61KSpPVlcUsvv4lhGFuW/KQbBibWjWCLPY94PL6l12GzFCUc8/PzG362Ohkrm81a3kFru1FfX8+3v/3tQs+c999/n76+PoLBILqu86d/+qfldnFbYpfgaPmjLEWQzWYfqQ8hKC11dXUYhoHH48HpdBZiWLquk8lkbLMsuN2wS+Kj7TJHN4MkSTgcDttcxC8j09PTRCIRZmZmmJ6eZteuXYyPjxeuuV0qUW03Dh06RH9/f2VOVcqN1+ulp6fH8nqP24lIJMJf/uVfFn6+fv36htdFBbDy0NLSwp07xaWrl5KKnKpIkoTb7S63GwKB5VR00+lyI5pOC7YrH3/8sS2EoyJHHKLptGC7YoesUahQ4ZAkybIsP4HATpw6dcoW4lF+D55CvgaH1+ulpaUFh2N9ZuXz+Thx4kSZvRMIrCcQCJSkktgXxZYxjj179tDY2MjKygp79+5lfn6eYDDI22+/XcgfsIPqCgRWMzY2VvalWLDhiEOSJHp7e6mrq2NhYYF0Os3S0hKBQIC6ujrg06bTFverFQjswL1790Rw9HGYpsnQ0BCNjY1omsbo6GihoE++AphoOi3Yrtgl8a4kUxWXy0U2my2ZEn7yyScMDw8Ti8VYWlrffTkyMlJ4XVVVQqEQi4uLJbEnEFQKZ86c4b333iv7fpWihOPgwYPous7Zs2dZXFxE13WuXr3KzMxMyRzLjy4eh8vlYv/+/bz33nslsyd4XsofoNuO2GXEUdRUJRQKsX//fu7cuUNtbS2zs7P09fV9doBpbvk/Q9ctsSP+PeEfJhbuQgc+laotOp9KkUG7NJ0ueqoiyzKapmEYBnNzcxw7dqzwmgKc2sIKYHIuh/ujj/hmJrMl7y94NqphEF6LW2ZPyWmcikZp26J77ksk8Gjl367+LOyS+Fi0cExNTdHX10cikaCtrW3DNncd+Njp3FoV1zSwybBtO+Jyufiu30c11sSZdNXBlaoAD7bonoe8Xn7DoeDbkncvHYFAwBaFuosSjvHxcVZXV7lx4waaptHX18e1a9c+O0CS2MoN706nk4aGBiYnJ7fQyvZGkiSqq6sLrTYzmQxutxvTNJEkCU3XMWRrB/g5SSZbZPKTw+EgHA4TjUZRVZVsNovH4yGbzaKqKjlJsnrmVRSnTp3inXfeqczg6Oc/sB9++GFJnNks+abTQji2jvr6er7zne/gdruJxWJ8+OGHnDx5kkAggGma/Pmf/7nFMY4vljnQ09PDiy++yOLiIh6PhytXrtDT00NTUxOjo6O8e/6dEvm5tdghaxRsmMexGUzTJCPiG1tKTU0NhmEQDofx+XwFwcg3/E6nU6zFLLoHJhg5N9l08VXHWltbiUajNDU14fF4CAQCxGIxmpqamJqaYovCcSXn448/LvtoA2yacv4sEokEV65cKbcbX2qWl5fJZrM8ePCAiYkJenp6WFhYKNSbVRQHl99b4NDZMLJzZUtXZyVc9F/WmZkpPulvYmKCmpqawqrEnj17WFhY4Kc//SmBQADZJt/kz2J1dbXcLgAVKhxgn1Z4X1bm5+f54Q9/WPj5gw8+eOSY//Kff4Gmn+Er32zHF1C3xI9cFkYHkvz//re3vtAo8+bNm9x8SjuNUDhY9HtbSUtLCzMzM5Q77bwihcPtdtPW1saDBw/K7cq2JpfT+Msfv8dP/8KBoihbYsM0TXK5XNk/KHbh0KFDzM3NlX26UpHC4XA4aG5uFsJhEzRNEyNAi7BLge6KDI5qmkYkEim3GwKB5Xz44YdlH21AhQpHOp3m9u3b5XZDILCcVCpVbhcAmwuHoii43W5kWcbn25jTZ5f1bIHASrq7u23x7NsyxtHW1kZdXR25XI7du3czOTmJ3+/n3XffxTAMvF4v+/bts7z1pEBQbnbt2sXIyEjZpyu2G3FIksTp06fZtWsXCwsLZLNZdu3aRXNzM/X19cD6BrtAIFBmTwUC60kmk+V2AbChcJimyfT0NA0NDei6zuzsLNevXycejxcummg6Ldiu2CU4WpKpisPhKOly3IULF3jw4AGrq6uFDNGHa4yKptOC7YodRAOKFI49e/aQy+U4c+YM8/PzKIrC1atXS1oHNJ/a/CRKLVYCQR7TNImtZpkeT9C+K4DP/+ys2Hx+miRBKqnhcMiozk8H9J/WPCpFTPP48eNcvXq17MV8ihKOuro66uvrGR8fZ+/evdy6dYsTJ07wxhtvlNq/x+Lz+Th8+DAXL160xJ5g+3H1w0XCtS4W51L4dqmkkxpXLy5SFXaSWMuRyxp0dFcxfG+Vph0+psbi1DZ6WF3OsBbN0dDsIZsxCIRUVpezdO6porXD/4X9qq2trexVFUVRSKVSaJrG1NQUR44cKbwmmyZ9uRyeLUoT9sgyu5eXcYkdsoIS4U8mN1QA230wxNRYnLXV9UzNmakkvoDKwmwSPWfS0u7j/BtTuL0O0imd6jo3mZTO2IMYnXvW971UhZ0sz6eJx7I0tnhL4ufCwoIt0u+LFo75+Xn6+vrI5XI0NzczPDxceM0AbjocWxZ5dQBDsRjT6tZsrBJsP0JuNxnlswpgibUcibUcbo/CrStLeHwOoisZqmvdjA+tMTuV5Ow3mxkfWqOlw4ckwdxUioYWL3VNHjJpnchimqqwk2C1E6lERY/skoJQlHDMzMwQiUS4desWmUyGU6dO8cknn3x2gCSR2srhlGEQnZ0F0c1NsElkWcbr9ZJKpVAUBV3XUVUVTdNQFIWkLGN8+shKksTugyF2HwyRyxrEVrO4PQ527QuCCapTZt/hMLIs0dH9WVpA196t32Gb973cFCUcD/c4AXj33XctHT4pioLP5yMWi1lmU1DZHDp0iLNnzzI9PU0gEODq1ascPnyYUCjE/Pw8v3j33Ibj83EEp0uhtuGzBucmJgd6qzccYyWnT5/mww8/LHtwtCRf2VbPuTwez4aYikDwLBoaGkgkEuzcuRO/34/X62V1dZWuri7GxsY2XQFMkqTCv3Lg9/ttERwVY33BtiAajeJ0OhkbG2NmZobjx4/j8Xg4d+4cDQ0NFVMBbHR0tOyjDbDpXpVnkUqluHXrVrndEFQQly5d4tKlS098vVIqgN2/f7/cLgAVOuLQdd02tRcFAitxu93ldgGoUOFQVZW6urpyuyEQWM6ZM2e2rEzj81CRUxWXy8WBAwc4f/58uV0RCJ6bmnSaFl3HbxgsyTIthsGYotCu60wrCg26TlSWUU0TFYhJEg2GwYSi0LG8TEjXacrlWJBl/KaJAWQkibBhMKso7NB1xvPvJ8vUmCbJT2M4PsNgSVFo0nUmFYUOTWPC4aBR11mR5U2PJCpSOEzTtMVatkBQDFGnk0VZJiLL5ICUJJGRJIYVhawkkVIUdElCYr3rhA7EPz3m3OQkUSClKOQkiRjr+2AMYFWSyEoSQ4pC5tP/ZiWJxKevAyh5m58eM+hwkJUk0g4HGpvvcmFr4ZAkCUVRkCQJh8NBJpPBMAySyaToqyKoWDR5YytL7dP/z48KtMes8OQ+/d348nLhPYANrVZzn3ufwvs9dIzD4Vj/LH1aOT4ry0iSRNYwkCSJ3CY3jtpSOOrr6wmHwzidTnbt2kV/fz9nzpzhzTffZH5+vtBNTCDYblRXV3+hQt2vvPIK3d3dDAwMsLi4SGdnJ4lEgoaGBq5cufLU3jMPY7vgqCRJvPTSSxw/fpzFxUV0XWdiYoJIJMLS0hKwHuNoa2srs6cCgfWcPHmy6OCooijU19ejKAotLS34/X5CoRAjIyMcP36csbGxTb+X7YTDNE2Wlpaora3FMAyWl5epr69ncHCwENdQVZXOzs4yeyoQWM8XSf7K91zWNI379++zZ88e3G43O3fu5PXXX3+uz1RJpiqyLJc0m+3cuXOFCmAffvjhI6/ruk4ikSiZPYGgUvgiTacNw+DP//zPkSQJ0zS5cOFC4bXn3TZSlHDs3LmTbDbLCy+8wOzsLF6vl2vXrpW0SdLExMQTX0ulUly7dq1ktgSCSqEUiY95kfgie8yKmqq0tLRw4sQJVldX6enpIZ1Oc/z48aKdKAY75OsLBFbT2tpqi01uRU9VVFUlGo2SzWYZGxvjtddeK7wmmyZHcjncW7Rr1ul00lBfz+Tk5Ja8v2D7EUilcFdAblBPTw+zs7Nlz2MqWjiWl5c5evQoDoeD+vr6DVMLAxh2ONiqxFif10ugq4v7c3NbZEGw3Qg6neQqoDCUXZpOFyUcS0tLLC4uMjAwQCKR4IUXXtiYkCVJRLdwOJUwDMYTCSIVcKMF9iCfRKhpWiGYL8sypmkiSRLGp9madqei+6p8fmvv22+/benJZDIZsa1e8FwcPHiQs2fPMjo6SjAY5ObNmxw+fBiXy8Xa2hrn33u33C5uii9V0+lyKKAdAkSCyqG2tpZcLsf+/fuprq7G6/USi8U4cuTIpxXAyl85fDMcPHgQ2QYj7fJ7UARer9fyVRxB5eN2u1lYWCAajXL27FlCoRCXLl2ivb29YiqA7dixwxZfmrbcq/IsZFnG5/M9+0CB4FPOnz/P+++/X1jGz8c38jGOqmBlNDGPxWK2GB1VpHBks1lmZmbK7Yaggvh8KYaH/98OH8TNcvHiRVv4W5FTlWw2y4MHD8rthkCwbalI4ZBl2Ta1FwUCKzl+/LgIjhaL1+vl2LFj5XZDILAcuzSdtr1w5JvffF5lVdE3VrANmZubs0WMw5bB0WAwiN/vJxgMsnPnTlZWVujq6uKnP/0pa2trpNNp7t27V243BQLLuXHjhi2Ew3YjDkmSePnll/n617/O6uoqDoeD6upqqqurcblcAGiaxvz8fJk9FQisxw7xDbChcJimSSKRoKqqCk3TWFtbIx6Ps7CwUFiDVxSFqqqqMnsqEFjP6dOnbSEetpyqvPnmm+zevZtYLFbonaIoSmFnoMfjobe3l/fee6+MXgoE1mOXptNFCUdLSwvZbJYjR44wPz9f2DQUi8VK4pRhGI9spBOFewQCGBgYsMVnoagxz86dOzl16hROp5MzZ87gcDg4evRoqX17IslkkuvXr1tmTyCwCyMjI7YIjhY9VXG73YyMjFBfX8/Q0BDf/va3C9MK2TTZp2k4t/IERV8VQQkJpNO49PJ/kz8Lr9dLMpkstxvFC0c0GuXgwYP4fD7C4TBzD1XjMoElWd6yAIqqqoTDYRYWFrbIgmC7kXE4KqKQz9mzZ3nnnXfKXsynqM92NBplcHCQsbExotEox44d4/Lly4XXTUlifgs7avu9XtoPHuS6CI4KnoN8W4DHkXA40GT7C4cdOtVDkcLR39+PaZqFXIq3337b0lqIhmHYpvaioDLYt28fZ8+eZWBggHA4zJ07d+jp6QHW63h+ePGDMnu4Oa5fv165wdHPq3Y2m7U0YJNMJvnkk08ssyeofPJ7PI4fP05zczN+v590Os3Zs2eZnp7G0A0wrNnGkMkUH5+zS8p5+TNJiiSbzZbbBUEF4fP5cLlcxGIxMpkMX/3qV6mtreXOnTt0dXWRTKWYGQXMLf5I6H5uX5st+s9ra2tL6EzxSOYm5au5uXmrfdk0+abTg4OD5XZFUCHIsozL5ULTNAAcDge6rqPrOrIsk8vl2LW7lX/2/3yJ1l0GDrXEAmJCOgmX3knwh/+fn7EWK66F6csvv8y5c+e2NDi6mSJZtswcfRaKotDY2CiEQ7BpDMPYUCH84RhZ/kM49GCK//H//J+pqQ2XvN6LaZrEomusrES/0Ic+L3zlpiKFI5VKEYvFnholFwiKIZ3OMD1l30ZfH3zwQdmXYqFChcM0TW7duoVpmvh8Pjo6OjBNk+HhYTKZDHV1dTQ0NKBpGoODg+i6TktLC+FwmHg8ztjYGJIksXPnTrxeL5FIhJmZGWRZZteuXTidTubn51lcXMTtdtPV1YUkSUxMTBCLxaiqqqKtrQ3TNBkZGSGVSlFdXU1zczO5XI7BwUEMw6C5uZnq6mqSySSjo6OYpklHRwd+v59YLMbExASKotDd3Y3D4WBhYYGFhQVcLhddXV3IsszU1BSrq6t4vV46OzsxTZPBwUGy2ewGm8PDw2iaRkNDA3V1dWQyGYaGhjBNk87OzkI7gLzNzs5OXC4Xy8vLzM7O4nA46O7uRlGUwnnmry1QOM9gMMiOHTswDIPBwUFyuVzhPNPpNCMjIxiGQXt7O4FAgEQiwejoKJIk0dXVVag0vrCwgKqqdHV14XA4mJ6eZmVlZcP1Hh0dJZFIEA6HaWlpQdd1hoeHyWazhfPM5XIMDQ2h6zo7duwgGAyytrbG+Pg4kiTR2dmJx+MpnKeiKOzatQtVVZmdnWV5eRmPx0NXVxemaTI+Pk48Ht9wniMjI6TTaWpra2lsbCSbzTI4OIhpmrS2thIKhUgkEoU2Czt37sTn87G6usrU1NSGazs3N8fS0hJut5vOzk5kWWZycpJoNIrf76ejo2PDtc3bzD/LmUymvB++T6lI4YCNHbfj8TiGYRSGcdlslng8TjabLSxdpdNp4vH4huFqOp3GMIzCzZAkiWQySTabLQRfDcMgHo8DFI7L79o1TbNgM5fLEY/H0TSt4Fv+d+lPs1wlSSq8R96P/G5gRVEKv8vbfPh4XdcLNvPnpOv6IzY1TSuce/53yWQSwzBIJBIFm8lkklwuV8hCzF9HRVEK55T342Gb+d8ZhlH4XSaTKZxn/nepVApJkh6xqWnahsB2MplEkqQNU4f89c5/s+avo67rBd/yNh++x6lUasN1zN9jXdcfuccPb5o0DIO1tbXCs/PwPX7cc/Wwr/nfpVKpQsX0dDqNaZqF+56/ZoqiPPK7h+9x/t4ZhlG4d/n7nkwmbTW6rsjgqEAg2Do2Exyt2OVYgUBQPoRwCASC50YIh0AgeG6EcAgEgudGCIdAIHhuhHAIBILnRgiHQCB4boRwCASC50YIh0AgeG42nTkqEAgEecSIQyAQPDdCOAQCwXMjhEMgEDw3QjgEAsFzI4RDIBA8N0I4BALBcyOEQyAQPDdCOAQCwXMjhEMgEDw3/39QUlK0uJvtSwAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('line8.png')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "6dffee97-669a-4c03-a506-55c8ebbe0be1", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAARMAAAGFCAYAAADelhfmAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAABTxUlEQVR4nO3deZhU13ng/++5t5auqt7oDdRA0w3d7IhV7KsAocWSF0mO4rEzeTJxHNux4slMMv49zmTyWI4Tx5PEnomdOBMnTsayJ1JkWYsRSBYSiB2xNKAGmq2BBnrft1ruPb8/quqqu9VAd3HpLqT38zzQXdVV5566y1tnu+corbVGCCFukzHWGRBCfDhIMBFCuEKCiRDCFRJMhBCukGAihHCFBBMhhCskmAghXCHBRAjhCs9wXzh//vw7mQ8hxEgkxpraysS0baJTfGR8Yg56Zi7aD5ZhY2NiaANDa4hqvKfa6XnpNOalLhRqRJurrKy85WuGHUyEEOlFoVFY2IbCvBIh/A+V2FNDeGcVoSZlkuE30b0WkboedFU9sQvtmL0alayQjCye3JIEEyHuQlopLGXgtS1sbGKmgREG41Qv9qmLYNh0GwA2HstGaS8aDwYxlNbYyuVIggQTIe5KSoPHBjBA2Zi2haEttAKNAlvhtRWGVoBJ1ABD21gKknHE7XAy7GCSvB9QKYXcGyjE2NOGxsbA0B6U1lhKo3QyUmhAYyeCi9e2iVeMTECjsXH7Kh52MAmHwy5vWgjxYTLsYNLZ2Ynf77+TeRFC3MWGHUyUUgSDQed3IYTob8SD1iSQCCGGIiNghRCukGAihHDFHQ0mWmunG3mon/27mAc/3//fUO8XQqSXOz5ozTAMSkpK8Pl81NbW0tPT4/wt2f6itR7QFhMKhTAMg66uLufv/d/Tf8yLECI93NFgopQiEAjwuc99jlOnTrFu3Tr++Z//mVAoRCQSIRKJkJWVRV9fH0op+vr6yMjIYMaMGYRCIQBaWlo4e/YswWCQnp4eotGok7YQIn3c0WCSLHGEw2GuXLlCYWEh69atY8aMGXi9Xk6cOMHs2bPZu3cvCxYs4Gc/+xm/9mu/xunTp/F4PCxcuJCuri6mTp3KpEmTeOuttzhz5sydzLIQIkV3tM0kWXrIysrioYceYs+ePSxatIhwOEx7ezstLS0opbBtm2AwiGEYBINBlFLEYjHOnDnD7t27uXz5MoZhYNu2k660nQiRXu54AyxAY2MjP/nJT1i9ejUNDQ00NjZy7NgxWltbOXv2LEuWLEEpxerVq8nPz8eyLCZPnozWmpkzZ2JZFrW1tSxZssRJV6o5QqQXNdwV/SZOnEhubu6IL2LTNJk0aRKXL1+mrKyM1tZW52d3dzclJSVcuHABr9dLcXExLS0tNDU1MXXqVK5evUpJSQmdnZ3k5uZy7tw52tvbJZgIMcpOnjx5y9fc8WACN77juH9vTv/HQ71nqJ9CiNExnGAyqoPWBgeBoQJL/8eDXyuBRIj0NSqTIw0VKG72+Gbvl0AiRHqS4fRCCFdIMBFCuGJE1RwZ2yGEuJFhBxPbtmlvb7+TeRFC3MVGNNNaRkaGjD4V4iNmuJ0eIwom/f8JIUR/I2ozSQYRCSZCiMGkN0cI4QoJJkIIV0gwEUK4QoKJEMIVEkyEEK5w/UY/wzDIyspy5h1J8vl8+P1+Ojs7B7w+FAo5KwValkVraysAOTk5xGIxurq6yMzMxOv10tHRgW3bhEIh53FGRgbBYBCtNZZl0d7ejm3beL1eAoEAlmVh2za9vb0D8piXl0dnZyeRSMTJp8fjITs7m76+vgETXwN4vV5ycnKcaSg7OjoG/H3w+BvTNAkGg3R1deH3+wmFQs72BguFQvj9fjo6OojFYgPymZOTQzQapbu7G601pmmSl5dHa2srWmuys7Odv2dlZdHb2+vMk5vk9/vJysoC4qOYe3p68Hq9dHZ2DjlmKHkMATo6OlBKkZ2djW3bdHZ2kpmZSUZGBhBfNjYajZKdnU0kEqGnpwetNR6Ph1AoREdHx4BtJI9l8jiHQiF8Pp/z2Ofz4fV6nXRuNC1F/8f9n7uVO333+UgnO++fj/55S7qb7pR3NZhorZk4cSJf//rX+c//+T87F6RSikWLFrF27Vq+853vDNhZW7Zs4eMf/zjZ2dk0NDTw+7//+yxfvpzf/M3f5J/+6Z9oaWnhD//wD/F6vbz88sscOnSIP/7jPyYQCPD8888D8Nhjj5GTk0NtbS1/8Ad/QDQaZe7cuTz++ONcuXKF69ev8/LLLwPxi/ypp55iw4YN/MVf/AXnzp0D4hfQf/pP/4n169fT2dnJ17/+dRobG518lpWV8bWvfY2SkhK2bdvGX/3VX33gQux/4Ddv3szGjRv51re+xX/7b/+NkpISqqqq+Pa3vz1gUuzS0lLn8+zcuZN//Md/xLIsDMPgM5/5DA8//DCxWIxvfetb1NTU8IUvfIHy8nKeeeYZHnzwQbZs2UIsFuMv/uIv+I//8T/yL//yL5w6dWpAvubMmcPv/d7vEQwGCQaD/O3f/i2rVq3iT//0Tz9wDJVSPPDAA3zuc58D4Ac/+AH5+fk89dRTaK357ne/y7x589i8eTNFRUX84R/+ITk5OXzpS1/itdde48c//jFaa0pLS/nt3/5tvv71r2NZFgBz587l6aefZseOHfzbv/0bM2fO5Ktf/Sq7du3ipz/9qXMMPB4Pf/u3fztk3vx+Pw899BAQn8Fv3759TvrDoZRi+fLlnDp16o6M6FZK4fV6WbFiBXv37h3w5XAjmZmZzJ49m4MHDw543ufzYZrmgC/CdHbHSiYej4f777+fWbNmsX//fnw+HxUVFXzxi1/k4MGDHD58GK01L7/8Mtu2bePpp5+mvr6evLw8Pv/5z/O///f/5t133+UrX/kK+/btY//+/fyX//JfsG2bhoYG9u3bx/Lly/kf/+N/8Nprr/Ff/+t/5dy5c/j9fj75yU+ycOFCAoEAgUCA5cuXU1xczLZt28jPz+eBBx7gmWee4cKFC06+/X4/K1eu5Ic//CGf+9znmDJlCsuXL6e0tJRDhw5x6NAhvvOd7/Anf/In/PznPycjI4OHHnqIoqIiXn/99QFpTZo0id/7vd+jrq6O3t5evv/97xMIBHjmmWfIzs6mvLycJUuWcPLkSaZMmcL58+d57rnneOaZZ3jhhRdoampy0v/2t7/NypUreeihhzh37hzTpk3jW9/6Fr29vTz00EM888wzbNiwgS1btpCZmcnHPvYxli1bxksvveR821dWVvKlL32JBx98kBUrVtDW1kZpaSlf/OIXqays5MyZMzz88MOEQiG2bdvGo48+6qwi8Pjjj5Obm8vf/d3fMXHiRB555BH+/M//HIDy8nJqa2v54he/SG9vLzU1NXz6058mNzeX6upqJk2axO/8zu9w+vRpDh8+zNNPP80rr7zC66+/TiAQ4Ctf+Qrbt29n69atACxatIjPfvazTuAf/G2stcbr9ZKRkcGrr77KJz7xCaqrq9Fa09LSQmZmJpFIhGAwiN/vRylFXV0dubm5ZGRkoLWmrq6Ouro6IpEI+fn5ZGRkYFkWdXV1+P1+JkyYgGVZXL9+nVgshlKKrKws8vPzaWpqore3l3HjxjmlzpaWFrTWGIbBhAkT8Hg81NfXc/XqVQzDoKCgwCmhZWVl0dnZ6ZS229raKCgoQGvN+PHjMQyDoqIiMjIyqKurY8GCBYwbN47du3ejlCIvL8/JQ0FBAR6Ph2vXrqXNiPQ70mailGL27Nl84QtfoLe3l6997WsUFhZyzz33EIvFnG8zgFgsRjAYZM6cObz55pssWrSIyZMn86UvfYnPfvazNDc3s2DBAlauXEkgEKCqqoo5c+bwu7/7u+zevZtwOExWVhYVFRW8/fbbPPHEE6xatYr6+nonL4WFhYwbN46nn36azZs3M378eP74j/+YDRs2kJubS2FhIQAHDhzga1/7Gn6/nytXrpCbm4tlWXz5y1/G5/OxefNm8vLyuPfee9myZQuf/OQnmTx5Ml/+8pfJz8+nsLCQnJwcfud3fof33nuPaDSKbdvU1tYyYcIE6uvrycnJ4Y/+6I8IBoN89atfxev1MnPmTNavX08oFCIrK4uCggKCwSAdHR088MADVFRUEAqF2LJlCyUlJTzzzDPMmjWLjo4OHnzwQcrLywkEAk51atGiRTz11FPk5+dTUFDgTMa9YcMGfvnLXxKNRhk/fjyRSIQ/+IM/oLS0FI/Hw5QpU/j0pz9NU1MT69at495778Xv99PS0sL69euZNWsWgUCAzMxMNm/eTHFxMQUFBbS2tnL16lWWL1/O6tWraWlpcS6MSCTCV77yFef9n/70p/n93/99Zs2axbx58/jkJz/JV7/6VSZOnMjnP/959u3bN2Rxv7+MjAzKysoACIfDrF+/Hr/fz/z585k0aRIPPfQQs2fPZuPGjUyePJnHHnuM6dOnO6WpefPmkZ2dzcc//nEqKirYsmULRUVFbNmyhcmTJ7Nx40by8/OdbT3yyCNMnDiRRx99lMLCQp588klKSkp49NFHnepeYWEhGzduZPz48QQCARYtWsS4ceP41Kc+RVlZGZ/97GcpLS3l4YcfZsKECSxduhSv18uGDRswTROIV6UnT55MeXk5K1asIBgMEgqFyM3NdfLwsY99jLy8PD7xiU9QVFSUVre33LEG2LKyMs6dO8ezzz5LV1cXRUVFVFVV8bOf/QzbtsnNzXVeu2rVKi5evMjVq1cpKChg27Zt/PVf/zWPPPIIu3bt4s0336SiooLGxkamTp3K6dOn2bZtG6tXr8br9bJ27VrOnDlDfX09M2bM4JVXXmHv3r3OTn777bd54YUXKCoqori4mB//+Mc899xzfOYzn+GLX/wi3/nOd1i9ejVz5szhJz/5CUop5s2bx5w5c7jvvvucGfN/9KMf8Y1vfIMnn3ySxYsXk5ubS15eHs3NzXzhC1/gO9/5Dl/60pdYu3YtZWVlzJs3jyeffJLs7Gx+/dd/neeee47CwkIKCgooKyvj6tWr7Nixg3//939n2rRpdHZ2smzZMv7n//yffOpTn+Iv//Iv6ejooLS0lCtXrpCdnc33vvc99u7dy6OPPsq3v/1tenp6KC0t5fz580SjUV566SW2b9/OrFmz+O///b/zZ3/2Z0ycOJHy8nKysrI4cuQIAOfPn+enP/0pXV1dVFRUsHTpUsrLy8nIyOD73/8+Fy5coKKignPnzvFXf/VXXLt2jYqKCmpqamhra+PLX/4y1dXVrF27lsuXL1NdXU0wGORXv/oVzz33HFeuXOHKlSv87Gc/o7GxkYqKCo4fP843vvENFi9ezLJly6iqquIb3/gGCxYs4Omnn6aiooKKigo2btzIqlWrbjiJlmmazJkzh3PnztHd3Y1hGANu8wiHw+zfv58zZ86QmZlJT08PBw4c4MKFC+Tk5Div7+7uZv/+/Vy6dImioiICgQD79u2jvr4ew4hfGnl5ebS3t7Nnzx56e3vJycmhoaGBvXv30tXV5QST7u5uwuEwoVDIKdFAvCp28OBB52c0GsXj8dxwNHmyfSsYDHL9+nUuXbqE1pq2tjb27t1LJBIhFApx/fp1jh49imVZadOe4mo1JxgMsnjxYufb+LHHHuP+++8nMzOTlpYWFi9ezMaNG7Ft2ymC+/1+tmzZwr/+6786xc2lS5cydepUp6HzwoULPPjggzz//PNMmDCBWCxGa2sr06ZNIxAIsGnTJn74wx9iWRZNTU2sXLmStrY254QoKSkhNzeXq1evUl9fT0VFBU1NTbS2tvLd734XrTWBQIDf+q3forOzk76+PmbNmkV5eTkvvfQSDz/8MNnZ2UyfPp2ysjLa29s5d+4c+fn5vPDCC3R3d3PkyBFnqY7nn3+eWbNm8cQTT7Bnzx6+8IUv4PF4CIfDdHV10dTUxMsvv4xpmly/fp1QKMSDDz7IK6+8wgsvvMAvfvELLMsiEAjQ1NREV1cXO3bsYM6cOcyYMYOioiKam5udf52dnezZs4cNGzYwa9Ys5s+fz7Fjx3j22WeBeOkv2TbR3d2NUoqcnBzuv/9+MjIymD59Op2dnVy7ds1pZL1y5QqmabJ9+3ba29ud4vTrr7/O9OnTGTduHBMmTKC6uprx48ejtebatWusXLmS9vZ2TNMkFAqxbt06cnNzqaqqYvHixVRUVGAYBhcuXGD16tWUl5djmib//u//zj/8wz+wefNmJk+ezPHjxz9wfiW/HDo7O3njjTd45JFHqKqqAuIN9oWFhVy/ft1ZVjbZXtF/qdnBDbpaa2zbRmuNz+cjJyeHcePGAfELvbe3l+zsbHJycvD7/YTDYWfJleRPgEgkwq9+9SvWr1/P+PHjnef7vza5PcuyyMzMJD8/3+l88Hg8lJeXk5OTQ3V1NcXFxWitCQaD2LZNVlYW2dnZ+P3+AW1uQ32useJ6MJkzZw7PPvssBw8eZOLEiaxatYr/83/+D1VVVZSXl7NgwQL+5m/+xukNycnJ4b333qOyshKAXbt2UVxczPz58/ne975HOBxm06ZNPP/88/zqV78iNzeXcePGMWXKFH7wgx8QDAaprKx0Tqqf/exn/MZv/AaGYfDuu+9y+vRpPvaxj2FZFt///vfp7e3lc5/7HOPGjXMeQ/xk+OEPf8jGjRvZtWsXr7zyCrZtU1xczO7du8nMzGTdunVYlsVf//Vf09DQ4Fws27ZtIxqNorWmr6+PlpYWLMuioKCAWCxGVlYWra2tPPLII3z/+9/nn/7pn1i9ejWnT5/GNE02bdrEG2+8wdatW4nFYkSjUZRSTJo0iZkzZ/Jnf/Zn1NbW8nd/93f8+q//Ol1dXfz0pz+lpKSEGTNm8M1vfpPr16/zy1/+khUrVlBTU8MLL7xAOBwG4kX13t5etm/fjtaaK1eucOLECe677z7+1//6X1y9epXPfvaz9PT0cOXKFfLz81m5ciV/8zd/w6lTpygtLWXJkiV85zvf4eLFi2zatIl169Zx9OhRXnvtNVauXEk4HObUqVP8xm/8BqtXr2br1q0cOnSIFStW8Pd///fs2bOHYDDIypUr+cd//Efeeust/H4/q1at4p//+Z85fPgwlmWRl5dHbW2t0ws0+CKJRqNcvnyZtrY2Dh8+TEFBAceOHWPJkiVcv36drq4uLl++TCwWo6WlxXl9sq2tq6uLK1eu0Nvby+XLl7Esi/r6etra2jh69CgrV64kOzvbuUjb2tqorq5mzZo1nDp1isbGRq5cueLsx2TvXGZmJsuXL6ezs5OGhgYuX75Mb28vtbW1xGIxLl26hGVZXL58maamJpqbm5k7dy6nTp2io6PD6ayIxWIUFhY6bTvJ0uL58+dZs2YNJ06coLW1ldra2rQJIkkjmp0+GUVv9AFu1s011O83qu8N7vozDGPAIuZDvW+oxrqhutVu9HGHytNw3ner9w7ncyYXIhuczuDPPfiz36yL9EafYbjvT+Yp+Xv/PPZPa6h9c6PjPtTjG+2ToS6UVLZzs+0N/ltFRQX33HMPkyZN4qWXXqK7u/uGaQ/O03DO6RutsnCzNIa7v+606urqW77G1WAixN0oeQlkZmaSlZVFV1cXnZ2dcp73M5xgMiqz0wtxN+jq6qKrq2uss3HXkuH0QvDBdZrEyEnJRHzkybpM7pCSiRDCFRJMhBCukGAihHCFBBMhhCukAVaIO+BmgxRH+t6h3jec19xO+qmQYCKEi242BjTVu3uH877buXPYrWH5Us0RQrgyjYGUTIRwweCL0c05RoZ7j9jtpj/SKScHk2AihIv6X+zJ31OtRtzoRsqhHqcaAG50Y2sqJJgI4ZL+wSP5c/BzN3OjO9/7/22obaSa/uDnb3bX/HBIMBHCRcl5aj0edy6t5Pw2/YNFcqJpN9i2TTgcdqUBVoKJECm6UWnANE1nlr/b5fF4nAmYkqUGN9M3DINwOOxKj4705gjhgv5TQ97JbaRzmlIyEcJFQ82M53b6/d1O+rfbQDyY64tw3Ymp9280TeNwt5PKdHipbOd23nOzNNJl6j5xc6kMWBvOdJPDbRAdaorSm005ebP3psL1ksng+UKTdbtkg1GyMSm5lgvE1wsBnGn7bdt2/p5cFiA5yXKyYSsWi2EYhrOam2mazrKgybTg/dnBk/XM5LyqlmU5K+d5PB7nscfjcV4Ti8Wc7SXzZlmWs63Beey/XdM0icVizjeVaZrOQU1uL5lf27aJxWJOuoCz35KPk/lIPp9MdySr2Ql3jXR+26HeX1paSlFREQcPHhx2NelWF/2yZcuYMmUKWmvee+893nvvvdtOczhcDSZKKebOnYvH4+Ho0aMUFxczc+ZMOjs7KS4upq2tjf379xMKhZg7dy67du2itLSUe++9l+7ubk6cOEFZWRn79+9n+fLlXLhwgbVr1zqrxXV2drJ06VKam5t57733WLZsGdu3bycSibBlyxYqKytZt24dzc3NnD17lpKSEk6fPk1bWxtLliyhr6+PmTNn0tfXx/Hjx6murmbevHmUlZWhlOLNN99k/fr1xGIxGhoaaGlpYd68efT09HDq1CmmTJnCnj17uO+++6ipqWHWrFns2bPHWXOmubmZM2fOMH36dGKxGNXV1c5Kf/Pnz6e+vp558+ahlKK6uprc3FyKi4vxeDzs3r17wPo38+fPd5b+qK2tdRa3mjFjBoZhcPHiRTIyMtizZ48ElLvA4sWLKS4uHvBcTU0NFRUVPPbYY4wfP57GxkYOHDgwYAmNkUh+kX/sYx/jkUceAeLLu1ZVVblWlbkZ16s5fr+fRYsWcenSJRYvXoxSikgkwunTp7l69SrhcJj58+dTWlrKu+++S1FREXV1dRw5coTMzExn0urkgtY9PT0cPnyYRYsWcfbsWWprazl58iSxWIzx48ezcOFC6uvrKSsro6qqit7eXg4ePEh3dzdz585l9erV7Nixg2AwyJ49e/B6vTQ0NHD+/Hkgvm5PZWUlM2fOZNy4cXg8Hg4dOkR7eztz5syhvr6ew4cPk5ubSygUQilFMBjE4/GQmZlJLBZjz549ZGRkcPToUWzbZt68eezcudOZTzQQCFBQUABAc3Mz7777LhkZGSxYsICXX36ZiRMnsmDBAqLRKIZhOIuea62dZSNCoRC7du0iEong9Xo5ceIEa9eupaCgwFm9UKSvmTNnsmDBggHPmaaJUvEVJ9esWcPZs2c/sN7wYLe66S8ZUPqPT3G7beRGXK/m2LbNmTNn2LJlCxcvXnRWUCsvLycYDFJVVUVJSQn19fVMmzaNyspKFi9ezJYtWzhy5MgHPuz48ePZsmULO3bswO/3U1JSgm3bnDp1iuvXr1NQUEBRURE1NTUAjBs3jrlz53LmzBn6+vqora1lyZIlQ9ZBIX5AV61aRU9Pj7Pe7OzZs7l06RLHjx9n8eLFPPjggwMWhbrZAWlra+P48eNs3LiRY8eOUVNTQ1ZWFn19fc5KbFprp8svuaCYz+cjEokMSDsajXL69GmWL18+YFxBsjjc0NBAfn6+BJM0p7XmZz/7Gf/v//0/pk2b5qzlo7Vm2bJlPPfcc/zkJz9Ba51yqQRgypQpTrUpqbS0lNWrV1NdXU1DQ4MbH+eGXO8aVkpx9epVZ0FsiLcjVFVVcfr0aSZMmEA0GqWzs5OpU6fi8XiorKwkFosxbtw4srOzyc7OJhAIEIlEqKuro7KykvHjx6OU4sKFC1RWVhKNRrEsi/3793P06FH6+voAaGpq4vDhw86Kgckp+pOlisEsy3K+DYLBIH19fRw7dsxZ0e748ePOesbJVdWCwaDTdhIMBvH5fE56pmlSV1fHiRMnmDZt2oBt1dXVUVFRQVZWFkopAoEAhYWFlJWV0draimVZzrrIybEFly9fpqWlxVlOtf+3zu2ceGL0JNtGFi1axOc//3k2btxIUVERixcvxrIsTp8+zaJFiygvL7+tkoNSis9//vMsWbLEee7BBx/kySefHJWqsOslk8bGRnp6emhsbHQWAI9Go1RUVDBp0iRaWlrYuXMn7e3tzJ07l5KSEiZOnEhrayvnzp3D4/GwbNkyzp8/T1tbG5cuXeL06dNOu8rUqVNZsWIF7733nrM6mtbx5T2TS3uuXLmSmpoaamtriUQiTnuE1pr6+npnNUGAhoYG2tvbOXjwIHl5edTV1bFo0SJaW1tpbW2lrKyMjo4Ozp49i2EYLF261Flvt6enhxUrVtDQ0MDVq1fp6+sjEAiwZMkSDMPg2LFjAM6q9zU1NYRCIZYtW8bFixfZu3cv8+bNo6+vj8OHDztVRMMwOHr0KPn5+fT09PDuu+/S1dWF1pqWlpYBxeOzZ8+6fQjFHbBp0yZWrFjBpEmTqK6uZtGiRTz++OMDgsfJkyf57ne/O+ILP5nGpUuX+JM/+RO++c1vMnv2bLTW7N27l29+85s0Nze7+nmGzIebi3DdqCtqJI+Hlekb3AA1+DUj2c7t/v1mr1NKsXTpUs6dOzesgzqcbWVkZLBkyRL2798vDbBjaPB9OLZtEwgEnN635LlqmiamafLZz36WtrY2du3ahd/vp7Gx0UnLtu0PrCNs2/aAlQVhYCl7qDt+S0tL+eY3v0lLSwvf+MY3BmxjcNex1tpZf3rwch/9fx+zFf0G94vfqJ+7f4PQzd7zgUwP8Z7+gWy4aQ6+wWlwvoZ6/41ed6uxLMk2j8EX/lCvH84+SHZzx2IxGWcyhoYbTAoLCwmFQni9XlpbW3n44YeZMmUK//f//l8nrb6+Purq6gacR8MJJkONQ5kwYQLhcNip7g/1GreDyR0ZATv45L7RyX6jjN/sPbd6fypp3uh1t3r/4Nfd6H0wdBAZye/9JU8yaTO5OyileOqpp1i9ejVaa5577jm8Xi/r169nzpw5znE+ceIEf/7nf04sFhtx+kopHn/8ccrLy4d8zZEjR3j99ddv+7PcjAynHyWpVOeGk5aUStKf1pof/ehH/Ou//isA4XCYT3ziE7z00kv8y7/8i/O6WCx2yyprsjQx1HFvb2+nrq5uyBJue3v7LdO93XNJFi4X4jYMt5ozWEZGBoZhOFWMG305WJY1oJqjtSYUCjkjoYdTJe7/3htVcyBedU67ao4QHwU3u9/mVnp7e2+ZzkjuybmZkXz5304JRYKJEC4a7oU40jbBkT43kvSG0043HBJMhLiDUr3jfLgXtVvtcG6QYCKES/qPTO5/l/hI3j/4lo/k3ff9Je9YH+kdyv0lA1ayR9CNdlAJJkKk6EZjhCKRyAfmbXUjfYgHgXA4TCQScb1UcrsBRYKJELfhRiOe+z+XykV/ox6eoXpvUk1/qJ+3Q4KJELdpqHEdbjVqDt7OnUg/lQGjQ5FgIoTLbvfivlUD7J1M/3bSltnphUgzd3pQ6J0IJCDBRAhXDB6vcTemf7ukmiOEi9y84G/WAHun0r8dEkyESFNjVd1JlVRzhBCukGAihHCFBBMhhCskmAghXCHBRAjhCgkmQghXSDARQrhCgokQwhUSTIQQrpBgIoRwhQQTIYQrJJgIIVwhwUQI4QoJJkIIV0gwEUK4QoKJEMIVEkyEEK6QYCKEcIUEEyGEK8ZsDtjbWYVMCJF+Rr1korV2FgHyer3k5+c7f1NKkZ2dTSgUQinF+PHjKSsrw+fzOe8VQqSnMavmZGRk8NBDD7Fx40bnOZ/PxxNPPEFJSQnFxcWsW7eOadOmsXbt2g+sGzJ4tXghxNgas2BiGAZnz54lEok4gWLx4sUYRjxL5eXlHDt2jN27dzN+/Hi8Xi8+nw+/34/f78fr9d5yGUUhxOgZszaT7u5url+/zowZMwCYNGkSRUVFXLx4Eb/fTygUIhwOY1kWWms8Hg8zZswgEAjg8/mYM2cOP/jBDySgCJEmRj2YJFeMT/6eVFBQgGVZTJs2jfHjx9PS0kJmZiYejwetNdFolKNHjwIQDAZZtmzZB9IQQoydMSuZZGRksGjRIiZOnMiMGTM4evQoR48eZenSpbS3t9PW1samTZuYOnUqFy9eJBaLARI8hEhXox5MkqWSaDTKiRMnqKqqoqenx/n7iRMnsG2bSCTCK6+8gs/no7W1VaozQqS5MSmZKKWwbZvGxsYP/K23t9epCnV2dkpvjRB3iTFpMxnO88nHUhoR4u4gw+mFEK6QYCLEbUgMnUQ7v4/8/XrAbzqR2t1nzHpzhLhbORe/VmilUNomZvgwtJ1aekph6hgaUNiASvx+d5FgIkSKFBqNAd4MJq/4JEZ20W2kpDDsGA3H3qDv+lmMu7B0IsFEiBQZ2GitiHkzKVq8BVU8Y8RpxAOSIqZ8eGO9tNWeInr9FPEWiLurbCLBRIgRS1Z0FAobW5nElBczhctJA7ahMHQMEmnZGCjutlAiDbAfHlqjnda8RBOevo1mwcRUERrttA3erQ2DblOJ/WCpePAwdSzR1pHCHD2Ax1aYWhO/HE0MrVB34a6WksmHjNIKnfiG8xLB0iYjP8k1ChutvCgVBe1B321fk3eQxojvH+IBQKHRSqW8jzQ2CoWhkg2w8UbYu40Ekw8RpWw0JkbuBAKlCxNF5dR6GGxMDDtG14WD0NWBoW1sGUAIkOhp0Siteb9rOFGaGOEu0oN+xt2NlRwJJh8qmnhXZeaUOcz+tT8ibAZQOpZaWspLRriFo//4/9HXfRxTiibiFiSYfGioxLejRmMSM7zYhifedZlCWmAQMX0obYDSaG3E22AkpogbkGAyanRinJNyHscb2VKsayeK1Co+dgqFxtTxuna8R8DjpJ9SbpUmppLByHa6MOOfwejXuJtidFGg9MD3a+c5EvsktbSTjZdavb+PUclYOPKWTa0Y2CCqpN9iKBJMRpEi/g3vBA+VuEBT6gUwUNpGATYGpo5hKwOtNIa2UFiAEU8/hWtSaY1HW2hlobSJreI9PMqXRc6ctRimF8vQGKlGQjtGx+k9WN0diTKVTjRsJlshjESzZArdGirREK1sDB3/3SbZcBrDxsQkGg+4t0g/3hRt47MhZsQTvws7WkaFBJNRogFbeVBaYeooCpuY8iQu+pFTSgMWNgYoi5ihUIOiRrIUNNLLXfd7VzJWxEOexsrKp/yx38bKvIeYSqWnKM4I93Hy75/G7D6KjUFU+TF1jIjhx6OjKCziqacSrOK5VRpsZcZT8Bj48ktQhkEME4MYahjBBIgHVNuDYWhM28Jqr0P3daaQrw83CSajRGkS34ZebDx4TFDBcZh2ai338e5ImxgePD1NWMn7Qu5Um4aOl4ZspYgYXmzlQxH/5k+FR4dRxIgqE1PbeHUfShnYoVw8uo+Y8qK0iZlC+rYysCIdmNFuLAyUsiF7EnN/69sQyMZOBEH9gfA7NIWF1j60sjGtMNUvfo/u49tGnrEPOQkmo0QrsDAx7Rgx5cFXsYKZT34NjNSKzbYyMHQMM9bDmZ/8KZErpxKB6U6Jf9t7bRuPTSJ4RRMX5sDWk8G/v//u99OyjYz4b4kGY4WNyixk/u/8DTozFwtv/Oa3FEZvmXaE2pe/R2vlTpRKTvepISOEHciNj8FTycbqW+2z5F28nngVyQ5gJko7Ut0ZaEyCyY1mT+s/2fSNfGCyJK0HjH9QWoNSwzrSyRMq2YqpsO9445pWgNKYpoE3Kxfb8KZ0UnqSjZexCKYK4rHiD+/UCa6VRmMnbkAzsJRKtNt8sCp169+TLT0xUPEhW6BQpglZeZiZOSg8mCmObVF2jKgvJ37znLaxjeQ9MPGtJsfyDu80SeRNaww0VuL94oPGbA5YAL/fT25uLvX19ZimSUlJCX6/n4sXLxKJRJg4cSKhUIhLly7R19c3ZHoqs4Cs0rloZcZPc62xlTGs4mvylm9D21jRGD3nD6GsiCuf8wP5TPYwJAc3xbdMqrNSahS2MjDR8cbROxhIkluM39pmxJtKdSJ6pZRSvD1DaSP+Dzs+CjQ5ZF97QCUu/FR2kCYxHYAd743S9vuNu0qjEl8cw0lZ6eToVo2dzKuSGwuGMmZLXYRCIbZs2YLH4+H5558nEAhQUFBAfn4+eXl51NbWct9999HY2EhZWRnbt28fotSiCNxTwZxf/xNiHh9gE1NeDOxbnoTJIdA2Cg82Vst1Dn//K3i6Gu7UJ//AM05xe8Rp6Zs8Gk1qwI9hv8vpsh7GG1MddTvMnTKi1FPrGPvIGJO1hpM/jx8/TiQSQWtNV1cXhw4d4ty5c3i9XqZNm8bx48c5cOAA+fn5eL1egsEgoVCIUCiUWPlPo7Do9YSImD4s08Q2DGLKi2X4bvovZvixDC+W4SeiMuLDtGTy6rEnV+tda8waYHt6emhubh7wnGEYzJgxgyNHjrBgwQIikQi2baO1xufz8Wu/9mtOYMnOzgYUljLRKl6sjSofprbRahilY2VgaAtDWdjKxEqM0Rgo9UFZg8sOqXXSjow0CoqxlBa9OclG1VmzZtHd3U1dXR0dHR3k5OTQ2NiIbduEw2F+9KMfoZQiEAjwla98Jf5eNKaOgTKB5LiHWw/71okb4OI3Z9kkO0Lerw0nBkzpFG+6UolZuBLDr+KNvXf2cpdAIsbSmLWZZGRksHTpUiZNmsTs2bNpaGjg/vvvp6amhjlz5nDmzBm2bNnCtGnTOHfuHNFodIhlL+IjBZRWxPBgEE1u5aaXf/KuT524B0VpK96r0+9ij4+gBFRqg8oMrVGYidRs4oFO3JJExLvWmPXmRCIRDhw4wKFDhwiHw0SjUZ599lmUUoTDYbq7u3nxxRfxer10dg5vtOFwyw83LB8oI9FLbGJom4jyp9wAaCmIBzuDmAK/FUUlqmBCfBiN2Yp+Wmva2tqcxwCtra0DXtfb2+ssHToai3HpRNXGQuFBE7pnGiXrP41teEeclq082CqKzwZL93H5zeeI1V2AFIfPC5HuxnRFv+EEiNFd0U+jlIWtfNgKVE4RmfM3EjX9I07JsA1sM4rH8qLtLowDb6L0BSmZiA+ttGiATRfxCQ/N+B24ycUGtHJGeY4sMY3SJjFlYCYmCL4rJ/YUYpgkmPSjdDyYGNpCY8YHv6nUJgTSyZ4gZTlroEgoER9mMsuLEMIVEkyEEK6QYCKEcIUEEyGEKySYCCFcIcFECOEKCSZCCFdIMBFCuEKCiRDCFRJMhBCukGAihHCFBBMhhCskmAghXCHBRAjhirRa0Q9uvarf6E6WJIQYrjFbNwfiS1sEAgHncSAQICcnB8MwUEoRDAbJzc1NrJEjhEhnYzY7vdfrZdWqVYwbN45f/OIX5OTksGXLFsLhME1NTZw+fZpNmzYRiUS4du0aBw4cGO2sCiFGYMxKJqFQiN7eXuf56dOnU11dzbZt25gyZQrz5s3jxIkTbN++nalTp+LxvB/3lFKJ6s4dX2BXCDFMYzZtY1tbG9XV1dxzzz0AZGZmcuXKFaLRKLZtk5eXx4ULF4hE4guJe71eFi5cSDAYxO/3J6pHEkmESBdjutRF/3WHw+EwGRkZTgNrT08PGRkZGIaB1ppYLMbBgwcBCAaDLFiwAFmYVoj0MWa9OcnFyQsKCpg4cSIXL15k/fr15OTk0NLSwunTp1m+fDnjx4+noaGBaDQ6VEoST4RIE2NWzVFK0dPTw8GDB1FKce3aNXbu3ElmZibvvvsu4XAYy7IIBoPU1NSgtZZuYSHS2JhVc6LRKKdOnRrw/LVr14D3G2mvXr3q/C6BRIj0lpYr+o101T8hxNiT0WBCCFdIMBFCuEKCiRDCFRJMhBCukGAihHCFBBMhhCskmAghXCHBRAjhCgkmQghXSDARQrhCgokQwhUSTIQQrpBgIoRwhQQTIYQrJJgIIVwhwUQI4Yq0CCaDJ5cevKLfUM8JIdJLWgSTpMzMTIqKipw1crKzsyksLHQeS0ARIn2N2YTS/SmlyM7O5pFHHqGzs5P29nbOnDnDhg0b6OnpobW1ld27d0swESKNpUXJRGtNRkYGfX19vPfee/j9fqZPn05lZSVvvPEGJSUleL1eZw3i5M/4m8c270KIuLQomQC0trbi8/l4+OGHef3115k6dSqXL18mFouhtcbn8/Gbv/mb5Ofn4/V6CYVCyKI5QqSPtAkmxcXFNDQ08Pbbb7Ny5UpaW1sJBAKYponWmkgkwo9//GOUUgQCAX73d393rLMshOgnbYJJNBpl/Pjx2LZNd3c3Z8+eZc2aNUyaNInr168TjUadhbiSAUZW9BMifaRNMLl27RpvvfUWgUCAa9euEYlEePPNN53H0vgqRHpLi2CSXMi8vr4eeL8LuKGhYSyzJYQYgbQIJiCr+Alxt0uLrmEhxN1PgokQwhUSTIQQrpBgIoRwhQQTIYQrJJgIIVwhwUQI4QoJJkIIV0gwEUK4QoKJEMIVEkyEEK6QYCKEcIUEEyGEKySYCCFcIcFECOEKCSZCCFdIMBFCuCItgkly+U+tNR6PB8Mw0FpjmiZer3fAa4QQ6Sltpm0EmDx5MkuWLOGdd94hHA6zefNmvF4vJ0+epKqqaqyzJ4S4ibQomSTXwlm+fDlvv/02zc3NzJo1i5qaGrZt28a9997rLG8hpRMh0lNalEy01hQXF5Ofn8/GjRuprq4mLy+PU6dO0dPTg2EY+Hw+FixYQCAQICMjg2AwCChZHlSINJEWwQQgJyeHEydOcPLkSR577DGam5vxeDwopbBtm1gsxtGjRwEIBoMsXrx4jHMshOgvbYJJc3MzCxcuZMKECYTDYS5evMicOXMIBAJ0dnYSi8WwbRsAy7LeX9FPCJEW0iKYKKWora0lMzOTwsJC3nzzTdrb2/F4PGRlZbFz504nkHxgTR1ZYkeItJAWwQTipY333nvPeayU4sSJEwNeI4tzCZG+0qI3JykZLJLLhfZ/LIRIb2kTTAYHjhv9FEKkp2EHExnfIYS4mbQpmQgh7m4STIQQrpBgIoRwhQQTIYQrJJgIIVwhwUQI4QoJJkIIV0gwEUK4QoKJEMIVEkyEEK6QYCKEcIUEEyGEKySYCCFcIcFECOEKCSZCCFekRTDpv6KfaZrOin4ejwe/3z/gNUKI9JQ2c8ACGIbBAw88QHV1NY2NjTzwwAMopaiurqaysnKssyeEuIm0KJkkVVRUMH36dLxeL7NmzeLs2bO89tprzJo1y1nRTwiRntKmZJKTk8Ps2bM5fvw4ALm5uZw6dYq+vj4MwyAjI4OPf/zjjBs3Dq/XS25uLrKinxDpIy2CiVKKefPmkZmZyYQJE5g4cSIdHR14vV5nRb9oNMq2bdswTZNAIMB/+A//AYkkQqSPtAgmAAcOHODQoUMsXbqU9vZ2ent7mTdvHtnZ2bS1tRGJRGhubgbiy4NaloWswCVE+kibYBKLxQA4e/Ys4XCYjo4OTNMkMzOTXbt2Oe0lA5e80BJPhEgTaRNMIN79W1dXB8SDxunTp8c4R0KI4Uqr3pybLbQli3AJkd7SqmQCA4PG4AAiAUWI9JVWJRMhxN1LgokQwhUSTIQQrpBgIoRwhQQTIYQrJJgIIVwhwUQI4QoJJkIIV0gwEUK4QoKJEMIVEkyEEK6QYCKEcIUEEyGEKySYCCFcIcFECOEKCSZCCFekRTAZvFrfUKv3yYp+QqS3tJlpLRgMsmbNGjIzM9m7dy+tra3O48OHD3P58uWxzqIQ4ibSIpgopYhGo+zfv5/i4mLmzp1LQ0MDPT09nDhxgrVr13L16tXE8hZCiHSUFsFEa000GqW9vZ1p06bR3NzMhAkTOHPmDM3NzXi9Xnw+H2VlZWRkZDj/4m8e27wLIeLSIpgkhUIhysrK2LZtGwUFBc4E0sn2kitXrmAYBsFgkEgkgiyaI0T6SItgopTCMAzWrFlDdXU10WiUuro6pk6dSjQapa+vj0gkQl9fHwDRaBTbtsc410KI/tIimGitKSgoIDc3F7/fj8fjoaqqiry8PObPn8+ePXuc4CEr+gmRntIimADU19fzb//2bwO6f3fu3AkgXcJC3AXSYpxJ/7aR/s/1H1siC3AJkd7SpmQyVLCQFf2EuHukRclECHH3k2AihHCFBBMhhCskmAghXCHBRAjhCgkmQghXSDARQrhCgokQwhUSTIQQrpBgIoRwhQQTIYQrJJgIIVwhwUQI4QoJJkIIV0gwEUK44u4PJjIJm+NDMdvLh+JDfDSlXTBJzq6mtUYp9YEZ6oeXyIi2+IE3uRKf9FAPBz7p1nWTTKd/6nqoJ0co+VaV3MIH0nIvkt/5GHI7eXX53BjChyGGps1Ma4MFg0HWr19PIBDg6NGjXLhwYcjXKWw0BlqBoTXx+HjrQ640aKUwtIXGQKFB2RjawlZeDB3DxkSjhpXeABrAwFY2XltjY6CVDcqGRH5BgVaJfIws+fjlrVHY2MpAEV+cTCuN0goDjWXYGBpSmcNfaRJpKwxtg1bYhoGpE2kqhVIxsD0p5D2+gXheNZbSGNgobQAWNgoTDdoDWKldvEqBAoMY4MHCjH8OiB9ndPyYazv+YW/B1JqoMjGIYiuNQQxbKbw6Skx54+dditFbaUW/cP3+MdX6rgswaRVM+pc8Zs6cSUtLC+fOnWPTpk1cunRpyBX9bKUwiBK/eA1sTOfiuhmVuJjjh0xh48HGwHT+rjF1LL6NkR5WBYaOnxRRw8RjR+MXofbi0VFQNjYKrYzULkZAY6K0jaHjwckmHlS08qK14Xw2rfSIL0ilEie5JhFQDVRyXygThcbGBOXBVqmtsmgbClsZGNiAgdZ+wAQ8xJQ3Hix1/G8jFc+fQUx5MZ2ArdCY71/0WiWeu2Vi8bCtTJRtYdqgtQ+lTTQ2ljLRhoof0xSmFVVKoxMBxGOb8UB+l06gnlbBpL/CwkLOnDlDe3s7pmni9/tZtWoV2dnZzup+mx94AO890yiZYGMZ0USZxGJYhUYd/zaIf0NaWMEAEzasQfV1gDJBW2QUT2fieLCNVL7fLWylMHUUw7KZuGIJ0am5GAosDRkTZ3BPfi9ambdOakjxT6usGMUr7yNaUYShbGxtEiiZzYRCFQ8uwwisQzNRlkHxqvuwZoxHGTbYNjpUxNQJJnaGDcQS/0ZOxWKUrb6PaEsxhjKwtcIIZjG50EJn9MZfk1K5CpSOMXXRdLryNmMqA1trVGYepcVelM9KlLh0Iq4MoxSLjY0dD3y2ZsrSOfQUWRjKjpd6vH6mlIQwxqWWX41GYWFaUaYunUvPBEVdXR0nTpxIKb2xovQwGyKKi4sJhULxN93BiZ2T2XnggQc4d+4cV65c4cknn+TFF19kypQpZGRk4Pf7eeqpp3jxxRextSZm+AAwsVDo+DfQLdgoDGysxIkFGo8VxhvI5NGHH+aFn/+cmDJQykypuGmjgXipSeNB2TaZQZMHHvwYL/78xUTJxUSr1JqtVPIUVAambWFgMW/evZw8fgLbsLEIYKhoohidQv6VQmsVL0lh86knnmTrK6/QG+7DMrwokvstNUrreFVSeXj8ycd56eWfE4lEiZdO4sdQpVLFTLzD1Bam0jz+qSf5+csvE4v0YZk+QGMrA1PHSy/GsKrE8WqZHS+s4bGjoDWzZ83hfHU1sZhNzPDEi3Qjzmu8ZGzqGLbSaA1K20yeOJEXXniBaDSaFhOpV1dX3/I1aVUy6R/Xrl69Snl5OVprenp6CIfDnD59GoBAIMC6devYs2cPMcvCxEoUuxMn3zDW5tIYGFhYysTUFhYeDKIEs3JZvGA+u3fvAR1DK2M41eoPMLDR2odlxDC0QmlNZm428+YtYu/ud7AS9XbjNkq0yXYTS3kxiOExDd7ZswdNDMP2oFUMhhFYh6KVxtAKG4VSNitXrGLvvv109XQlgkiqJao4WxmgbbwKVq1cyf69B+jr6cHQiqihUNgYTjV0xLmPByLTy4oVa9m/dw+9fb1oPIn2jvgxj1eJb16a0ACKRCnPxLBJtHnZ2LaHdw8dIByNYmCl0vhFvDapnWp3PHWNWr0GuLtWZEirYJKklKK6upqcnBzKy8t55513BiwHqrWmo6Mj/loS7QfQ78gP59vGRqMSbQ7xUorGQFsWzS2tOI10yY2MkK0NUJbTtKYV2Jampbklsd34BZvil6+TqfcbEg26e/riiWkjnvYwG6OHTF3H90ByW80tLdi27TT9JreeKkW88dNG0dzSTLx91MBWyVYSlfh/5G0+yZwZ2qKppTFx7qhE+8z7xzyeh1vlM1F60GaiWpw8YIq+3u5EIIg/TuU8STa/Jk9dUNgaent7R57YGEu7ak7SUNnqv91AIEBPT49r+em/2JfH4yEajQ653dtJP5l2LJZaO8Ot0jdN02mkdusYJfeL1+slFovdkUXR7tQ+6Z92cv+7RWuNYRh3ZLXJZNpDL4k7Nu66as6NDN6ZyarPzdzoIN/qwGith11PvVXAG+r1wzmxU7lglVJYljWsz3ej998s7f7B1c30k/sk+ftQrxtqpcfh5Dt5LFPN96325c0u9pvleTjp27adFkFkJNI2mNzq5B7O+/uXBizLwrbtG56wqRy4wWnDjS+I/s8NN5B4PB5s2x5WkLhVurfK963SHMn+8Xg8aK2HVUoazn7pfyxN0xyQ9nDyfiv9S19up51M3+OJX2rDKYHdbUEkKW2DSar6fwP4fD5WrlxJUVERHR0d7Nixg0gkcttFda01Xq+XZcuWUVxcTGdnJ2+99RZ9fX23lWaS1+tlyZIlTJ48mZ6eHnbs2DGgJDbSbfRP2+PxsHDhQsrKyujr6+Ott96is7PztvZJ8r2maTJ//nzKy8uJRCK89dZbdHR03FYVI5m2YRjMnTuXmTNnEo1G2blzJy0tLa6lPWvWLObMmUMsFuOdd96hsbFxQIlipNtIvtcwDGbPns3s2bOJRqPs2rWL5ubm20o7XaXdcHq3eL1eHnjgAaLRKL/4xS8AmDBhAoZx+x/Z4/GwceNGDMPgpZdeoq+vj0mTJqVch+7/HsMwWLduHYFAgJdffpm2tjbKysowzdvrPUmmvWrVKvLy8nj55Zepr6+nvLzclX2ilGLZsmXcc889vPrqq9TU1DB9+vQBt0SMVP+LbfHixZSWlrJ161ZOnz7NrFmzME3TlQtx/vz5TJ8+nddee43jx48zb948pwR0O5RSLFy4kPLycrZu3UpVVRXz5s0b8NkG/343+9AGkxkzZhAOh9m/fz9+v5/8/HzC4TArV650Lp4R3e+ToLVm2rRpGIbBnj17ME2Te+65h66uLlavXu2chP3/jcSUKVMIhULs2rULgEmTJtHW1sbq1avxeDw3rH8PR3FxMfn5+ezYsQOtNSUlJTQ1NbF69Wq8Xq+Tdir5LioqYuLEibzxxhtEo1GmTp1KU1MTq1atwueLjwNKJW2lFPn5+UydOpXXX3+dvr4+KioqaGhoYMWKFWRkZHwg7ZFsIycnh5kzZ7J9+3Z6e3upqKigrq6OlStXkpGRkdq9YYnX5+bmUlFRwfbt2518NzY2UlhYSFZW1oemRJL0oavmJC+IvLw8rl27Rm5uLps2beL8+fOUlpaycOFCDMNg7969t2z4u5Fk2jk5Odx///1cvnyZSZMmsWDBAiftSCTivP5W6fcPEHl5eVy9epXMzEw2bNjAtWvXKCwsZMGCBXg8Hvbs2UM4HE5p3+Tk5FBXV0cgEGD9+vU0NzeTk5PDokWL8Pv97N27l2g0OiDvw6GUIicnh6amJvx+P2vXrqWrq4tgMMjixYsJBoPs3buXcDg84rS11mRnZ9Pa2orH42Ht2rVEIhE8Hg+LFy8mOzubvXv30tvbO2C/DPd4ZmZm0tbWhlKKdevWOQF70aJFZGZmsmfPHiKRSEpV2KysLFpbWzFNk9WrV6OUYsaMGUybNg2fz8fbb79Nc3PziNJMZx+6kknywq2srGTq1KmsW7eOQ4cO0dnZydSpU6mpqeHkyZNOIySMvM568uRJJk6cyIYNG6isrKSpqYmpU6dSW1vrDIFOpj3S9E+fPk1hYSGbNm3i1KlTXL9+nWnTplFfX09lZSWWZTkNnCN14cIFsrKyeOCBBzh//jyXLl2ioqKCpqYmjh49SiAQYPPmzWRmZo4oXa01ly5dwjRNHnzwQWprazlz5gzTpk2jra2No0eP4vF42Lx5M9nZ2SPO95UrV4jFYjz00EM0NTXx3nvvMW3aNLq6ujhy5AhaazZt2sS4ceNGfCzr6+vp6enh4YcfpqOjg+PHj1NWVkZHR4eT9v33309BQcGIS1TXr18nHA7z0EMP0d3dTTAY5OzZs7z66qtcv36dCRMmfGiqOPAhLpl0dHSwdetWAKd1PtndtnbtWvLy8qiqqmL//v0jaghTStHZ2clrr702oDvWsiwyMjJYvXo148aN4/z587zzzjvA+wHuZl2fyee7u7vZvn27kyZANBolJyeHFStWOCWXN998c9j5Tm67t7eXN954Y0DafX195OTkEIlEmD9/PqZpEgqF6OrqGtF+CYfD7NixY0Da4XCYoqIi+vr6mD17Nh6Ph8zMTKdRtn/+bpbvaDTKW2+9hWmaxGIxlFL09vZSUlJCT08PFRUV+Hw+MjMzaW1tvWVe+4vFYuzatcsZo5PcT/fccw+9vb1MnTqVQCBAVlYWzc3NI+6W3rlzJ6ZpUlFRQSAQ4OTJk+Tl5VFaWsr27dsJhUKEw2Fn23dz1edDF0zg/YM8uNvz9OnTeL1e5s2bh1KKCxcuMGnSJBobG0dU/O7ftpD8/dy5c3g8HioqKvD7/Zw4cWLAQK+bnSiDu0cHvz75rV9SUkIoFOLIkSMDBmONZJ8Mrvtfu3aNhoYG1q5dS05ODkeOHKGhoWHY+2KotJOfob6+nubmZifAHj9+nOvXrw/4nMNNGxjQRd7c3ExbW5vToHzmzBlqa2tTyncy7WR+GhsbaWlpYdmyZRQUFHD+/HlqampGXDJJSgZAgPLycu677z727t2LYRg89thj9PX18corrwyrSzqdpe0I2Dsh+VErKioYP3680wDp9/vZtm1byqNe++/CqVOnEo1GMU2TFStWUFdXx86dO51SUSrfPsn0S0tLnUFea9asobm5mR07djgX2UjSHnzYfT4fWVlZeDwe7rvvPnp7e9m1a9cHBn2lsl98Pp9TvVm6dCmxWIy3336bSCQyokFog9NOVlVzcnKIxWKsWLECwOmmTzW/SR6Ph9zcXKLRKMuXL8fj8fD222/T3d094HXDGSjo9Xq59957yc7O5uTJkzQ1NTF+/Hg2bNjAW2+9RV1d3YjSHG0fmhGwbhhclZgyZQpbt26ls7OTJ554goyMjAEXzkguzP7fzBcuXEApxYQJE1BKUVVV5Zykt1s/rqmpAeLTMxiGQVVV1YBvs5GcgIPHOUQiEZqbmwkEAvj9fq5evfqBAVapnuCRSISmpiYyMjLweDw0NzcPaPxORf8qUFNTEz6fD9M0aW1tHVHj983SjsViNDU1OT1dnZ2dTpDq/9rhpBeLxTh8+DBKKSZOnEhxcTFr1qxhx44dNDY2UlZWxsSJEzl37hz19fUjym+6+NA1wN5I/4O+ZMkSdu3aRVtbG3PnzqWzs5Nx48YxZ84cAoFAytswDIP8/HwmTJjAunXrePPNN2lsbGTChAnMnTvXKdmlmv/8/HwKCwvZuHEjO3fu5Nq1awQCAYLBYErjIvrvk2AwSCAQYNOmTVy4cIHKykoCgQAlJSUEg0Fg5F27yTEmyQC1YcMGrl+/zqFDh/D7/U61LRXJIBEIBPD5fKxfv56Wlhb27duHUgqfz+dsf7h5HjwmJpnvNWvW0NPTw549e9BaO2mnatKkSTz++OO88847NDU1sWLFChYsWEB9fT1r167F7/ff1vCCsfKRKZn0F4lEyMrKYtWqVdxzzz10dnayePFirl69yv33389rr72W0gFUSrF06VKmTJnCiy++6JwoEyZM4NKlS2zatIlXX3112MPjB6e9cOFCpk+fzssvv8y1a9fQWlNaWsqaNWs4cuQIhw8fHnGek5YsWUJ5eTnHjh2jsrKSyZMns2rVKhoaGli8eDFbt25NuUt64cKFzJw5k5MnT3L48GHuuece1q1bR0NDAzk5OWzdupXe3t6Uqn9z585l7ty5VFdXs3//fmzbZvz48axbt46enh62bduW0k2EyW7chQsXcuHCBfbs2YNlWRQUFLB+/Xqi0Shbt24dUdrJwHbo0CG01ti2zcyZM8nLy+OXv/wlhmFw3333YRjGbY0nGisfmZIJvP/NumfPHnJzc+ns7OTatWsAvPrqq5w6dYqsrKyUR7JalsXbb79NTU0N0WiUuXPnMm7cOF555RVOnTpFKBQa0GU8ErZts2vXLs6dO0c4HHaGaodCIWprazl+/HjKJ5/WmgMHDtDQ0EBTUxMFBQWsWbOGN954w+lFSbXEprXm3Xff5fr16zQ3N5Obm8uGDRt488032bFjB7Ztk5WVlVLaAMeOHaO2tpampianwT3ZZnX8+PGUGzW11pw4cYKamhqam5sH9Kwl0041SNm2zcGDB6mvr2fmzJns27cPgPXr11NbW8vChQt5+OGHKS4uTru2k5v5SDXAwgfv3XniiSd46aWXiMViPPDAA1y6dIkTJ07cVkOpaZoYhsHjjz/ufOtu3ryZ+vp6jhw5clt5NgyDjIwMCgsLKSwspKioiF/96ldOO8HtDF33eDwYhsHGjRuprq7mwoULzJ07l6lTp3L06FGny3twA+Rw8p5Me+3atc44lBkzZjB79mzeeOMNtNaEw+FhX6D994nH48E0TbKyspwxJ/v27aO2tpbCwkKnZNjW1gYMbx/1P5bJLm2tNRs3buTdd9+lpqYGv9+P1+slHA4P++7kwVasWEF2drYzwC3Ze3T16lVWrlzpnJuDL9PRvgaH0wD7kSqZDGZZFp2dncybN49HH32UhoYGTp48eVvFy+Q3j2VZdHR0MGfOHB599FHa29s5duxYSnXg/idOsmFw0aJFzJ49mzfffDPlE3mwWCxGNBolHA6TnZ3NihUrmD17Nn19fSxZsgTTNNm0adOI7hNK5j2ZdrKKuXTpUu69915+9atfUVRUxFNPPcXy5ctHnG4y7UgkwuzZs3nqqac4cOAAtbW1LFiwgHXr1jkB0u/3A8Nr9E22n1iWRSQSYfr06XzmM5/hyJEjXLx4Ea01+fn5fOpTn+L+++9P6eJOlghPnjzJW2+9hcfj4cyZM7z77rsD8uHGfVmj4SMXTPo3slmWxY4dO+js7GT37t0cPHjQ6cJN5eTo/x7btnnrrbdob29n//797Nu377YmLurfYxSJRNi2bZvTuzP4c6Wif/r79u3D6/XS09PDxYsX8Xq9vPrqq5w5c8Zp7B1p2sk2gIMHDzqf4ZVXXqGzs5NQKERjYyOHDx9OeSxHMt9VVVVEIhGmTZtGWVkZr7zyCu+9957T25OKZDtHZWWlE7iVUs7gvt27d99yKoeh0kwGq9raWjo7O8nNzaWqqor8/Hw2bNhAY2Mjn/jEJ/j4xz9OcXHxkJ87nXzkqjn99a/K3GqUaqrpw8gm9BlOereTxnC2kcyvYRg88cQTbNu2jb6+PjZt2pRyVa1/+hC/q3vSpElkZ2dTWlrq3MTXPw+p5Fsp5QwG2717N83NzaxZswbLsti9e/eIRvUOzkuylDB58mR8Ph9z585l+/btdHZ2jijN/mknGYbBypUrKSgowO/309bWRm5uLq+//jpZWVnMnTvX6RgYi+tPxpncwuCRp4OfuxPpu5XenTJ4G+3t7cybN4/x48dTX1/vVNVSzUv/rtoZM2YwefJknn322QG9ObdbcrMsi5aWFmbNmkVOTg7d3d1Ot26q6cL7I6onTZrE3LlzefbZZ51AkoqhSlahUAjDMHjkkUd49dVX6ezsZOHChc6gtnT+Iv9IBxNxY8m2n507d1JaWsr58+dpaGgYcXH+RmKxGDt27OC+++5z/QLRWrN3715KS0u5cOEC165du+2h6slAZNu2c1e4m18WySDY0dFBfn4+nZ2dRKNRVq5cSSAQcEpVbpee3fSRruaI9DDSqkc6uJNVTsMwWL58OcXFxVy7do1Dhw59IHiNNqnmiLTX/9s2Xb9xB7vTg8ksy2Lv3r3OXdJ3i49cb45IP3dLEOnvTua3f2/j3URKJmJMud1IPRruRGP9rbZ1N5CSiRDCFRJMhBCukGAihHCFBBMhhCskmAghXCHBRAjhipS7hvsP21GJRxqFGviHgS8UQow5fYPe5vi1m7iWk93fI0g39XEmWqGVwtAAETQGWsWDicKOZ1jHw8zd01MuxIefBgytsFX/AKLQysa04z9tPE4hYbhSDiYKC4WFTQCFgdYmWmliygRMDKWlUCJEGlLYGFpjKcP53VYAGgsfqAgGFlobIyoJpF7NUQqNF1uBYWaQN2sVyh9Amz5MLLqvncXu60RJs4wQaUWj0UaQ7CkV2EYGWDGUHaHt9D7sni5MbQB2otgy/GhyW9UcUxsYRLAy8pj4sS9ijpuEViZ+q5eLbz+H1XQJAyX1HCHSiMbC8o+jbMtTxDIKUCjMcCeVP7gM3ccxtCJmGCO+bFMvNqh40chSCrRGKxMDsJRJDA9ag6G1BBIh0ozSGm1rLDxYyoNCYRsmSlvYCmxlYmibkfae3NaNfkrFMDREMTC1ja0MDCwUGt2vYUcIkT40nnhVBxNTa2wUHm1jKYWhFVrplK7a2wgmiZ4arRPdSBo78ZPkFHroeO+OxBMh0od+fziHSl636v2hHVpp4uFkZBeutI4K8RGjiX/Ru02CiRDCFe4GEw30G+qinP9GkU7GXR1vGHYejeKoF53ctk7sE43ThDSKkuOS389P8tnRy8j7W7IT+yPesDeax+P949//3BjtPeFsfsBxGe08DN6Wm9t2daY1Rbwxx0q0nah+A+1HiwK0jg/tM7GI6QyUChOPm6OUDwWmtokoA6+OX0Yk9sboxhMDpW1n21Fl4NEWehT3RXwslImhIkRVAL8dJabi58Zo5kErjWETH6ltWBg63lUw0lGet5sPhSIGGPGcEMODwp0Z/4ebB60UaBX/9AqUVqgbjbEfAVeDiVYGWmlQFig7MULWw2jWprQiPppPQUwbaG0nTtvRrdFZKr49G7CJryRnj3pLdLz7Pqa8eHUEhRUf9ahHuXarNDYmNoqo4QHiAW1U94a2sZXCwgOJUAaQWr9FillQ8S9cpSximKDU+yNNRzEfSluY2sIpMSt3ykfuzgGrDUwdw7Q1lsogZmaCAmMUIy/E7zsw7PhFFG+eNrCN0R/c79EW8ZuX4rvZHuGIwttlaEB7MXU8mCniQU6p0Z2oWBE/Hj4dI2r44sFslG+3cO5FQWNqjTZU/MtvFPMACqU9KGIYGPHSgYph3cHYrmDgzbdAzPRgmf5+X7D6hjf/jYTrE0obaLTyMn7GfXjte7G8GS4esFsXjRU2HbWn8Ht9+O+Ziq0sDNsEbY7qiaOUputqDYHcbDzBAiARTIaVCXeqAEpplNVH8/njZE+cijczFwsPyh7OmTM4D7eRJ6VR3W001VYzoXw+ysiAlFJLPQ8GCtvQ2D0d9DQ1kD2xFNvwOm1ao0Ep0MRAaSINVwj3dJNdMgOtfIOy4F4VcKgjbWsLHetDewOJ+3LMG7xyZFwOJhor0epqGQZGoihnulYyGd4OVpYJpomhPYCJwkCpkY/ouz0WOlGUVImvBgM9zDE37uRTY6C0F2IaZXtB+zD75WdkeUgtT4k2eTQKbdmJUdHJtoqRpnk7+yW+TYMYaAul4pXv+HkxmrzYKJRloiyFwhcvPQw4JnfuPE2u+ZM8Lm5uzvVgojHw2FFaTu2DliugTBj1AwY9QNvF1BfYdi0fl8Y6B/Fzpqm1dqyzAUDdgatjnQUAeq6cGOssANBz/fToblDHA4rtC1BaVIodyE40AKdbm0k/WttgRzGVNaqt1UKIoTnrJWOAbTu9i241Qt+RYKKw442u2kYrc9R7UoQQQ3CqNcnxPomH6R1MeL9OLPf6CZFW3u9H63//Tbo1wDpTl6h+UzaO+jhDIcTN9BuFm7yxLw3bTJKZUvHW+8SzSoomQqQXpfpdqe5cn9KYIYRwhQQTIT5ikvcIuc3las7A26aSdw1Li4kQ6en9a3OoyZBGaULp+FxMNoYGW/kwsIkCYIIOJ4YOG/G7EaXJRIg0EsNWClPbxDBRWgM2NvG73C1tolSUkVZcbmPdHAXaBBXDE2mnYe8LxDLGoQwvHmXTV1OJ7mlHqdG9zVsIcXMaTdgToH7vC8RMP8qK4rX6MDvr47cXKAsbc8QTNyqdHBZ3C8XFxYRCofibVL/woG1srbFtA9uOzyepDROfsjGUcuaHFUKkB0Or+Oz0Gixto7SNYSiU8mAYMZSy0fhQ2nbuJauurr5luqmXTLROTEYbn5fCY+hEqSieufcH2yUDihAiLSiNMuJz1BuQqPIkhpoqD4oohrYYafvEbazoBzbxtYYVoA2FrRSG1iitsfEkpswfzelnhBA3F5/fJ9ngaqITy9SA146gtUHM8KKI3/E+Kg2wSg/uXNIk5x/SqMRMa0KI9NJ/3oGBfTnJ2QEVdkpTqqTeNawGP1QD/iaBRIg09YGLUznDON7/MfKLWAatCSFcIcFECOEK16cgUNJzI8Rdxbbjc5vc7rXrejAxTRPDiBd4hjmERQgxBpRSaK2JRqOuXKvurpuTyJgQ4qPnjs0BK4RIf242S7i7PKi0lwjxkSW9OUIIV0gwEUK4QoKJEMIVEkyEEK6QYCKEcIUEEyGEKySYCCFcIcFECHFTwx1qP+w5YIUQ4makZCKEcIUEEyGEKySYCCFcIcFECOEKCSZCCFdIMBFCuEKCiRDCFRJMhBCukGAihHDF/w9G/fI3o/dgJwAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('line8hist.jpg')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "8cb5df08-342e-4cfd-b65e-42a8528b6969", - "metadata": {}, - "source": [ - "## Line 16 nodes\n", - "![alt text](line16.png)" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "62827e5d-82f4-433e-80ea-7eecf1dedbfb", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('line16.png')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "a29b9882-972f-4f52-b4d2-0eb4d4ee866e", - "metadata": {}, - "source": [ - "eof" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 [Default]", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} From 4bd616349e63385c9e4cbbc3fbdef88d99ba5520 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Fri, 26 Jul 2024 22:48:34 +0200 Subject: [PATCH 79/83] Delete community/womanium/assignments/hw4-5.ipynb --- community/womanium/assignments/hw4-5.ipynb | 974 --------------------- 1 file changed, 974 deletions(-) delete mode 100644 community/womanium/assignments/hw4-5.ipynb diff --git a/community/womanium/assignments/hw4-5.ipynb b/community/womanium/assignments/hw4-5.ipynb deleted file mode 100644 index c1b26e85..00000000 --- a/community/womanium/assignments/hw4-5.ipynb +++ /dev/null @@ -1,974 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "b7f74e3a-7dae-4939-a2ef-0ff82d8eadd0", - "metadata": {}, - "source": [ - "\n", - "# Assignment 6.12 - womanium 2024\n" - ] - }, - { - "cell_type": "markdown", - "id": "adc17ffc-b892-4a94-bebb-4ba74d208a9e", - "metadata": { - "tags": [] - }, - "source": [ - "## Advanced Algorithms Design:\n", - "## Quantum random walk" - ] - }, - { - "cell_type": "markdown", - "id": "2060a234-6a10-453e-b4a2-7b644128c3e9", - "metadata": { - "tags": [] - }, - "source": [ - "Following the example of a quantum walk operator for the case of a circle with 4 nodes, a quantum walk operator is designed for the case of a line with 16 nodes.\n", - "\n", - "Using the file quantum_walk_circle_example.py as a template, both the case of a circle and of a line with 4, 8, and 16 nodes are implemented in this notebook.\n" - ] - }, - { - "cell_type": "markdown", - "id": "fe7f2080-a6eb-4aa5-8865-97aa9acd5c14", - "metadata": {}, - "source": [ - "## Environment and imports" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "fd9eebc7-b78b-4aa7-8614-fbd7dc07f452", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", - "qiskit-ibm-runtime 0.25.0 requires pydantic>=2.5.0, but you have pydantic 1.10.17 which is incompatible.\n", - "qc-grader 0.19.7 requires networkx==3.2.1, but you have networkx 2.8.8 which is incompatible.\u001b[0m\u001b[31m\n", - "\u001b[0mNote: you may need to restart the kernel to use updated packages.\n" - ] - } - ], - "source": [ - "%pip install -U -q classiq" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "202628d6-3fe3-47fa-8a15-04b7fd9716f4", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "from classiq import *" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "99432d7f-12fd-4a46-bbf0-cf3651c04076", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg" - ] - }, - { - "cell_type": "markdown", - "id": "59927721-34b7-49e8-8b88-6a75663aef7a", - "metadata": {}, - "source": [ - "## Implementation" - ] - }, - { - "cell_type": "markdown", - "id": "bbe3dfa3-2265-44af-b708-9a0ad189f5bf", - "metadata": {}, - "source": [ - "\n", - "## Common functions for circles or lines\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "425c8fd2-f8f5-409b-a569-d923819437c4", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Prepares the minus state (aux qubit) for the diffuzer oracle\n", - "@qfunc\n", - "def prepare_minus(x: QBit):\n", - " X(x)\n", - " H(x)\n", - "\n", - "# x: current node\n", - "@qfunc\n", - "def diffuzer_oracle(aux: Output[QNum],x:QNum):\n", - " aux^=(x!=0)\n", - "\n", - "# Zero diffuser using Grover's algorithm technique\n", - "# x: current node \n", - "@qfunc\n", - "def zero_diffuzer(x: QNum):\n", - " aux = QNum('aux')\n", - " allocate(1,aux)\n", - " within_apply(compute=lambda: prepare_minus(aux),\n", - " action=lambda: diffuzer_oracle)\n", - "\n", - "# non-zero probabilities for allowable transitions\n", - "# @qfunc\n", - "# def W_iteration\n", - "\n", - "# Iterates over all possible positions and applies \n", - "# the W_iteration for each position.\n", - "@qfunc \n", - "def W_operator(vertices:QNum, adjacent_vertices: QNum):\n", - " for i in range(num_nodes):\n", - " W_iteration(i,vertices,adjacent_vertices)\n", - "\n", - "# Edge oracle for checking adjacency of 2 vertices\n", - "#\n", - "#@qfunc\n", - "#def edge_oracle\n", - "\n", - "# Swaps the contents of two quantum registers: moves the walker\n", - "@qfunc \n", - "def bitwise_swap(x: QArray[QBit], y:QArray[QBit]):\n", - " repeat(count= x.len,\n", - " iteration= lambda i: SWAP(x[i],y[i]))\n", - "\n", - "# shift operator moving the walker if vertices adjacent\n", - "@qfunc \n", - "def S_operator(vertices:QNum, adjacent_vertices: QNum):\n", - " res = QNum('res')\n", - " edge_oracle(res,vertices,adjacent_vertices)\n", - " control(ctrl= res==1,\n", - " operand= lambda: bitwise_swap(vertices,adjacent_vertices))\n" - ] - }, - { - "cell_type": "markdown", - "id": "9761696b-cefe-4ea0-9c91-ebd33af62e22", - "metadata": {}, - "source": [ - "## Circle-specific functions\n", - "\n", - "Here we have the function W_iteration with the probability of 0.5 going in either direction.\n", - "\n", - "What is special about a random walk on a circle is that the node (0) and the node (num_nodes-1) are adjacent. This fact is taken care of in the function edge_oracle." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "5ab73e30-56fd-4028-bb13-e2f883a4e3ae", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "\n", - "# non-zero probabilities for allowable transitions\n", - "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", - " prob = [0] * num_nodes\n", - " prob[(i+1)% num_nodes]=0.5\n", - " prob[(i-1)% num_nodes]=0.5\n", - " print(f'State={i}, prob vec ={prob}')\n", - " \n", - " control(ctrl=vertices==i,\n", - " operand=lambda: within_apply(\n", - " compute= lambda: \n", - " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", - " action= lambda: \n", - " zero_diffuzer(adjacent_vertices)))\n", - " \n", - "# Edge oracle for checking adjacency of two vertices \n", - "@qfunc\n", - "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", - " diff = vertices - adjacent_vertices\n", - " mod = diff%num_nodes\n", - " res |= (mod == 1) | (mod == num_nodes-1)\n" - ] - }, - { - "cell_type": "markdown", - "id": "423cf377-1bc7-4637-855c-b82ced39cca9", - "metadata": {}, - "source": [ - "## Circle with 4 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "e39e695c-cc7d-4983-ba7b-2d076262a66b", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Circle with 4 Nodes \n", - "\n", - "# Size of the register required for the number of nodes\n", - "size = 2\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "a863aa31-dc65-4ad4-9985-4fca062ab269", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk operator function\n", - "# applies the W and S operators after initializing\n", - "# vertices\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "1427b784-9701-4338-aec2-5cb5566a6d32", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 0.5, 0, 0.5]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5]\n", - "State=3, prob vec =[0.5, 0, 0.5, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "22cec3d3-aef0-46c6-9de2-74ee40d81b96", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "write_qmod(qmod,\"random4\")" - ] - }, - { - "cell_type": "markdown", - "id": "0c9a5e9c-ed50-44d1-b9ed-665f96274a92", - "metadata": { - "tags": [] - }, - "source": [ - "## Circle with 8 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "a5063b48-425c-4d73-8d6e-8b575cc61be3", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Circle with 8 Nodes \n", - "\n", - "# Size of the register required for the number of nodes\n", - "size = 3\n", - "num_nodes = 8\n" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "d137cf61-e92b-46d4-870e-4d1fc021650c", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk operator function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "94168a88-cdb4-411c-a162-52adf0c622bb", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0.5]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=7, prob vec =[0.5, 0, 0, 0, 0, 0, 0.5, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "7458e3ac-0e87-49e2-9139-59ee31fc27f4", - "metadata": {}, - "source": [ - "## Circle with 16 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "7e7ad59c-80ca-4452-af10-883711c9b104", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Circle with 16 Nodes \n", - "\n", - "# Size of the register required for the number of nodes\n", - "size = 4\n", - "num_nodes = 16\n" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "d3444344-5117-4021-9d15-1476582bf61d", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "d30601d3-5b4f-4b23-af9d-f93d0a4f6777", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", - "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", - "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=15, prob vec =[0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "ccfdf941-9d91-402f-a200-ccc266f73e99", - "metadata": {}, - "source": [ - "## Line-specific functions\n", - "The function W_iteration defines the transition probabilities for a line. At the beginning and at the end of the line the walker can go only in one direction (probability = 1). For all other nodes the probability going in either direction is 0.5.\n", - "\n", - "Here the function edge_oracle just has to check whether the vertices are adjacent (distance = 1)." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "47e777d7-6527-4901-a034-951c624037e4", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "\n", - "# non-zero probabilities for allowable probabilities\n", - "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", - " prob = [0] * (num_nodes)\n", - " if i == 0:\n", - " prob[i + 1] = 1.0\n", - " elif i == (num_nodes) -1:\n", - " prob[i - 1] = 1.0\n", - " else:\n", - " prob[i - 1] = 0.5\n", - " prob[i + 1] = 0.5\n", - " print(f'State={i}, prob vec ={prob}')\n", - " \n", - " control(ctrl=vertices==i,\n", - " operand=lambda: within_apply(\n", - " compute= lambda: \n", - " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", - " action= lambda: \n", - " zero_diffuzer(adjacent_vertices)))\n", - "\n", - "\n", - "# Edge oracle for checking adjacency of two vertices\n", - "@qfunc\n", - "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", - " diff = vertices - adjacent_vertices\n", - " res |= (diff == 1) | (diff == -1)\n" - ] - }, - { - "cell_type": "markdown", - "id": "07488d17-7cac-4e36-8335-e3303cff8efe", - "metadata": {}, - "source": [ - "## Line with 4 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "92d3f78c-ee23-45bf-acba-6d0ff0608847", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Line with 4 Nodes\n", - "\n", - "# Register size to accomodate the number of vertices\n", - "size = 2\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "613c61cc-10ea-4950-a262-3dd572c8701c", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "46fca7f3-3106-416d-a3f8-379f7095f8fa", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 1.0, 0, 0]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5]\n", - "State=3, prob vec =[0, 0, 1.0, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "9dd17d8c-83dd-463d-b155-9b8c949f97d1", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "write_qmod(qmod,\"random4\")" - ] - }, - { - "cell_type": "markdown", - "id": "cfbc239f-2bfb-496a-a752-1a84f657ac3f", - "metadata": { - "tags": [] - }, - "source": [ - "## Line with 8 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "08283335-a49f-4d6e-a702-fb76ab01724b", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Line with 8 Nodes\n", - "\n", - "# Register size to accomodate the number of vertices\n", - "size = 3\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "07a57ceb-c1da-47d7-8d6b-45e18667d747", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "fb711141-eadd-4ac5-bb1d-fbd31bb71f8f", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=7, prob vec =[0, 0, 0, 0, 0, 0, 1.0, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "7b486184-7850-4c58-baac-9e89a942e059", - "metadata": { - "tags": [] - }, - "source": [ - "## Line with 16 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "52ccbff2-f15f-4fe2-86fd-6e1d0128f428", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Line with 16 Nodes\n", - "\n", - "# Register size to accomodate the number of vertices\n", - "size = 4\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "e773bbb1-e532-477e-8891-c47f8f4f1f8d", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "c3833a55-49af-4214-be22-5b52eaa22ba6", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", - "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", - "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=15, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "4b28d548-febf-43b3-9271-6cab28fd2cbb", - "metadata": {}, - "source": [ - "# Results" - ] - }, - { - "cell_type": "markdown", - "id": "b7d6c2a8-063f-4ffe-bf3c-18212aa1d57f", - "metadata": { - "jp-MarkdownHeadingCollapsed": true, - "tags": [] - }, - "source": [ - "## Number of qubits vs. nodes\n", - "\n", - "| random walk | num_nodes | transpiled qubits |\n", - "| :- | :-: | :-: |\n", - "| circle | 4 | 13 |\n", - "| circle | 8 | 22|\n", - "| circle | 16 | 33 |\n", - "| line | 4 | 17 |\n", - "| line | 8 | 25 |\n", - "| line | 16 | 37 |\n", - "\n", - "Here we see that the more nodes we have, the more transpiled qubits are going to be used. Lines need more qubits than circles." - ] - }, - { - "cell_type": "markdown", - "id": "2d8f26a8-18aa-4dda-a3ed-a3974e0184b9", - "metadata": {}, - "source": [ - "## Circle 4 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "335019e0-e185-41d5-b894-6116ada649d6", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('circle4.png')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "6bd34621-0458-4a1b-ac69-62892bcba54c", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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zWj37t2EQiFqa2t56KGHeOqppxgZGWHVqlX5c9xisRjJZNJ3J4tffHJ+Z2cnTz75ZP53yHYrtLW18dxzzzE+Pp4/ipZMJn0XAoXr43kee/fuZdmyZRhjuPPOO3nzzTfp6OggFouxevVqXnrpJaLRKK7r5mdc8evnk0gk+O///m8aGxtpbGxk06ZNPPHEE4yNjbF+/XpSqRTpdDq/rZXLAaj5oDCbgcLxV57nYa2lvr6eM2fOMD4+TltbG3fffTfvv/8+Dz/8MI7jcP78eV5++WVSqZSvdhhgUk0rk8kQCoW46667sNbS2NjICy+8QDwe56abbuLGG28kk8lw8OBBDh065LtAK+R5HqdOnaKqqoqqqio6OzupqanhN3/zNzlx4gQ33ngjzc3NZDIZXn31Vfr6/DcxZKFkMkl3dzcbN26kp6eHeDzO2rVrueOOO/jggw947LHHMMbQ39/Pq6++mp/9wm/b23xTM3OGck1NyIZAT08P0WiUxx57jNtvv50PPviAbdu28f777/PEE08QiURoaWkpcamnVth0huyRtIMHD7J582b27dtHPB7PDwd49tlneeGFF7j55pvznex+U7g+uSmHTpw4wUMPPcSjjz6aH+ycSCR44oknOHjwIDfffDPg3yZnYSB1dnayYMECvvOd77Bjxw7279/Ptm3beOedd/j5z39ObW0tixcvLmFpS0s1szmKx+M8//zzVFdXk0wmefTRR3njjTc4fvw4NTU11NfXMzo6WjbfkqdPn+bnP/851dXVtLa2sn79ep566inGx8fZtGkT4+PjZdGUyYXTO++8Q21tLalUiq1bt+bPEgBoa2vj9OnTpSzmtBljGB8f57nnniMWi5FKpXjsscd49dVX6ejoYMGCBfkplqZ7PdmgUc1sDnIBlU6nGRwcJBqNYq2lvb09P4L78OHDDA4OltXGdfbsWdrb21m5ciWffvop8XictrY2brvtNt54442yCLPC2ubQ0FB+Hfbv348xhltvvZWamhoOHTpU4pJOT277SSaT+W0tnU7T1dWVb0Lv378/EPOrzZZqZrN08fRDxhhGRkZIJBLcfffdtLS0cPTo0fxIbb+bqubY0dHBHXfcwaJFi2hububFF1/0ff9SoYvnumtvb+f2228nHA6TyWTYvXt32Ux8efE0PSMjI2QyGe6++26WLFnCwYMH+fjjj6d8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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('circle4hist.jpg')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "5216c457-12f6-451e-92a8-d43c5a15e98f", - "metadata": {}, - "source": [ - "## Line 8 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "c6ebdc89-ba16-41c4-b623-7862a0ae29af", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('line8.png')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "6dffee97-669a-4c03-a506-55c8ebbe0be1", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('line8hist.jpg')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "8cb5df08-342e-4cfd-b65e-42a8528b6969", - "metadata": {}, - "source": [ - "## Line 16 nodes\n", - "![alt text](line16.png)" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "62827e5d-82f4-433e-80ea-7eecf1dedbfb", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('line16.png')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "a29b9882-972f-4f52-b4d2-0eb4d4ee866e", - "metadata": {}, - "source": [ - "eof" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 [Default]", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} From fb605d1a8435db036ebf5089a8c26e3bcaf791ea Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Fri, 26 Jul 2024 22:49:00 +0200 Subject: [PATCH 80/83] Delete community/womanium/assignments/Yasir_Mansour_hw4.ipynb --- .../assignments/Yasir_Mansour_hw4.ipynb | 1008 ----------------- 1 file changed, 1008 deletions(-) delete mode 100644 community/womanium/assignments/Yasir_Mansour_hw4.ipynb diff --git a/community/womanium/assignments/Yasir_Mansour_hw4.ipynb b/community/womanium/assignments/Yasir_Mansour_hw4.ipynb deleted file mode 100644 index c9eab530..00000000 --- a/community/womanium/assignments/Yasir_Mansour_hw4.ipynb +++ /dev/null @@ -1,1008 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "b7f74e3a-7dae-4939-a2ef-0ff82d8eadd0", - "metadata": {}, - "source": [ - "\n", - "# Assignment 6.12 - womanium 2024\n" - ] - }, - { - "cell_type": "markdown", - "id": "adc17ffc-b892-4a94-bebb-4ba74d208a9e", - "metadata": { - "tags": [] - }, - "source": [ - "## Advanced Algorithms Design\n", - "## _Quantum random walk_" - ] - }, - { - "cell_type": "markdown", - "id": "64b142e7-efbf-4205-bc87-112f21c69c09", - "metadata": { - "tags": [] - }, - "source": [ - "**Instructions - Final assignment**\n", - "\n", - "Follow the example from Bootcamp 4 for creating the quantum walk operator for the case of a circle with 4 nodes, and design the quantum walk operator for the case of a line with 16 nodes:\n" - ] - }, - { - "cell_type": "markdown", - "id": "7a7e4b5d-12fb-482f-9b59-b8bc4949854b", - "metadata": { - "tags": [] - }, - "source": [ - "**Tasks:**\n", - "\n", - "A.\n", - "\n", - "Create a well-detailed Python Jupyter notebook that explains your algorithm, including the code parts covered in class, and pictures/figures where relevant. \n", - "\n", - "Utilize the Python code from class: quantum_walk_circle_example.py. It can be found directly also in the Classiq Git Library in the community/womanium/assignments folder. \n", - "\n", - "Feel free to extend the example beyond the requirements here and what was covered in class.\n", - "\n", - "B.\n", - "\n", - "Contribute your notebook to the Classiq Git Library to the folder community/womanium/assignments. \n", - "\n", - "Follow the contribution guidelines in order to contribute - NO need to open an issue for this, you can directly open a PR.\n", - "\n", - "The PR title should be: Womanium Final Assignment . \n", - "The file name should be in the following format: __hw4.ipynb." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "fd9eebc7-b78b-4aa7-8614-fbd7dc07f452", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", - "qiskit-ibm-runtime 0.25.0 requires pydantic>=2.5.0, but you have pydantic 1.10.17 which is incompatible.\n", - "qc-grader 0.19.7 requires networkx==3.2.1, but you have networkx 2.8.8 which is incompatible.\u001b[0m\u001b[31m\n", - "\u001b[0mNote: you may need to restart the kernel to use updated packages.\n" - ] - } - ], - "source": [ - "%pip install -U -q classiq" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "202628d6-3fe3-47fa-8a15-04b7fd9716f4", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "from classiq import *" - ] - }, - { - "cell_type": "markdown", - "id": "9f608bac-c3eb-495e-9015-3e6396c7543c", - "metadata": { - "tags": [] - }, - "source": [ - "# Implementation\n", - "\n", - "Implementation of a quantum random walk on a circle/one-dimensional line graph with size num_nodes. The core components are:\n", - "\n", - "1. **Initialization**:\n", - " - Setting the number of nodes and the size of the register.\n", - "\n", - "2. **Quantum State Preparation**:\n", - " - The prepare_minus function prepares a quantum state by applying an X gate (bit-flip) followed by a Hadamard gate (superposition) to a qubit x.\n", - " - The diffuzer_oracle function modifies an auxiliary qubit based on whether x is non-zero.\n", - " - The zero_diffuzer function allocates an auxiliary qubit, prepares it in the minus state, and applies the diffuzer_oracle.\n", - "\n", - "3. **W Operator**:\n", - " - The W_iteration function computes probabilities for transitioning between adjacent vertices in a graph.\n", - "\n", - "4. **Edge Oracle**:\n", - " - The edge_oracle function checks whether vertices and adjacent_vertices are adjacent and sets the result in the output qubit res.\n", - "\n", - "5. **Bitwise Swap**:\n", - " - The bitwise_swap function swaps corresponding qubits between two arrays x and y.\n", - "\n", - "6. **S Operator**:\n", - " - The S_operator function applies the edge oracle and swaps qubits if the result is 1.\n", - "\n", - "7. **Main Function**:\n", - " - The main function allocates qubits for vertices and adjacent_vertices.\n", - " - It applies the W operator and S operator sequentially.\n", - "\n", - "In summary, this program simulates a quantum random walk on a graph, where the walker's position is represented by quantum states. \n", - "\n", - "The W operator updates the probabilities for transitioning between adjacent vertices, and the S operator performs a random step by applying an edge oracle to ensure vertex adjacency and swaps qubits accordingly.\n" - ] - }, - { - "cell_type": "markdown", - "id": "bbe3dfa3-2265-44af-b708-9a0ad189f5bf", - "metadata": {}, - "source": [ - "\n", - "## Common functions for circles or lines\n" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "425c8fd2-f8f5-409b-a569-d923819437c4", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Prepares the minus state (aux qubit) for the diffuzer oracle\n", - "@qfunc\n", - "def prepare_minus(x: QBit):\n", - " X(x)\n", - " H(x)\n", - "\n", - "# x: current node\n", - "@qfunc\n", - "def diffuzer_oracle(aux: Output[QNum],x:QNum):\n", - " aux^=(x!=0)\n", - "\n", - "# Zero diffuser using Grover's algorithm technique\n", - "# x: current node \n", - "@qfunc\n", - "def zero_diffuzer(x: QNum):\n", - " aux = QNum('aux')\n", - " allocate(1,aux)\n", - " within_apply(compute=lambda: prepare_minus(aux),\n", - " action=lambda: diffuzer_oracle)\n", - "\n", - "# non-zero probabilities for allowable transitions\n", - "# @qfunc\n", - "# def W_iteration\n", - "\n", - "# Iterates over all possible positions and applies \n", - "# the W_iteration for each position.\n", - "@qfunc \n", - "def W_operator(vertices:QNum, adjacent_vertices: QNum):\n", - " for i in range(num_nodes):\n", - " W_iteration(i,vertices,adjacent_vertices)\n", - "\n", - "# Edge oracle for checking adjacency of 2 vertices\n", - "#\n", - "#@qfunc\n", - "#def edge_oracle\n", - "\n", - "# Swaps the contents of two quantum registers: moves the walker\n", - "@qfunc \n", - "def bitwise_swap(x: QArray[QBit], y:QArray[QBit]):\n", - " repeat(count= x.len,\n", - " iteration= lambda i: SWAP(x[i],y[i]))\n", - "\n", - "# shift operator moving the walker if vertices adjacent\n", - "@qfunc \n", - "def S_operator(vertices:QNum, adjacent_vertices: QNum):\n", - " res = QNum('res')\n", - " edge_oracle(res,vertices,adjacent_vertices)\n", - " control(ctrl= res==1,\n", - " operand= lambda: bitwise_swap(vertices,adjacent_vertices))\n" - ] - }, - { - "cell_type": "markdown", - "id": "9761696b-cefe-4ea0-9c91-ebd33af62e22", - "metadata": {}, - "source": [ - "## Circle-specific functions\n", - "\n", - "Here we have the function W_iteration with the probability of 0.5 going in either direction.\n", - "\n", - "What is special about a random walk on a circle is that the node (0) and the node (num_nodes-1) are adjacent. This fact is taken care of in the function edge_oracle." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "5ab73e30-56fd-4028-bb13-e2f883a4e3ae", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "\n", - "# non-zero probabilities for allowable transitions\n", - "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", - " prob = [0] * num_nodes\n", - " prob[(i+1)% num_nodes]=0.5\n", - " prob[(i-1)% num_nodes]=0.5\n", - " print(f'State={i}, prob vec ={prob}')\n", - " \n", - " control(ctrl=vertices==i,\n", - " operand=lambda: within_apply(\n", - " compute= lambda: \n", - " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", - " action= lambda: \n", - " zero_diffuzer(adjacent_vertices)))\n", - " \n", - "# Edge oracle for checking adjacency of two vertices \n", - "@qfunc\n", - "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", - " diff = vertices - adjacent_vertices\n", - " mod = diff%num_nodes\n", - " res |= (mod == 1) | (mod == num_nodes-1)\n" - ] - }, - { - "cell_type": "markdown", - "id": "423cf377-1bc7-4637-855c-b82ced39cca9", - "metadata": {}, - "source": [ - "## Circle with 4 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "e39e695c-cc7d-4983-ba7b-2d076262a66b", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Circle with 4 Nodes \n", - "\n", - "# Size of the register required for the number of nodes\n", - "size = 2\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "a863aa31-dc65-4ad4-9985-4fca062ab269", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk operator function\n", - "# applies the W and S operators after initializing\n", - "# vertices\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "1427b784-9701-4338-aec2-5cb5566a6d32", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 0.5, 0, 0.5]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5]\n", - "State=3, prob vec =[0.5, 0, 0.5, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "22cec3d3-aef0-46c6-9de2-74ee40d81b96", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "write_qmod(qmod,\"random4\")" - ] - }, - { - "cell_type": "markdown", - "id": "0c9a5e9c-ed50-44d1-b9ed-665f96274a92", - "metadata": {}, - "source": [ - "## Circle with 8 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "a5063b48-425c-4d73-8d6e-8b575cc61be3", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Circle with 8 Nodes \n", - "\n", - "# Size of the register required for the number of nodes\n", - "size = 3\n", - "num_nodes = 8\n" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "d137cf61-e92b-46d4-870e-4d1fc021650c", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk operator function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "94168a88-cdb4-411c-a162-52adf0c622bb", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0.5]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=7, prob vec =[0.5, 0, 0, 0, 0, 0, 0.5, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "7458e3ac-0e87-49e2-9139-59ee31fc27f4", - "metadata": {}, - "source": [ - "## Circle with 16 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "7e7ad59c-80ca-4452-af10-883711c9b104", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Circle with 16 Nodes \n", - "\n", - "# Size of the register required for the number of nodes\n", - "size = 4\n", - "num_nodes = 16\n" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "d3444344-5117-4021-9d15-1476582bf61d", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "d30601d3-5b4f-4b23-af9d-f93d0a4f6777", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", - "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", - "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=15, prob vec =[0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "ccfdf941-9d91-402f-a200-ccc266f73e99", - "metadata": {}, - "source": [ - "## Line-specific functions\n", - "The function W_iteration defines the transition probabilities for a line. At the beginning and at the end of the line the walker can go only in one direction (probability = 1). For all other nodes the probability going in either direction is 0.5.\n", - "\n", - "Here the function edge_oracle just has to check whether the vertices are adjacent (distance = 1)." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "47e777d7-6527-4901-a034-951c624037e4", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "\n", - "# non-zero probabilities for allowable probabilities\n", - "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", - " prob = [0] * (num_nodes)\n", - " if i == 0:\n", - " prob[i + 1] = 1.0\n", - " elif i == (num_nodes) -1:\n", - " prob[i - 1] = 1.0\n", - " else:\n", - " prob[i - 1] = 0.5\n", - " prob[i + 1] = 0.5\n", - " print(f'State={i}, prob vec ={prob}')\n", - " \n", - " control(ctrl=vertices==i,\n", - " operand=lambda: within_apply(\n", - " compute= lambda: \n", - " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", - " action= lambda: \n", - " zero_diffuzer(adjacent_vertices)))\n", - "\n", - "\n", - "# Edge oracle for checking adjacency of two vertices\n", - "@qfunc\n", - "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", - " diff = vertices - adjacent_vertices\n", - " res |= (diff == 1) | (diff == -1)\n" - ] - }, - { - "cell_type": "markdown", - "id": "07488d17-7cac-4e36-8335-e3303cff8efe", - "metadata": {}, - "source": [ - "## Line with 4 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "92d3f78c-ee23-45bf-acba-6d0ff0608847", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Line with 4 Nodes\n", - "\n", - "# Register size to accomodate the number of vertices\n", - "size = 2\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "613c61cc-10ea-4950-a262-3dd572c8701c", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "46fca7f3-3106-416d-a3f8-379f7095f8fa", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 1.0, 0, 0]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5]\n", - "State=3, prob vec =[0, 0, 1.0, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "9dd17d8c-83dd-463d-b155-9b8c949f97d1", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "write_qmod(qmod,\"random4\")" - ] - }, - { - "cell_type": "markdown", - "id": "cfbc239f-2bfb-496a-a752-1a84f657ac3f", - "metadata": {}, - "source": [ - "## Line with 8 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "08283335-a49f-4d6e-a702-fb76ab01724b", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Line with 8 Nodes\n", - "\n", - "# Register size to accomodate the number of vertices\n", - "size = 3\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "07a57ceb-c1da-47d7-8d6b-45e18667d747", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "fb711141-eadd-4ac5-bb1d-fbd31bb71f8f", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=7, prob vec =[0, 0, 0, 0, 0, 0, 1.0, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "7b486184-7850-4c58-baac-9e89a942e059", - "metadata": { - "tags": [] - }, - "source": [ - "## Line with 16 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "52ccbff2-f15f-4fe2-86fd-6e1d0128f428", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Line with 16 Nodes\n", - "\n", - "# Register size to accomodate the number of vertices\n", - "size = 4\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "e773bbb1-e532-477e-8891-c47f8f4f1f8d", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "c3833a55-49af-4214-be22-5b52eaa22ba6", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", - "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", - "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=15, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "4b28d548-febf-43b3-9271-6cab28fd2cbb", - "metadata": {}, - "source": [ - "# Results" - ] - }, - { - "cell_type": "markdown", - "id": "b7d6c2a8-063f-4ffe-bf3c-18212aa1d57f", - "metadata": { - "jp-MarkdownHeadingCollapsed": true, - "tags": [] - }, - "source": [ - "## Number of qubits vs. nodes\n", - "\n", - "| random walk | num_nodes | transpiled qubits |\n", - "| :- | :-: | :-: |\n", - "| circle | 4 | 13 |\n", - "| circle | 8 | 22|\n", - "| circle | 16 | 33 |\n", - "| line | 4 | 17 |\n", - "| line | 8 | 25 |\n", - "| line | 16 | 37 |\n", - "\n", - "Here we see that the more nodes we have, the more transpiled qubits are going to be used. Lines need more qubits than circles." - ] - }, - { - "cell_type": "markdown", - "id": "2d8f26a8-18aa-4dda-a3ed-a3974e0184b9", - "metadata": {}, - "source": [ - "## Circle 4 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "335019e0-e185-41d5-b894-6116ada649d6", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('circle4.png')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "id": "6bd34621-0458-4a1b-ac69-62892bcba54c", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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zWj37t2EQiFqa2t56KGHeOqppxgZGWHVqlX5c9xisRjJZNJ3J4tffHJ+Z2cnTz75ZP53yHYrtLW18dxzzzE+Pp4/ipZMJn0XAoXr43kee/fuZdmyZRhjuPPOO3nzzTfp6OggFouxevVqXnrpJaLRKK7r5mdc8evnk0gk+O///m8aGxtpbGxk06ZNPPHEE4yNjbF+/XpSqRTpdDq/rZXLAaj5oDCbgcLxV57nYa2lvr6eM2fOMD4+TltbG3fffTfvv/8+Dz/8MI7jcP78eV5++WVSqZSvdhhgUk0rk8kQCoW46667sNbS2NjICy+8QDwe56abbuLGG28kk8lw8OBBDh065LtAK+R5HqdOnaKqqoqqqio6OzupqanhN3/zNzlx4gQ33ngjzc3NZDIZXn31Vfr6/DcxZKFkMkl3dzcbN26kp6eHeDzO2rVrueOOO/jggw947LHHMMbQ39/Pq6++mp/9wm/b23xTM3OGck1NyIZAT08P0WiUxx57jNtvv50PPviAbdu28f777/PEE08QiURoaWkpcamnVth0huyRtIMHD7J582b27dtHPB7PDwd49tlneeGFF7j55pvznex+U7g+uSmHTpw4wUMPPcSjjz6aH+ycSCR44oknOHjwIDfffDPg3yZnYSB1dnayYMECvvOd77Bjxw7279/Ptm3beOedd/j5z39ObW0tixcvLmFpS0s1szmKx+M8//zzVFdXk0wmefTRR3njjTc4fvw4NTU11NfXMzo6WjbfkqdPn+bnP/851dXVtLa2sn79ep566inGx8fZtGkT4+PjZdGUyYXTO++8Q21tLalUiq1bt+bPEgBoa2vj9OnTpSzmtBljGB8f57nnniMWi5FKpXjsscd49dVX6ejoYMGCBfkplqZ7PdmgUc1sDnIBlU6nGRwcJBqNYq2lvb09P4L78OHDDA4OltXGdfbsWdrb21m5ciWffvop8XictrY2brvtNt54442yCLPC2ubQ0FB+Hfbv348xhltvvZWamhoOHTpU4pJOT277SSaT+W0tnU7T1dWVb0Lv378/EPOrzZZqZrN08fRDxhhGRkZIJBLcfffdtLS0cPTo0fxIbb+bqubY0dHBHXfcwaJFi2hububFF1/0ff9SoYvnumtvb+f2228nHA6TyWTYvXt32Ux8efE0PSMjI2QyGe6++26WLFnCwYMH+fjjj6d8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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('circle4hist.jpg')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "5216c457-12f6-451e-92a8-d43c5a15e98f", - "metadata": {}, - "source": [ - "## Line 8 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "id": "c6ebdc89-ba16-41c4-b623-7862a0ae29af", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('line8.png')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "id": "6dffee97-669a-4c03-a506-55c8ebbe0be1", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('line8hist.jpg')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "8cb5df08-342e-4cfd-b65e-42a8528b6969", - "metadata": {}, - "source": [ - "## Line 16 nodes\n", - "![alt text](line16.png)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "62827e5d-82f4-433e-80ea-7eecf1dedbfb", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('line16.png')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c2710a88-2fa4-456f-995b-faa3a499dc03", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 [Default]", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file From 1df369ef0c2f3c4d1c2bd04e037284f4dcfb1272 Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Fri, 26 Jul 2024 22:56:33 +0200 Subject: [PATCH 81/83] Add files via upload --- .../assignments/Yasir_Mansour_hw4.ipynb | 974 ++++++++++++++++++ 1 file changed, 974 insertions(+) create mode 100644 community/womanium/assignments/Yasir_Mansour_hw4.ipynb diff --git a/community/womanium/assignments/Yasir_Mansour_hw4.ipynb b/community/womanium/assignments/Yasir_Mansour_hw4.ipynb new file mode 100644 index 00000000..c1b26e85 --- /dev/null +++ b/community/womanium/assignments/Yasir_Mansour_hw4.ipynb @@ -0,0 +1,974 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "b7f74e3a-7dae-4939-a2ef-0ff82d8eadd0", + "metadata": {}, + "source": [ + "\n", + "# Assignment 6.12 - womanium 2024\n" + ] + }, + { + "cell_type": "markdown", + "id": "adc17ffc-b892-4a94-bebb-4ba74d208a9e", + "metadata": { + "tags": [] + }, + "source": [ + "## Advanced Algorithms Design:\n", + "## Quantum random walk" + ] + }, + { + "cell_type": "markdown", + "id": "2060a234-6a10-453e-b4a2-7b644128c3e9", + "metadata": { + "tags": [] + }, + "source": [ + "Following the example of a quantum walk operator for the case of a circle with 4 nodes, a quantum walk operator is designed for the case of a line with 16 nodes.\n", + "\n", + "Using the file quantum_walk_circle_example.py as a template, both the case of a circle and of a line with 4, 8, and 16 nodes are implemented in this notebook.\n" + ] + }, + { + "cell_type": "markdown", + "id": "fe7f2080-a6eb-4aa5-8865-97aa9acd5c14", + "metadata": {}, + "source": [ + "## Environment and imports" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "fd9eebc7-b78b-4aa7-8614-fbd7dc07f452", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", + "qiskit-ibm-runtime 0.25.0 requires pydantic>=2.5.0, but you have pydantic 1.10.17 which is incompatible.\n", + "qc-grader 0.19.7 requires networkx==3.2.1, but you have networkx 2.8.8 which is incompatible.\u001b[0m\u001b[31m\n", + "\u001b[0mNote: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install -U -q classiq" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "202628d6-3fe3-47fa-8a15-04b7fd9716f4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "from classiq import *" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "99432d7f-12fd-4a46-bbf0-cf3651c04076", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg" + ] + }, + { + "cell_type": "markdown", + "id": "59927721-34b7-49e8-8b88-6a75663aef7a", + "metadata": {}, + "source": [ + "## Implementation" + ] + }, + { + "cell_type": "markdown", + "id": "bbe3dfa3-2265-44af-b708-9a0ad189f5bf", + "metadata": {}, + "source": [ + "\n", + "## Common functions for circles or lines\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "425c8fd2-f8f5-409b-a569-d923819437c4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Prepares the minus state (aux qubit) for the diffuzer oracle\n", + "@qfunc\n", + "def prepare_minus(x: QBit):\n", + " X(x)\n", + " H(x)\n", + "\n", + "# x: current node\n", + "@qfunc\n", + "def diffuzer_oracle(aux: Output[QNum],x:QNum):\n", + " aux^=(x!=0)\n", + "\n", + "# Zero diffuser using Grover's algorithm technique\n", + "# x: current node \n", + "@qfunc\n", + "def zero_diffuzer(x: QNum):\n", + " aux = QNum('aux')\n", + " allocate(1,aux)\n", + " within_apply(compute=lambda: prepare_minus(aux),\n", + " action=lambda: diffuzer_oracle)\n", + "\n", + "# non-zero probabilities for allowable transitions\n", + "# @qfunc\n", + "# def W_iteration\n", + "\n", + "# Iterates over all possible positions and applies \n", + "# the W_iteration for each position.\n", + "@qfunc \n", + "def W_operator(vertices:QNum, adjacent_vertices: QNum):\n", + " for i in range(num_nodes):\n", + " W_iteration(i,vertices,adjacent_vertices)\n", + "\n", + "# Edge oracle for checking adjacency of 2 vertices\n", + "#\n", + "#@qfunc\n", + "#def edge_oracle\n", + "\n", + "# Swaps the contents of two quantum registers: moves the walker\n", + "@qfunc \n", + "def bitwise_swap(x: QArray[QBit], y:QArray[QBit]):\n", + " repeat(count= x.len,\n", + " iteration= lambda i: SWAP(x[i],y[i]))\n", + "\n", + "# shift operator moving the walker if vertices adjacent\n", + "@qfunc \n", + "def S_operator(vertices:QNum, adjacent_vertices: QNum):\n", + " res = QNum('res')\n", + " edge_oracle(res,vertices,adjacent_vertices)\n", + " control(ctrl= res==1,\n", + " operand= lambda: bitwise_swap(vertices,adjacent_vertices))\n" + ] + }, + { + "cell_type": "markdown", + "id": "9761696b-cefe-4ea0-9c91-ebd33af62e22", + "metadata": {}, + "source": [ + "## Circle-specific functions\n", + "\n", + "Here we have the function W_iteration with the probability of 0.5 going in either direction.\n", + "\n", + "What is special about a random walk on a circle is that the node (0) and the node (num_nodes-1) are adjacent. This fact is taken care of in the function edge_oracle." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "5ab73e30-56fd-4028-bb13-e2f883a4e3ae", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# non-zero probabilities for allowable transitions\n", + "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", + " prob = [0] * num_nodes\n", + " prob[(i+1)% num_nodes]=0.5\n", + " prob[(i-1)% num_nodes]=0.5\n", + " print(f'State={i}, prob vec ={prob}')\n", + " \n", + " control(ctrl=vertices==i,\n", + " operand=lambda: within_apply(\n", + " compute= lambda: \n", + " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", + " action= lambda: \n", + " zero_diffuzer(adjacent_vertices)))\n", + " \n", + "# Edge oracle for checking adjacency of two vertices \n", + "@qfunc\n", + "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", + " diff = vertices - adjacent_vertices\n", + " mod = diff%num_nodes\n", + " res |= (mod == 1) | (mod == num_nodes-1)\n" + ] + }, + { + "cell_type": "markdown", + "id": "423cf377-1bc7-4637-855c-b82ced39cca9", + "metadata": {}, + "source": [ + "## Circle with 4 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "e39e695c-cc7d-4983-ba7b-2d076262a66b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Circle with 4 Nodes \n", + "\n", + "# Size of the register required for the number of nodes\n", + "size = 2\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "a863aa31-dc65-4ad4-9985-4fca062ab269", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk operator function\n", + "# applies the W and S operators after initializing\n", + "# vertices\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "1427b784-9701-4338-aec2-5cb5566a6d32", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 0.5, 0, 0.5]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5]\n", + "State=3, prob vec =[0.5, 0, 0.5, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "22cec3d3-aef0-46c6-9de2-74ee40d81b96", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "write_qmod(qmod,\"random4\")" + ] + }, + { + "cell_type": "markdown", + "id": "0c9a5e9c-ed50-44d1-b9ed-665f96274a92", + "metadata": { + "tags": [] + }, + "source": [ + "## Circle with 8 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "a5063b48-425c-4d73-8d6e-8b575cc61be3", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Circle with 8 Nodes \n", + "\n", + "# Size of the register required for the number of nodes\n", + "size = 3\n", + "num_nodes = 8\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "d137cf61-e92b-46d4-870e-4d1fc021650c", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk operator function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "94168a88-cdb4-411c-a162-52adf0c622bb", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0.5]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=7, prob vec =[0.5, 0, 0, 0, 0, 0, 0.5, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "7458e3ac-0e87-49e2-9139-59ee31fc27f4", + "metadata": {}, + "source": [ + "## Circle with 16 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "7e7ad59c-80ca-4452-af10-883711c9b104", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Circle with 16 Nodes \n", + "\n", + "# Size of the register required for the number of nodes\n", + "size = 4\n", + "num_nodes = 16\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "d3444344-5117-4021-9d15-1476582bf61d", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "d30601d3-5b4f-4b23-af9d-f93d0a4f6777", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", + "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", + "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=15, prob vec =[0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "ccfdf941-9d91-402f-a200-ccc266f73e99", + "metadata": {}, + "source": [ + "## Line-specific functions\n", + "The function W_iteration defines the transition probabilities for a line. At the beginning and at the end of the line the walker can go only in one direction (probability = 1). For all other nodes the probability going in either direction is 0.5.\n", + "\n", + "Here the function edge_oracle just has to check whether the vertices are adjacent (distance = 1)." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "47e777d7-6527-4901-a034-951c624037e4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# non-zero probabilities for allowable probabilities\n", + "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", + " prob = [0] * (num_nodes)\n", + " if i == 0:\n", + " prob[i + 1] = 1.0\n", + " elif i == (num_nodes) -1:\n", + " prob[i - 1] = 1.0\n", + " else:\n", + " prob[i - 1] = 0.5\n", + " prob[i + 1] = 0.5\n", + " print(f'State={i}, prob vec ={prob}')\n", + " \n", + " control(ctrl=vertices==i,\n", + " operand=lambda: within_apply(\n", + " compute= lambda: \n", + " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", + " action= lambda: \n", + " zero_diffuzer(adjacent_vertices)))\n", + "\n", + "\n", + "# Edge oracle for checking adjacency of two vertices\n", + "@qfunc\n", + "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", + " diff = vertices - adjacent_vertices\n", + " res |= (diff == 1) | (diff == -1)\n" + ] + }, + { + "cell_type": "markdown", + "id": "07488d17-7cac-4e36-8335-e3303cff8efe", + "metadata": {}, + "source": [ + "## Line with 4 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "92d3f78c-ee23-45bf-acba-6d0ff0608847", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Line with 4 Nodes\n", + "\n", + "# Register size to accomodate the number of vertices\n", + "size = 2\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "613c61cc-10ea-4950-a262-3dd572c8701c", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "46fca7f3-3106-416d-a3f8-379f7095f8fa", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 1.0, 0, 0]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5]\n", + "State=3, prob vec =[0, 0, 1.0, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "9dd17d8c-83dd-463d-b155-9b8c949f97d1", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "write_qmod(qmod,\"random4\")" + ] + }, + { + "cell_type": "markdown", + "id": "cfbc239f-2bfb-496a-a752-1a84f657ac3f", + "metadata": { + "tags": [] + }, + "source": [ + "## Line with 8 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "08283335-a49f-4d6e-a702-fb76ab01724b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Line with 8 Nodes\n", + "\n", + "# Register size to accomodate the number of vertices\n", + "size = 3\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "07a57ceb-c1da-47d7-8d6b-45e18667d747", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "fb711141-eadd-4ac5-bb1d-fbd31bb71f8f", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 1.0, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "7b486184-7850-4c58-baac-9e89a942e059", + "metadata": { + "tags": [] + }, + "source": [ + "## Line with 16 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "52ccbff2-f15f-4fe2-86fd-6e1d0128f428", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Line with 16 Nodes\n", + "\n", + "# Register size to accomodate the number of vertices\n", + "size = 4\n", + "num_nodes = 2**size\n" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "e773bbb1-e532-477e-8891-c47f8f4f1f8d", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Main quantum walk function\n", + "@qfunc \n", + "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", + "\n", + " allocate(size,vertices)\n", + " hadamard_transform(vertices)\n", + " allocate(size,adjacent_vertices)\n", + "\n", + " W_operator(vertices,adjacent_vertices)\n", + " S_operator(vertices,adjacent_vertices)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "c3833a55-49af-4214-be22-5b52eaa22ba6", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", + "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", + "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", + "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", + "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", + "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", + "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", + "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", + "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", + "State=15, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0, 0]\n" + ] + } + ], + "source": [ + "qmod = create_model(main)\n", + "qprog = synthesize(qmod)\n", + "#show(qprog)" + ] + }, + { + "cell_type": "markdown", + "id": "4b28d548-febf-43b3-9271-6cab28fd2cbb", + "metadata": {}, + "source": [ + "# Results" + ] + }, + { + "cell_type": "markdown", + "id": "b7d6c2a8-063f-4ffe-bf3c-18212aa1d57f", + "metadata": { + "jp-MarkdownHeadingCollapsed": true, + "tags": [] + }, + "source": [ + "## Number of qubits vs. nodes\n", + "\n", + "| random walk | num_nodes | transpiled qubits |\n", + "| :- | :-: | :-: |\n", + "| circle | 4 | 13 |\n", + "| circle | 8 | 22|\n", + "| circle | 16 | 33 |\n", + "| line | 4 | 17 |\n", + "| line | 8 | 25 |\n", + "| line | 16 | 37 |\n", + "\n", + "Here we see that the more nodes we have, the more transpiled qubits are going to be used. Lines need more qubits than circles." + ] + }, + { + "cell_type": "markdown", + "id": "2d8f26a8-18aa-4dda-a3ed-a3974e0184b9", + "metadata": {}, + "source": [ + "## Circle 4 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "335019e0-e185-41d5-b894-6116ada649d6", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('circle4.png')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "6bd34621-0458-4a1b-ac69-62892bcba54c", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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zWj37t2EQiFqa2t56KGHeOqppxgZGWHVqlX5c9xisRjJZNJ3J4tffHJ+Z2cnTz75ZP53yHYrtLW18dxzzzE+Pp4/ipZMJn0XAoXr43kee/fuZdmyZRhjuPPOO3nzzTfp6OggFouxevVqXnrpJaLRKK7r5mdc8evnk0gk+O///m8aGxtpbGxk06ZNPPHEE4yNjbF+/XpSqRTpdDq/rZXLAaj5oDCbgcLxV57nYa2lvr6eM2fOMD4+TltbG3fffTfvv/8+Dz/8MI7jcP78eV5++WVSqZSvdhhgUk0rk8kQCoW46667sNbS2NjICy+8QDwe56abbuLGG28kk8lw8OBBDh065LtAK+R5HqdOnaKqqoqqqio6OzupqanhN3/zNzlx4gQ33ngjzc3NZDIZXn31Vfr6/DcxZKFkMkl3dzcbN26kp6eHeDzO2rVrueOOO/jggw947LHHMMbQ39/Pq6++mp/9wm/b23xTM3OGck1NyIZAT08P0WiUxx57jNtvv50PPviAbdu28f777/PEE08QiURoaWkpcamnVth0huyRtIMHD7J582b27dtHPB7PDwd49tlneeGFF7j55pvznex+U7g+uSmHTpw4wUMPPcSjjz6aH+ycSCR44oknOHjwIDfffDPg3yZnYSB1dnayYMECvvOd77Bjxw7279/Ptm3beOedd/j5z39ObW0tixcvLmFpS0s1szmKx+M8//zzVFdXk0wmefTRR3njjTc4fvw4NTU11NfXMzo6WjbfkqdPn+bnP/851dXVtLa2sn79ep566inGx8fZtGkT4+PjZdGUyYXTO++8Q21tLalUiq1bt+bPEgBoa2vj9OnTpSzmtBljGB8f57nnniMWi5FKpXjsscd49dVX6ejoYMGCBfkplqZ7PdmgUc1sDnIBlU6nGRwcJBqNYq2lvb09P4L78OHDDA4OltXGdfbsWdrb21m5ciWffvop8XictrY2brvtNt54442yCLPC2ubQ0FB+Hfbv348xhltvvZWamhoOHTpU4pJOT277SSaT+W0tnU7T1dWVb0Lv378/EPOrzZZqZrN08fRDxhhGRkZIJBLcfffdtLS0cPTo0fxIbb+bqubY0dHBHXfcwaJFi2hububFF1/0ff9SoYvnumtvb+f2228nHA6TyWTYvXt32Ux8efE0PSMjI2QyGe6++26WLFnCwYMH+fjjj6d8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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('circle4hist.jpg')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "5216c457-12f6-451e-92a8-d43c5a15e98f", + "metadata": {}, + "source": [ + "## Line 8 nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "c6ebdc89-ba16-41c4-b623-7862a0ae29af", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('line8.png')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "6dffee97-669a-4c03-a506-55c8ebbe0be1", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('line8hist.jpg')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "8cb5df08-342e-4cfd-b65e-42a8528b6969", + "metadata": {}, + "source": [ + "## Line 16 nodes\n", + "![alt text](line16.png)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "62827e5d-82f4-433e-80ea-7eecf1dedbfb", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "img = mpimg.imread('line16.png')\n", + "plt.imshow(img)\n", + "plt.axis('off') # Turn off axis numbers\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "a29b9882-972f-4f52-b4d2-0eb4d4ee866e", + "metadata": {}, + "source": [ + "eof" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 [Default]", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 39e0fe82688b4aac80f244073f750af1d2579b7b Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Fri, 26 Jul 2024 22:57:09 +0200 Subject: [PATCH 82/83] Delete community/womanium/assignments/hw4-5-6.ipynb --- community/womanium/assignments/hw4-5-6.ipynb | 987 ------------------- 1 file changed, 987 deletions(-) delete mode 100644 community/womanium/assignments/hw4-5-6.ipynb diff --git a/community/womanium/assignments/hw4-5-6.ipynb b/community/womanium/assignments/hw4-5-6.ipynb deleted file mode 100644 index 4d40b1cf..00000000 --- a/community/womanium/assignments/hw4-5-6.ipynb +++ /dev/null @@ -1,987 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "b7f74e3a-7dae-4939-a2ef-0ff82d8eadd0", - "metadata": {}, - "source": [ - "Assignment 6.12 womanium 2024" - ] - }, - { - "cell_type": "markdown", - "id": "adc17ffc-b892-4a94-bebb-4ba74d208a9e", - "metadata": { - "tags": [] - }, - "source": [ - "Advanced Algorithms Design: Quantum random walk" - ] - }, - { - "cell_type": "markdown", - "id": "2060a234-6a10-453e-b4a2-7b644128c3e9", - "metadata": { - "tags": [] - }, - "source": [ - "Following the example of a quantum walk operator for \n", - "the case of a circle with 4 nodes, a quantum walk \n", - "operator is designed for the case of a line with 16 \n", - "nodes.\n", - "\n", - "Using the file quantum_walk_circle_example.py as a \n", - "template, both the case of a circle and of a line with \n", - "4, 8, and 16 nodes are implemented in this notebook.\n" - ] - }, - { - "cell_type": "markdown", - "id": "fe7f2080-a6eb-4aa5-8865-97aa9acd5c14", - "metadata": {}, - "source": [ - "## Environment and imports" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "fd9eebc7-b78b-4aa7-8614-fbd7dc07f452", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", - "qiskit-ibm-runtime 0.25.0 requires pydantic>=2.5.0, but you have pydantic 1.10.17 which is incompatible.\n", - "qc-grader 0.19.7 requires networkx==3.2.1, but you have networkx 2.8.8 which is incompatible.\u001b[0m\u001b[31m\n", - "\u001b[0mNote: you may need to restart the kernel to use updated packages.\n" - ] - } - ], - "source": [ - "%pip install -U -q classiq" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "202628d6-3fe3-47fa-8a15-04b7fd9716f4", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "from classiq import *" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "99432d7f-12fd-4a46-bbf0-cf3651c04076", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg" - ] - }, - { - "cell_type": "markdown", - "id": "59927721-34b7-49e8-8b88-6a75663aef7a", - "metadata": {}, - "source": [ - "## Implementation" - ] - }, - { - "cell_type": "markdown", - "id": "bbe3dfa3-2265-44af-b708-9a0ad189f5bf", - "metadata": {}, - "source": [ - "\n", - "## Common functions for circles or lines\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "425c8fd2-f8f5-409b-a569-d923819437c4", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Prepares the minus state (aux qubit) for the diffuzer oracle\n", - "@qfunc\n", - "def prepare_minus(x: QBit):\n", - " X(x)\n", - " H(x)\n", - "\n", - "# x: current node\n", - "@qfunc\n", - "def diffuzer_oracle(aux: Output[QNum],x:QNum):\n", - " aux^=(x!=0)\n", - "\n", - "# Zero diffuser using Grover's algorithm technique\n", - "# x: current node \n", - "@qfunc\n", - "def zero_diffuzer(x: QNum):\n", - " aux = QNum('aux')\n", - " allocate(1,aux)\n", - " within_apply(compute=lambda: prepare_minus(aux),\n", - " action=lambda: diffuzer_oracle)\n", - "\n", - "# non-zero probabilities for allowable transitions\n", - "# @qfunc\n", - "# def W_iteration\n", - "\n", - "# Iterates over all possible positions and applies \n", - "# the W_iteration for each position.\n", - "@qfunc \n", - "def W_operator(vertices:QNum, adjacent_vertices: QNum):\n", - " for i in range(num_nodes):\n", - " W_iteration(i,vertices,adjacent_vertices)\n", - "\n", - "# Edge oracle for checking adjacency of 2 vertices\n", - "#\n", - "#@qfunc\n", - "#def edge_oracle\n", - "\n", - "# Swaps the contents of two quantum registers: moves the walker\n", - "@qfunc \n", - "def bitwise_swap(x: QArray[QBit], y:QArray[QBit]):\n", - " repeat(count= x.len,\n", - " iteration= lambda i: SWAP(x[i],y[i]))\n", - "\n", - "# shift operator moving the walker if vertices adjacent\n", - "@qfunc \n", - "def S_operator(vertices:QNum, adjacent_vertices: QNum):\n", - " res = QNum('res')\n", - " edge_oracle(res,vertices,adjacent_vertices)\n", - " control(ctrl= res==1,\n", - " operand= lambda: bitwise_swap(vertices,adjacent_vertices))\n" - ] - }, - { - "cell_type": "markdown", - "id": "9761696b-cefe-4ea0-9c91-ebd33af62e22", - "metadata": {}, - "source": [ - "## Circle-specific functions\n", - "\n", - "Here we have the function W_iteration with the \n", - "probability of 0.5 going in either direction.\n", - "\n", - "What is special about a random walk on a circle is that \n", - "the node (0) and the node (num_nodes-1) are adjacent. \n", - "This fact is taken care of in the function edge_oracle." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "5ab73e30-56fd-4028-bb13-e2f883a4e3ae", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "\n", - "# non-zero probabilities for allowable transitions\n", - "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", - " prob = [0] * num_nodes\n", - " prob[(i+1)% num_nodes]=0.5\n", - " prob[(i-1)% num_nodes]=0.5\n", - " print(f'State ={i}, prob vec ={prob}')\n", - " \n", - " control(ctrl=vertices==i,\n", - " operand=lambda: within_apply(\n", - " compute= lambda: \n", - " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", - " action= lambda: \n", - " zero_diffuzer(adjacent_vertices)))\n", - " \n", - "# Edge oracle for checking adjacency of two vertices \n", - "@qfunc\n", - "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", - " diff = vertices - adjacent_vertices\n", - " mod = diff%num_nodes\n", - " res |= (mod == 1) | (mod == num_nodes-1)\n" - ] - }, - { - "cell_type": "markdown", - "id": "423cf377-1bc7-4637-855c-b82ced39cca9", - "metadata": {}, - "source": [ - "## Circle with 4 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "e39e695c-cc7d-4983-ba7b-2d076262a66b", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Circle with 4 Nodes \n", - "\n", - "# Size of the register required for the number of nodes\n", - "size = 2\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "a863aa31-dc65-4ad4-9985-4fca062ab269", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk operator function\n", - "# applies the W and S operators after initializing\n", - "# vertices\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "1427b784-9701-4338-aec2-5cb5566a6d32", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 0.5, 0, 0.5]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5]\n", - "State=3, prob vec =[0.5, 0, 0.5, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "22cec3d3-aef0-46c6-9de2-74ee40d81b96", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "write_qmod(qmod,\"random4\")" - ] - }, - { - "cell_type": "markdown", - "id": "0c9a5e9c-ed50-44d1-b9ed-665f96274a92", - "metadata": { - "tags": [] - }, - "source": [ - "## Circle with 8 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "a5063b48-425c-4d73-8d6e-8b575cc61be3", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Circle with 8 Nodes \n", - "\n", - "# Size of the register required for the number of nodes\n", - "size = 3\n", - "num_nodes = 8\n" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "d137cf61-e92b-46d4-870e-4d1fc021650c", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk operator function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "94168a88-cdb4-411c-a162-52adf0c622bb", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0.5]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=7, prob vec =[0.5, 0, 0, 0, 0, 0, 0.5, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "7458e3ac-0e87-49e2-9139-59ee31fc27f4", - "metadata": {}, - "source": [ - "## Circle with 16 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "7e7ad59c-80ca-4452-af10-883711c9b104", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Circle with 16 Nodes \n", - "\n", - "# Size of the register required for the number of nodes\n", - "size = 4\n", - "num_nodes = 16\n" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "d3444344-5117-4021-9d15-1476582bf61d", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "d30601d3-5b4f-4b23-af9d-f93d0a4f6777", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", - "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", - "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=15, prob vec =[0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "ccfdf941-9d91-402f-a200-ccc266f73e99", - "metadata": {}, - "source": [ - "## Line-specific functions\n", - "The function W_iteration defines the transition \n", - "probabilities for a line. At the beginning and at the \n", - "end of the line the walker can go only in one direction \n", - "(probability = 1). For all other nodes the probability \n", - "going in either direction is 0.5.\n", - "\n", - "Here the function edge_oracle just has to check whether \n", - "the vertices are adjacent (distance = 1)." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "47e777d7-6527-4901-a034-951c624037e4", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "\n", - "# non-zero probabilities for allowable probabilities\n", - "def W_iteration(i:int,vertices: QNum, adjacent_vertices:QNum):\n", - " prob = [0] * (num_nodes)\n", - " if i == 0:\n", - " prob[i + 1] = 1.0\n", - " elif i == (num_nodes) -1:\n", - " prob[i - 1] = 1.0\n", - " else:\n", - " prob[i - 1] = 0.5\n", - " prob[i + 1] = 0.5\n", - " print(f'State ={i}, prob vec ={prob}')\n", - " \n", - " control(ctrl=vertices==i,\n", - " operand=lambda: within_apply(\n", - " compute= lambda: \n", - " inplace_prepare_state(probabilities=prob, bound=0.01, target=adjacent_vertices),\n", - " action= lambda: \n", - " zero_diffuzer(adjacent_vertices)))\n", - "\n", - "\n", - "# Edge oracle for checking adjacency of two vertices\n", - "@qfunc\n", - "def edge_oracle(res:Output[QBit], vertices: QNum, adjacent_vertices: QNum):\n", - " diff = vertices - adjacent_vertices\n", - " res |= (diff == 1) | (diff == -1)\n" - ] - }, - { - "cell_type": "markdown", - "id": "07488d17-7cac-4e36-8335-e3303cff8efe", - "metadata": {}, - "source": [ - "## Line with 4 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "92d3f78c-ee23-45bf-acba-6d0ff0608847", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Line with 4 Nodes\n", - "\n", - "# Register size to accomodate the number of vertices\n", - "size = 2\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "613c61cc-10ea-4950-a262-3dd572c8701c", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "46fca7f3-3106-416d-a3f8-379f7095f8fa", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 1.0, 0, 0]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5]\n", - "State=3, prob vec =[0, 0, 1.0, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "9dd17d8c-83dd-463d-b155-9b8c949f97d1", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "write_qmod(qmod,\"random4\")" - ] - }, - { - "cell_type": "markdown", - "id": "cfbc239f-2bfb-496a-a752-1a84f657ac3f", - "metadata": { - "tags": [] - }, - "source": [ - "## Line with 8 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "08283335-a49f-4d6e-a702-fb76ab01724b", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Line with 8 Nodes\n", - "\n", - "# Register size to accomodate the number of vertices\n", - "size = 3\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "07a57ceb-c1da-47d7-8d6b-45e18667d747", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "fb711141-eadd-4ac5-bb1d-fbd31bb71f8f", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=7, prob vec =[0, 0, 0, 0, 0, 0, 1.0, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "7b486184-7850-4c58-baac-9e89a942e059", - "metadata": { - "tags": [] - }, - "source": [ - "## Line with 16 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "52ccbff2-f15f-4fe2-86fd-6e1d0128f428", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Line with 16 Nodes\n", - "\n", - "# Register size to accomodate the number of vertices\n", - "size = 4\n", - "num_nodes = 2**size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "e773bbb1-e532-477e-8891-c47f8f4f1f8d", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Main quantum walk function\n", - "@qfunc \n", - "def main(vertices:Output[QNum], adjacent_vertices:Output[QNum]):\n", - "\n", - " allocate(size,vertices)\n", - " hadamard_transform(vertices)\n", - " allocate(size,adjacent_vertices)\n", - "\n", - " W_operator(vertices,adjacent_vertices)\n", - " S_operator(vertices,adjacent_vertices)" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "c3833a55-49af-4214-be22-5b52eaa22ba6", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "State=0, prob vec =[0, 1.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=1, prob vec =[0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=2, prob vec =[0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=3, prob vec =[0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=4, prob vec =[0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=5, prob vec =[0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=6, prob vec =[0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "State=7, prob vec =[0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 0]\n", - "State=8, prob vec =[0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0]\n", - "State=9, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0]\n", - "State=10, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0]\n", - "State=11, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0]\n", - "State=12, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0]\n", - "State=13, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0]\n", - "State=14, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5]\n", - "State=15, prob vec =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0, 0]\n" - ] - } - ], - "source": [ - "qmod = create_model(main)\n", - "qprog = synthesize(qmod)\n", - "#show(qprog)" - ] - }, - { - "cell_type": "markdown", - "id": "4b28d548-febf-43b3-9271-6cab28fd2cbb", - "metadata": {}, - "source": [ - "# Results" - ] - }, - { - "cell_type": "markdown", - "id": "b7d6c2a8-063f-4ffe-bf3c-18212aa1d57f", - "metadata": { - "jp-MarkdownHeadingCollapsed": true, - "tags": [] - }, - "source": [ - "## Number of qubits vs. nodes\n", - "\n", - "| random walk | num_nodes | transpiled qubits |\n", - "| :- | :-: | :-: |\n", - "| circle | 4 | 13 |\n", - "| circle | 8 | 22|\n", - "| circle | 16 | 33 |\n", - "| line | 4 | 17 |\n", - "| line | 8 | 25 |\n", - "| line | 16 | 37 |\n", - "\n", - "Here we see that the more nodes we have, the more \n", - "transpiled qubits are going to be used. Lines need more \n", - "qubits than circles." - ] - }, - { - "cell_type": "markdown", - "id": "2d8f26a8-18aa-4dda-a3ed-a3974e0184b9", - "metadata": {}, - "source": [ - "## Circle 4 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "335019e0-e185-41d5-b894-6116ada649d6", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('circle4.png')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "6bd34621-0458-4a1b-ac69-62892bcba54c", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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zWj37t2EQiFqa2t56KGHeOqppxgZGWHVqlX5c9xisRjJZNJ3J4tffHJ+Z2cnTz75ZP53yHYrtLW18dxzzzE+Pp4/ipZMJn0XAoXr43kee/fuZdmyZRhjuPPOO3nzzTfp6OggFouxevVqXnrpJaLRKK7r5mdc8evnk0gk+O///m8aGxtpbGxk06ZNPPHEE4yNjbF+/XpSqRTpdDq/rZXLAaj5oDCbgcLxV57nYa2lvr6eM2fOMD4+TltbG3fffTfvv/8+Dz/8MI7jcP78eV5++WVSqZSvdhhgUk0rk8kQCoW46667sNbS2NjICy+8QDwe56abbuLGG28kk8lw8OBBDh065LtAK+R5HqdOnaKqqoqqqio6OzupqanhN3/zNzlx4gQ33ngjzc3NZDIZXn31Vfr6/DcxZKFkMkl3dzcbN26kp6eHeDzO2rVrueOOO/jggw947LHHMMbQ39/Pq6++mp/9wm/b23xTM3OGck1NyIZAT08P0WiUxx57jNtvv50PPviAbdu28f777/PEE08QiURoaWkpcamnVth0huyRtIMHD7J582b27dtHPB7PDwd49tlneeGFF7j55pvznex+U7g+uSmHTpw4wUMPPcSjjz6aH+ycSCR44oknOHjwIDfffDPg3yZnYSB1dnayYMECvvOd77Bjxw7279/Ptm3beOedd/j5z39ObW0tixcvLmFpS0s1szmKx+M8//zzVFdXk0wmefTRR3njjTc4fvw4NTU11NfXMzo6WjbfkqdPn+bnP/851dXVtLa2sn79ep566inGx8fZtGkT4+PjZdGUyYXTO++8Q21tLalUiq1bt+bPEgBoa2vj9OnTpSzmtBljGB8f57nnniMWi5FKpXjsscd49dVX6ejoYMGCBfkplqZ7PdmgUc1sDnIBlU6nGRwcJBqNYq2lvb09P4L78OHDDA4OltXGdfbsWdrb21m5ciWffvop8XictrY2brvtNt54442yCLPC2ubQ0FB+Hfbv348xhltvvZWamhoOHTpU4pJOT277SSaT+W0tnU7T1dWVb0Lv378/EPOrzZZqZrN08fRDxhhGRkZIJBLcfffdtLS0cPTo0fxIbb+bqubY0dHBHXfcwaJFi2hububFF1/0ff9SoYvnumtvb+f2228nHA6TyWTYvXt32Ux8efE0PSMjI2QyGe6++26WLFnCwYMH+fjjj6d8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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('circle4hist.jpg')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "5216c457-12f6-451e-92a8-d43c5a15e98f", - "metadata": {}, - "source": [ - "## Line 8 nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "c6ebdc89-ba16-41c4-b623-7862a0ae29af", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('line8.png')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "6dffee97-669a-4c03-a506-55c8ebbe0be1", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('line8hist.jpg')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "8cb5df08-342e-4cfd-b65e-42a8528b6969", - "metadata": {}, - "source": [ - "## Line 16 nodes\n", - "![alt text](line16.png)" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "62827e5d-82f4-433e-80ea-7eecf1dedbfb", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAJgAAAGFCAYAAAAB/TrQAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAABB5klEQVR4nO29aYwk53nn+Y+IN94486isu6q7WeyD3WyS3bTYFCVKoih5RlyPvGtDMhYCPJ6BPy3gwR4Yw1/2ywALL9ar3Q/rwR4f5sPsruGBKVJDrOyxNRbZGlNqsnkXyW72fVVX15l15BWZGde7H7IjWNldR0RkvllZ1fEDCJDJiiMjnnzjjef9P/9HYIwxpKRwQtztE0jZ36QBlsKVNMBSuJIGWApX0gBL4UoaYClcSQMshStpgKVwhUT9w4mJCZ7nkbIHmZub2/Fv0hEshStpgKVwJQ2wFK6kAZbClciT/G7xoHhDEIRen0JKD+lpgAmCgG9+85v49re/jQ8//BBvvvkmPM/r5Smk9Bghqh6s0zQFYwxPP/00/uqv/gq5XA71eh1/9Ed/hLNnzyKXy8GyLACArusolUrIZDKwbRuu6yKTyaBUKiGbzQIAKpUKstksyuUyFEUBIQSVSgW5XA61Wg2iKEJVVZTL5XA/nufBMAyUSiWYpgnf99FoNNr2I4oiarVauB9CCGRZDo/XaDTAGAvP0TRNEELgui4IISiVStB1HQBgWRZyuRwqlQpkWQYhBNVqddPvms1m0Ww24XkeTNMM9+P7PprNZniOqqpC07Tw2NVqFZIkQVEUlMvl8Bx932/7rp7nwbbt8DpqmgZBEGBZFrLZLCqVSqIfel+lKQRBwNTUFNbX1/Huu+/i3r17eOKJJwAAkiRBEAQIggBJklonJooQRTH87JVXXsFrr72GV199Fd/5znfathFFsW0/oiiG+yGEtO0n2HfwaA4+kyQp3J4Q8tD5PHiOgiDge9/7Hl577TW89tpreOWVV8JjP7jvjdtsPMfgvDfb5sHvXygU8Od//ud4/fXX8ad/+qfIZDLhvrf7/pIktf3/jfve+L2D/+42PRnBhoeHMTU1hXw+jz/+4z/GyZMnMTMzgz/8wz/E1atXd5yHqaqK1157DY1GA4IgIJPV8Bev/U8QhO49Xl3Hx/m3b+PWjcVIf68oCl599dVwVBsazuP/ffV/BCKe093b6/j12atw3Z3/njGGH/3oR/iTP/kTnDt3Dt/61rfw6r//PzC39EWkbS9OL2L6w9sPzX8DTNOEYRhYXIz23QOijGA9mYMVCgVMTEzg+vXr+IM/+AOcOnUKFy9exMLCQqRJPmMMruuCUgoAGBoH/tkfayDU795JMuDbn5zBf/v7v0CzaUc6J8dxQCmFz3wURgX803+pQ1aiBZjbzONf/Vce3n37aqS/dxwHkiSBUgpCRPzmDylIVgcivCOVi0/jX/yggnuzxU3/f6PRgOu6kc4jLrHGRUVRcPToUZw8eRKjo6ORt7ty5Qr+9m//FhcvXsTy8jL+4R/+AfPz85G3bzab+PGPfwyJMEweFlF0fwpJdgGw7v0jMAyNSVA1JdI52baNH//4xyAyMHVMRdF9HYQ6kY8nURvD49GOBQB///d/j7/5D3+Dr3z1KNb9XwLadTD4kY5l5jxk88aW+xZFEYTwGWtiBZhhGDh9+jQmJydx9OjRWAdyHAcAQCnF5ORk7PTEu+++i7/4yZ9hVf7XINlbfZHe+OCDD/B//7s/wyr91yDZG9yOIwgCKpUKfvzjP8O1tf8NtvHXkGQ3xjUQth3oZFmGpmndONWHiBW2nudhdnYWjDHUarVEB3QcJ/azPkAQGIjMgD4IrgBBZCCyz/2cBEEAYwxE9iBKQKRnY0RqtVr4ZtttYgVYqVTCe++9F75NJUEURWiahkajkWj7lO5jGAYMw8DS0lLX953owcsY2/KNZCeCHFVK/+A4TuIn0k70fC2yk0dkCh983++Pt8huEEzyU/oHVVWRz+e57Ltna5GyLEMQBLiui7W1tV4dNiUCPCf5PRnBTpw4gRdeeAEHDhwA8LCiImV30TQNAwMDXPYdewQL3iDjTPSLxSIYY1hYWIAkSRgYGOA2qUyJj+d5YZ6y28QKsGw2izNnzkAURczNzeGLL3ZeCwNaAVYsfrlMEWUNK6V3OI4D3+/istsGYj0iCSEYGBgIR6EkyLKMsbGxRNum8MEwDAwODnLZd6wRzLIsnDt3DqIoJo543/e5TShTklGr1VCv17nsO1aANRoNLCwsdHRA3/e5fZmUZFBKoaoq1tfXu77vnufBuvGIdF0/fMHwNvx7AGMA8xl8j236MuJ7DJ7Hwr/dazDG4Pubv2Qx1r7SEuX7dbL0txMd58HiKiE9z8PCwkIiBaUgCgAYPn2/iJFxDY7DsLJYR2FYvX9RAUol+D5DveYiN0DRaHgQhC8vtEQElFZtqJoEmYqtQGPAoSMZCAJiqzs7uTEblaVR/16AgErJwc0rJTz9lUHMz9bgOj5EEbBtH7IsolZ1QYgAqkrI5SnyeQ2itPWxAmk6D1VrxwGWyWQinViQ2pBlGfl8HsvLy+FnwU1ijIXzu+D/bURVVAACDFPGvTs11KouNE3C3VtVZHIyqCJhYdaCqkkQJQFEFuD7rRFreaGOgWEFdsOHTEXYto/Smo3cAIXj+GjWPUgSQTabBfOFtnMK/j3Q3wef+b6feF1VQEtJmsvlNr1OgfzZdd3wM11X7kucBbgOw9J8HcsLdVRKNghp3YNsnmJlqY5MjsJftzEwqAACkMlk244VyKpd14Wu69B1PUwnbbwvwT148H5EnYN3HGClUmnHv9E0DYODgxAEAfPz8/B9f8ts/je/+c2w4ML3fRBCQAhBJpOB41QAEBx/Og8GAK3BB8CXahkWqHkYYNseRFEAkUUcPzUQfr5R6RJ+JABr861VhtJ6BZIk4ciRI8hmsyCEhMUTpVIJnueFAWDbTQA09nVjAMrlcngdxsbGMDQ0hGw2C9d1MTY2hvn5+bAww3VdLBcX4HouBkyC3/jaEJoNDyMTGuo1F4Ypt3+h+/8uCAC7v8w4OjqKQqEA3/dRKBRQLBbhOA40TYPv+/A8DzdudFfX1pOloieeeAKHDh3CzZs3MTs7u+1kstFo4IknnoBhGLh37x4OHTqEZrPZpoAVxO0FdAGqFu3rbbYv3/dx7Ngx6LoOQRBw69YtHDhwIPy1NxoNGIYBkcxGOsZOKIqCJ598Eoqi4M6dO/A8D1NTU1haWsJjjz3WejESWqOGIAiQiADdbI1amdz2Ac7uf5+TJ0/CNE2srq5ifX0dBw4cQKlUwmOPPYa1tTXour67ASZJEjKZDGRZhmVZkbPxFy9exN27d1GtViHLMsbHx3Hnzp1N/3Z6ehoXLlwAYwwDAwO4e/cubt68Cc/z8Hv/9Lk4p9sRjDH8/Oc/D+dJruvi008/DR+NQfXO93/4DIDO5UczMzOYnZ2FLMvhfCh4TL333ntgjEHVKIDhRPuvVMr42fs/gyRJ8H0/3Lcoivj444+hqmpbMrxbxAqwXC6Hl19+GfV6Haurq3jvvfcibee6LlZXVwG0fn3bpTpc1w2lIwsLC21/2+s1TM/z2uoFeRYJM8YeOt6DyFTq4ADt13Yjtm2H59BtYr02MMZgWVZYyJrogKIYFqem9AeGYWBkZITLvmNLpt988822gtS4CIIARYleTZPCn2azyW0tMlaA+b4fnkjS1XfXdbG8vJxo2xQ+tBK3fbDY3Q1SRWv/oarqQ/m4btFz+ybXdbGystLrw6Zsw55XtALtJh28jDZSkqFpGgqFApd992QEO3DgAEZHR+H7Pi5cuIB8Po9KpdKLQ6dEwPM8NJtNLvvuyVAiy3LoceU4Du7du9eLw6ZExHVdbgEWawTTdR3Hjh0DpRQLCwu4e/dupO1u3bqFO3fuwPd9yLKMkZGRNMj6CF3XYRhGx1q/zYgVYKqq4ujRo6EjYNQAA75cffd9H9VqNd5ZpnClb7wpHMfBlStXIAhCYm8Jxli4NJHSH/BUtMYKsEqlggsXLnR2QEIwMjKy5WL3drgun2RggOf53BKOXYExMD/+tNn3GTx/d8yWe54Hs20bs7PJJC4fnb+L21+MYnBU7KZ7EQDAc4G3/3YNtWr/1gtYVhPn/mMZ3/2dPCQSLdCYz3DpkyZmZ7bOPTabzf6oi+zKAQlBoVBIZBV06/oC/usfvQXd6L47j+f5KK1X+noE830f/9f/8i7+3b8xIq8F+z5DpVyDbW8dQIFH665P8rtBIEtJSq1WR63Wv6MMbzzPw+pK+aHPDcOApmmJNF2WZe3tPJgoiqCUIpvNwvf9NMnKgU5yWYQQbgqXngTYU089hd/6rd/Cc889FypaU7pLvwZY7Edk0NggjmnZnTt3UC6XwyKDOA7TKdHoJFlqWVZ/VHbn83m8+OKL8H0fCwsLmJ6ehsDYjsNgrVRC7X71ESUEWdPE6j5RVIgdyIw3duTolEajgWazmWh/SRoxRJVXxwowURShKAosywplz8O+j1yMi0wA5D0PxX3SBGso4eu9AGBkeASHDx/uynlomgZFURIlSwkhkCQJhrG1l/6DRH1RixVg1WoVZ8+ebeutsyRJiJtwkKpVeJyM/3kiCAKeeuopNJtNMMZAKcVKQn95BmBhcQHXrl3ryrmpqpo4Gy/Lclgp1m1i3WXbtjte5qGUYmxsDDMzMx3tZzcghODMmTNhnwBVVeEI/BowxMG27cTJUkVRoOv67gdYN3AcZ89q8h3Hweuvvw7f9yFJEhzHwW//3qndPi0AX3rdJ5nk981idzcQRRGyLO9ZC6cHlSD94jdrWVZiAYKmaaE3RbfpuXZZFMWwsWhK9yCEJO435Lout84rPRnBcrkcxsfHYds2bt68mXq0ckCSJMiynGjboCMuD3oygh08eBBHjhxBPp9PM/mcqNfrifsP6LreH0UfsixjaGgIlNI266Gd+OKLL3Dz5k3U63UIgoBy+eHF2pTOCCb5Sdr0VKvV/pjkZzIZvPjii6hWq6hUKnjnnXeQyWQiP/tN0wwXvnn1J+w12fu9s+MioGUL3y1PiKDxfJL9qaoKRVEieb0FcDGg830fKysrbU7RcU38KaXI5XL7RlHRymgnm2l0swFC4LOaZH+BbWicbbksFZVKJbz99tsAviyetSwr9vBaLBa5WiH1kpplAYhfds/Qyj91q2+TaZrQdT3R/jZ6oHWb2PZNgQFK0pORZRnDw8lM1FK2plqtJk5gG4aBoaGhLp9Ri57nwXzf56b/fpTpJEhqtRo3v5BdCbC0LrL7OI6TeHWEZ1P4ngWYKIoghKS9irpAYCSz8Z+g1uHBz0Vx5/KrTpK0O9GTTP6RI0dw/PhxzMzM4OLFi2kmPyGCAHz3P3sK//h3DoHI7YFDCIFEJDQb7bJpxhg+eXcFP/l/PoLrbv5iVa/X9/ZSUb1eR6lUQrlchiRJyOVyXBZW9zuapuIP/+UUJg7XY9WFPv3CMM7/wwhuXt9cqt5JknYnYgWYaZp45plnIMsy5ubmcP369Ujbzc3NhaNWoJ7cb2zMC23WXmZjx4ykiJIIQr3YRccyBVR1ay/9RqPBrSl8rACjlGJiYgKVSgVjY2ORA2wjruvuy9Hr5pUyVpcbOPZUHnbTh1V1AAHwHAZJFuDYPuymDzNDoGgEoxPR5cm86cTUeSdit/P75JNPEmeMgb2taN0Oxhg8t9WEa3W5gYW5OigV4XsMg6MqigsN6CZBreLgwJS526fbBqUUhmFwaXMduyHpzZs3Ozqg4ziJbAP6nSMncjh8PIdG3cXQqIqDhzNQNQkS+bLHuQABDEC/OYgmWY2Jyq4oWlVV5fbWslu01gIB3Wi97j/claN94tQnQlgACPsv8ZCy74qiNU55VAp/OknS7kTPAyyt7O4/Ollb3omemQAXCgVMTk5ClmVMTEz04rApEVFVFfl8nsu+ezIHO3nyJAqFAm7fvh029UzpH/qmbC2wDiCEwLbtyG4uV65cQT6fD98e+9nk7VFEVVVomha2XOwmsftFvvTSS2Gq4cMPP4y0XaPRCAtCKaUoFApcci4pyejUFHA7YgVY0O3VdV2QhN4Stm2nHvl9hm3b/bFUVC6Xw36RSfsNBZVJ6Ztk/9CJ7cBOxAqwrVryxsH3/X2XZN3r1Gq1/ZMH830/nX91iO8z1KoOGGOb/uP7DL735X/vRLAWyYOO0xSqqsaSoFBKMTo6GqsNTT9DEypBBQCqosaSKquqAlEUUSnZuHphHae/OoTrl0poNjwwn8Fu+tAzBKVVG5pOQIiA8YMGhkd0qNrWx9J1HZqmxbIP4FK2thlBPV6UvwNaj9n5+flwuwdPdLPPOjm3jTosxlgoLy4UCqjX6w89GoKe4kEVegClFIqioFqttmu7OtB3bZzLDg8Po1QqPXSTAzeiRqMBURABCKCKBCMj496dGiRJgN30kc3J0AxA1QgYAzSNAGDI5OT7xxJDy87BwUGsrq7CdV0IghB6i1FK25QywTXTNA2CILTlynoWYFGe3cPDw3j88cfhOA4+//xzDAwM7JpH2He/+10oioLh4WHMzc0hk8mgVCpB0zRQSuE4DkRRxN/93d/hhRdewNDQECRJCuee1Wq1TTTp+8nqGhkAx3Xw7W9/G77vY3JyErdu3YKu66hWq8jlchBFEbZto16v4/z58zjz/BlomgpNr+PJ0wNgrBXfrsNA5K1/6L4DyITglVdeQa1Ww+joKJaWliCKIqrVKqampuD7PsrlMmZmZnDv3j2cOnUKQ0NDsCwLqqqiUqmgXq9jZGQElUol8ktaTzL5hUIB4+PjodSnE1VnJwiCAFmWIYoiyuVy2Kfa933Yto1arYZqtQpd13Ho0CEIgoDV1VUQQjA3N4eJiQn4vg/GGKrVKjKZTEfde4NCGMdxUKvVwj4CQYPQwP2ZEHK/UKbVhMzAl+oNAJDpztdTpq3vHVSTa5oG13XheR7W1tawvr4O27bD3p6u66JcLmNlZQWu6yKXy8F1XViWhXK5HDlNJbCIY93ExAQURcHBgwdb3qQrK7E03LIsh0MvIYRb3iUqiqKAUrqphUEgKarX6zs+Cn74+8/jX/wPOUCItzrBmIA//++X8LNXPwfQShV4nrfpG7YkSaCUgsgi/s1ffwsjB+NZLfmOhv/mhxfwxYVWA7KBgQGUy+UwuaooCmRZRrVahSzLkCQp0pt+lOKdWD8/wzBw+vRpTE5O4ujRo3E2DYOLUorJyclY2/Kg2Wxu6Y8ReG/00r2wVqtteVM9z4sU7FFZW1try9xvNK9zHKeraaRYj0jP88K3v6SpBsdxuFSvpCSnbxa7S6US3n///chvjpshiiI0TUuTrX1EkMnnIWVPNMmPmsDbjGB+k9I/8OxAvCuK1vQR2V/wVFP0PMD6ZZKf8iWqqoYpm27Ts6oiRWktczSbza6ZrqV0h76Z5CflySefxJEjR1AqlXDu3Lm+aV6Q0kLTNGiaxsUjLHaAbVxDjBooS0tLEAQBc3NzkCQJAwMDqaKij+imV+yDxAqwbDaLM2fOQBRFzM3N4Ysvvoi03crKStuvI7Vv6i8cx+FWJxFrkk8IwcDAQDgKJSE1oOs/DMPA4OAgl33H9qY4d+5c2FI5CRst0FP6A56K1tjuOp3qtlPJdHJ834dri6FMJyquw9Bsbp1MpZQmbma6Ez03P5FlGaOjo7hz506vD73nqVsN/MX/fgff+92DD5mrEOm+heYDtaq+x/DJ+RXM3N5af9fJ0t9O9DzA0rK15DAG/Mf/7yJ+8deXHgqIrRq7B70NtqPRaOztbmsbIYRwm1A+KgSixI3/lMtlLCwsPPR5lLmyYRjcmmNwH8EMw0A+n4eu6+HotV/ayPQTnSRL6/U6txGMe4CdPHkyFLPV63XMzMyk5icc6CRZGihmeQRZrACTJAmZTAaUUtRqtUjZ+E8//RSqqoapiaAhaTrJ7y6u6yZOHRFCoKoqlw4ssc1PXn75ZdTrdayuruK9996DxhjodktGjQZwv1ABaL2x1OfmkNsnDjtawse9AEDX9K6pGLaa5Ec6F0EICzuiwqVsjTGGWq0WVqMAgMwY9BiL10SSkNE0rO2TXNi2P66dtlUodF3vynkwxmBZVqL9GYYR26OVS0PSUqmEt956q61gtCyKiNMgmUgSHF3Hwh5sqyyKIr773e+i2WzCtm2YpomammxVggFYX1/vmgmMqqqJk6WyLEOWZS4rLLE73na6KOq67q4V3XaKJElttYutUbw/lr06SZZ2IoHfiZ4nWvdyIwbHcfDGG2+E/80Yww9///ldPKMv6SRZqqoqDMPgsh7Z80TrXm8ls9HFpp8wTTNxsrRWq3F7qvQkwII5WzCE78dmWLuNZVmJPVY1TUOhUOjyGbXg/oicmppCoVCA67oolUqYm5tDLpfbsqo6JRmSJEFRlESPycALgwfcA4zSVhu5xcVFOI4Dx3FSRSsHZFmGoiiJfriu6/bHJF/XdRw7dgyUUiwuLkaaqF+9erVNoCjLMkZGRlJFRZcJnHiSoOt6f3i0qqqKo0ePolwuQ1EUzMzMYHh4OFYGWJIkmKbJrQl5rxkZGQEQ//EiABgdGcXRo915cwtcCpMsdgf9vU0zepvBqIKFWAHmOA6uXLkCQRBCVerKykqsOsegmQMviW6vWVkZBJCJvR0DUFwp4vbt2105D1mWQQhJdF01TYOqqlzqVWMFWKVSwYULF9o+i5t8DRox7JfFbs9Lnnj2PK9rPmkbLUrj4jhOm4tjN9kVRevs7GyvD7vvURQlcbK02Wxyq4vcFUXr0NBQrw+77+kkWdpJknYneh5gjLFdt8/cj3SSLLUsi4ttANCDR6QoitB1HYqihK380iRr9+kkWUoICR22uw33APuN3/gNmKYJy7LQbDZx+fLlVNHKgU6SpcEqAI8ffuwAI4SEidMoj7obN260dFO1GnzfT1sqc6KTZGm9XudWDB0rwPL5PF588UUwxjA/P4/p6WkIjG07kausraGyIb9CCUHONLk983uN2MESS9B5oxs0Gg00m81E++tEbr0TiTrebpTmDvs+cnEk0wBynofcPildG0o4bxHQ6oBy+PDhrpxHJ4rWoHNJnIZYXDL51WoVZ8+ebetusSRJiOtNLFWr8BI2NN1NBEHAU089hWazCcZYqyFFwiUvhpYA4Nq1a105t30hmbZtu+Paub2saCWE4LnnngPQyjupqgpHuLHLZ9UiaGiVBEVRoOv67gdYN3AcZ89q8h3HwU9/+lP4vg9RFOG6Ln77907t9mkB6Kxr7Z73aN1I0J5ury52P1ic2i/SacuyEr8JapoGXde5SNl7nskXRRGZTHz1Qcr2BNXZSXBdtz/SFEkoFAooFAqQJAmMMVy9ejXNg3Ggk2QpTxNg7iPY1NQUxsbGQCmFpmmhN0VKdwnsHJKgaVpiz92diDWCybKM4eFhUEpRKpUiCdSmp6dBKQ3XyQRBQHkPVnX3O8EkP0mytG88WjOZDL7+9a+jWq2iUqngnXfeQcb3t/em8Dxgw/AriCJovQ59nyRaswmVIQKAXDaH0dHRrpxHoGhNsj9VVaEoSixbLS7eFL7vo1gstjlFewDsGCXrlBDkhocxu0eLPoKm8sE39jrwNnU9t6ueXIyxRPsLalbjbMvFXadUKuFXv/pVeFIAYIliPHcGz0NxaQleB72udwtJkvD9738/bNSey+XQVJLl9Bhaj6Zu6eBN04Su64n2FxR98NDpxbrLgaFsVCXFZgTzuL1I8Ct3XReUUi6230mpVquJE9iGYXBTGfc80RpIdvYiruvi5z//edtnPzzYH+YnSTy+ArbrF94pPX9O+b7PxarxUcdxnMRvgrIsc6tT7UmASZIESZJACEl7FXGiUxNgWZa7fEYtuD8iT5w4gXw+3zoYITh37lzqTcEBTdNgmubeVrQmwbIsSJKE5eXlUNiWy+X2tEdYP9KJIqKTJO1OxAow0zRx6tQpEEIwNzeH69ev77jNg7qvIMhSuouqqtA0LdFyUaPR6I+GpJRSjI+Po1KpYGxsDNevX8fo6Gj4CIyCIAiQJCnWNv1Maz4Zf3ItABgfG8fx491JtKqqCkppohRQEl8LLpLpRqOBjz/+GKIohhG/uLiIpaXooum9rGjdjGcWswDie90zAAuLC7h69WpXzqOTZGnwiIxzH6MSuyHprVu3Hvo8jujOtm0sLi72jVCvUzr5Gt30eu2kbC3o2sLjnuyK4DCpMC5la2q1WuJSQF3XuWXydyXAutXdIuVLOkmWdpKk3YmeB5jjOFysGh91OkmWdrK2vBPcA4xSisHBQUxOTmJkZASyLGNycpL3YR856vV6YmWGqqrc3uq5J1pPnz4NXdfDYtVisdhXKoT9QqeK1r4oWwusAwghsG07kl3QxYsXoes6qtVqaPO4X94g+4lGo5H4MRd4tCbV9G9H7H6RL730EhzHwdLSEj788EPIsrxtZn6jeoIxBtM091UeLOm8RwBAZdq1N2pKKUhCOwZKKSiNdy5cFK2CIIQTwiCoMpkMstlsnN3A87x9o6hoffdkI0c2l+3addB1PfEoFCRp4wQYl0x+uVzGm2++2dYvcnV1NdaXkmUZQ0ND+6Y2cmVlGEkz+cVi92zMO5l+ZDKZ/mjE4Lpux6+zvu9zk4Y8yui63pGidd/kwTZWJKV0D8dxEl9XSmksb7A49DzAZFnuWi1gypd0kiwNFC486HmA2badKlo50EmytNFocMtNck+0jo+PY3BwEKqqolgsYnZ2FoVCgYs05FGmU0VrUrn1TnAfwQYHB2EYBlzXDW2b0kRr9+nEwKTRaHBphAXEHMEURcGhQ4dAKUWxWIy0LHHhwgUQQtrmB7y+zKNMJ3OwwBSQR9fbWAFmGAZOnTqFcrmMfD6PxcVFFHwf5k5GGBu+OKUUw4OD+6YhaaEDl+nBwUEcOnSoK+cRJEvj9O4MMAwDmqbFKsThYn7ieR7u3r0LoPXMB4CKIKARw2dC8H2srK6iuQe9KSAIoJTC9/0wsVnrwC27Wql0rbrKNE2Ypplof8ViEYIgxJq6cDM/ef/99yEIQniBHUGAE8NhRpIkUNOEtQftAwgh+M9/8AM4joNqtYqBgQF4crI1VQagadtdywk2Gg2srq7ubU1+QCda8r0smWaMYXZ2NlyLLRaLOPaMstunBaA19Yjr8RVg23Z/NIXvBo7jcCnw7AWe5+HcuXNtnz3+ZH+Yn3SSLA1ck3jQ84kQpTRVtHKgk2SpqqqJXg6i0JMRTFEUyLIMQRBQq9W4CNsedTpJlvaNojUJp06dQjabxfr6Onzfx+XLl8MXhJTuUa/XE5f/a5oGTdO4dMCLHWAb3yCjPLcXFxdhWRaKxSLq9XpoG5B6hHWXoKooSbKUp09+rADLZrN4/vnnIYoi5ubmcPHixR23WVxcbJvUC4Kwb8SGndLNkZxSGtY+xKWTbrk7ESvACCHh6BOs3I+OjsZaAyOEYGBgYM82xHqQTsxPxsbGcOJEd8xPgidLksbwgVgxTpI2ar4ttjfFr3/967ClMvDwCLUTkiQhk8nsm9K1p57LIKlken5+HpcvX+7KeQQu00mSpTxdpmO763Qqd04l03xoNpuJc1lBRRGPH32qaN0ndJIs3fji1m16nsm3bXvfKCn6CVVVYRhGoqdDo9HoaseRjfR8BCOEYHBwsNeH3ffUarWOGjHwao7BfQQzDAP5fB66rsN1Xdy9ezdy0WZKdDpJltbrdW4jGPcAO3nyJDRNC9uw3L59O9GKf8r2dOqTTynlEmSxAkySJGSzWciyDMuyIiX1pqenoapqWNgZNCS9c+dOsjNO2RTHcRJP8oN2zDxWV2Kbn7z88suhF9X58+ehMQa6XRa42QSaTQRlnaIgoD43hxwneUiv0RI+7gW0EpzdUjF0Uv4vCAI8z4t1LlwUrYwx1Gq1NgsBmbHtG5I+gCRJyOo61vZJLmzbH9dO28q0a3aigYtRkv0laaTFxfykVCrhrbfeajM/KYsi4jRIJpIEV9OwsAebMYiiiN/8zd9Es9lEs9lEJpNBTa0l2hcDsF5a79q6rKqqiZOlSXzyoxK7422nykfXdffsOmSwzKXrOjzPu38tkgVYt+kkWcqzTrXnida93IjBcRy88cYb4X8zxvDD3+8PyXQnydIgSctjBOt5otV13T3dCCsoeOm36nTTNBMnSztJ0u5ET0awB4fvtBlW97EsK3Fltq7rsQtvo8I9wKampjA4OAhN02DbNj755BPkcjlUKhXeh36k6CRZ6jhO+NLWbbgHGKUUjDHcuXMnbKK1H+2bqmUHjuNDNwgIEcIeRsGDlPkMruuD0tboLZHujuKyLCdOlnqex8WXAogZYLqu49ixY6CUYnFxMdJE/erVq21l6bIsY2RkZN8pKm5eKeHenRq+9p0xLN6zsDhnQRQF1GsuBoYUlNdtSJIIRZUwPKbiyJPJnHC2wrKsxJP0Thpp7USsAFNVFUePHkW5XIaiKJiZmcHw8HCsDLAkSTBNk1sT8l4zMjICoImpY1mMHdBRLTvI5GS4rgozI0NWRKgqQa3iQFZEMB/IFygEtOTmR492580tmEclWewOFK2maUbehkui1XGcsOws0B2trKzEsmMKmjnwMp3tNSvFQQAZZPMU2TwNPx8/aEAQvizsGBxpt0tgrLsu050kS4NGDHHuI5elokql8lAlUdzkK6UUAwMD+2aS723x3UVx56Sn53ld08EHgZxkf47jQJKk3dfkd4NU0coHRVESJ0tt2+ZWF7krilZezS8fZfpV0drzAGOMcetN+CijaVqimkig9QbKwzYA6MEjMnhr1HU9dIDZL/OvfqKTXBYhBJRSLo9J7gH27LPPYmhoCLquY2FhAR999FGqaOVAJ+X/kiRBURQuP/zY3dYkSYIkSZHfgG7cuIFKpYL19XU0Gg04jpN6U3Cgk2RpvV7nVgwdWzL94osvgjGG+fl5TE9PQ2QM272QV9bWUNmQX6GEIGea3J75vUbsQFUhiVLXFv4bjQaazWai/QUaNx7Ok4k63lqWFUpzB30f+RgXmQDIuS5y+6R0bagDG/Oh4SEcPny4K+ehqmpij1ZJkkAIidUQi0smv1qt4uzZs23ym2VJQtyXY6lWg9eB/fduIQgCnn766dAHQlEUrCRc8mJoGcdcu3atK+fWqWQ6qBTrNrHusm3bHdfO7WVFKyEEX/nKV8AYg2VZUBQFrnBzt08LQGfJUkVRoOv67gdYN3AcZ89q8h3Hweuvvw7f98Olld/+vVO7fVoAvvS6f+Q8Wh8k6IuzVxe7gw4nAf0inbYsK/GbIE9Fa88z+aIohl3XUrpHUJ2dBMdxuP3guY9ghUIBw8PDMAwDc3NzWFhYSPNgHOgkWep5Hjd/MO4j2NTUFI4dOxbqvgNvipTuUq/XE/cf6KTX5E7EGsFkWcbw8DAopSiVSpEEatPT07h06VL4ai+KIsrlOLXgKVEIJvlJkqW1Wq0/HpGZTAZf//rXUa1WUalU8M4774RZ4KiIohhabu8Hstlsou0EtFZGumUnGihak+wvSZKWS79I3/dRLBbh+374Wuu6bqzcmCzLyGQy+2YUa63Hysm2deJdu+0IioGT7C+Yf8XZlkuAlUolvP32223mJ/V6PfbwurKysm9cDls/tGQ25jWr1rX20oEkKsn+eNqYx5rkB7+STvpDB/O4lO5SrVY7UrTyUhn3PA/m+z43/fejTCdBUqvVuPmF7EqApY2wuk8nyVJZlrm9dPUkwIIsc7Bq3+rvk5IUURTCeVPwD9BKmD74eRTPiaBTGw+4Z/JPnDiBoaEhEEKwurqKzz//fF96U/QCQQD+0T95Gv/4dw+CyO2Zd0IIJEl6SJfPfIZP3l3FX/3bD+G6m79Y9Y2iNQmWZYExhuXlZayvr0OSJORyuT3tEbZbaJqKf/7fPYaJw3VsKyN+gJPPD+Gd/zSCm9c2X6LrJEm7E7ECzDRNnDp1CoQQzM3N4fr168AOaoKZmZmW9uv+3xFZbsl6+0SFsJcQJRGEeqhbLubu1jB1LAur6oCx1mPT83yAAY7TylFRRYJMRSgUUBW65X6DWgkexAowSinGx8dRqVQwNjaG69evY9T3MRDHt9XzIC0sYGCf1EaOJSwVEwCMj43jxInoN1Y3Wr3PXddHcbGBoVENlz9bg1V14HkMnsswMKRgeb6OXIHC94ETp/JQhwVMTU3BdzdX3xJCYkuouPSLbDQa+PjjjyEIQniARVHEUgzzMqooLUXrXixbEwSMjozAdpww2bzcgWR6YXEBV65cibxNJqPDccaRHZZx/Jk86paLE6cGUF5rYmBYBRggSgI8129l5wVA0yQwxnD7zh1cubL5NQ8ekUl6Te5E7Iakt27dav9QEBDnYWc7DhaXlsD2YGN4WZbxW9//PhhjKJfLyOVysPxLifcX1+vV83z4rghJFJAvKOHn2XzrDXAryY3TYHAcZ8tj1Wo11Go1LuLJXVG0qqq6J5uSuq6LX/7yl/A8D4QQNBoNfOsfHerZ8S2rgZ/95SJe+cE4CIn21PB9hk/fL2Pm9tZZ/qClMg8p+64EmK7re7KlMmPsIT8vzz/Q0+O/+m8/wht/SR/KbymqCkWhKJfKD23TbNrbjk6O4+wfTb7jOFysGh8VGAOazYdVD4IgQhIl1Ovxnwy+73MTH3DP5FNKMTIygsOHD2NsbAyyLGNycpL3YR85ggZlSVBVFfl8vrsndB/uI9jp06cxMjKCarWKRqOBpaWlPfl47Hc6VbT2xSMysA4ghMC27Uh2QRcvXsTc3BwqlUooaOuXUq/9RKPRSCyhCjxak2r6tyO2+clLL70Ex3GwtLSEDz/8EDJj2M5uw6/VsLKhltCkFGP5PGb2iUeYnLA5mIBWO7+kpWYPQikFSWjHQCkFpd07l43Etm8KxIaBi0uGMWTjXORGA+7duxjbJ4rWbAffI5vLdk1ZEvTsTjIKBaqLOAHGxfykXC7jF7/4RegTBgCroojVGJl8WZYxNDS0J2sjRVHE1772tfBxpOs6SlrCFnroro05gLaGF3EwTROmae5+I4aNnW6T4vv+nkyyAi3d1NTUFHzfh23b9zPn/SE9StK1NqAT24Gd6HkebGNF0l7DcRz85Cc/AfDldOF3f/SVXT6rFp0kSymlib3FdqLnkmlZlrtWC7gbBKO44zh9VRnVSSHOxilPt+l5gNm2nSpaOaCqauLy/8D9mwfcH5Hj4+MYGRmBqqqo1+v44osvUCgUuEhDHmU6SZYahsFtks99BBscHMTExAQ8zwsfKWmitftompZ4uafRaHStAPhBYrfzO3jwICilKBaLkZYlLly4gMuXL7fND3h9mUeZThasA9cjHk1JYzckPXXqFMrlMvL5PBYXF1HwfWR2SrRuCC6ZUowMDu6bhliFDlymBwcH8dhjj3XlPAKFbZJRLEmvSS6JVs/zQvPewEqyIgiox0i0ir6P4uoqmpx6RHNFEKBQCt/3Q/VorQO37Eql0rW5aCaTSSx7DlzD47Rl5NIvslQq4YMPPmizMXcEAU4M+bMkSaCmifoetA8ghOC/+MEP4LouKpUKCoUCPDlZbQFD6426W75czWYTq6uriVIVfaPJD4irJd9I3DWvfoIxhrt374ZrscvLy3jiVH98l06Spba9veK1E3ZF0cqjwLMXeJ6Hd955p+2zwyef36WzaaeTZGngmMSDnk+EKKWpopUDnSRLVVVFLhff4ywKPRnBNE1rdcVwXViWxUXY9ihBFQrxgXmvmcnA2KShVcv1cOuSNaCPFK1JOH36NAYHB0EpxcrKCj766CNultn7HUEQ8F/+8zP43g/GQEj7NRSl+y6FTvsk32cMn71Xwf/5P59Ds7n5i5WmadB1nYtfSOwA2/gGGeW5vbCw0KqAXl4O283l8/nUIywBuq7id/7ZMMYeq8UyP5l4XMffvDqCa1c2zz16ntc1r9gHiRVg2WwWzz//PERRxNzcHC5evLijicniwgKWFhbC6m9BEDA/N7dvzE86GYvjjuSiJEKU/NgHlSQBMt3a/6uTbrk7ESvACCHh6BNkjOOanxBZxkA2u2cbYj3IaAfmJ2NjYzhxIvrIoRvqfaO4eKONIAiYeuwx+M7mKZWgsjvOI5KL+YllWfj1r38NURTDx+OiKGIxRlZekiRkAKzvxX6RooipqSk0m00IggBCCJb15OYn8/PzuHz5cuRtWuYn8TX8QUX65cubJ4V5ukzHdtd5SFobc5gPJdN7cKJPCMF3vvMdMMZQqVRgmiaKlc/BmAhBiJlHYiIaVrzHEq9JhaIoUFWViwih58NIoGi9swftmxzHwc9+9rOwX6Rt2xAlhhN/mcGBx43IUyMGYPZmHeff7o9mpjzpeYDZtr2nlRSbzVP+13/1nyKZ7W6EV+Y8CY1Gg9tb5K5o8gcHB3t9WO74vh/rn37CNE1uzTG4j2CmaWJwcBCZTAaLi4tYW1vrq2KJlNbLGw+xIdCDAHvyySfDKqKgbS+P8qiU5EiSBEopl8dkrACTJAnZbBaUUtRqtUjZ+OnpaZimCcuy4Hle2JB0L07y9ytBowweqyuxzU9efvnl0Ivq/Pnz4UL2djDGoN03yxUEAfV6nZsf1X7GNLXYLxPhtpnMttfc87xY94RLOz/GGGq1GhzHCZNysizHEhASQpDNZlNFRQJUVU0sFAhyXZsRtAKMo2jl1i/yrbfeausXWS6XYzUXJYTAdd3URjMBZkaH5x1PtO1KsbjlNQ+65fJoqxy7422nr9iu6+6bdciUnUkVrSlQFCVx7/Gd2BVNftoIq7/gqWjtyQgmiiIIISCEcHVySUmGrusoFApc9s19BHv88ccxPDwMURRRrVZx5coV5HI5VPaJR+t+wLnfe4kH3EcwQggymQzW1tYwMzMDx3FS+6Y+o28k07qu44knngClFAsLC6GNwHZcu3YN169fDyW5sixjZGRkTysq9hu6rsMwjN33aFVVFUeOHEG5XAalFDMzMxgeHo5VUydJEkzTDDP7KdExzGSSaQjAwUOHYDc21+UHilbTNCPvkov5iW3buHz5MgRBCJWtKysrsZSQQTMHHkm9/Y6Z0eE6B+NvyIC5uXu4fXvzJ07QiCHOfeRiflKtVluVRBuIm3yllGJgYCCd5CfAdV2whMJpz/W21Nw7jgNJknZfk98N9rqidT9i2za3nt27omgdGhrq9WFTtsEwjL2raH0Q3/e5/VpSkrGnGzEEb42GYYRms6ltQH9BCAGllMsPn3uAPfvssxgaGoJhGFhZWcG7776bKlr7DEmSoCgKlxev2N3WJEmCJEnwvK3fSjZy48YNlMtllEol1Ov1NJPfh9Tr9f54ROZyObz44otgjGF+fh7T09MQRXHbdaxKpdL2y6CUIpfLxXI0TmlBiAQhod1KMDBsRmAgvOuZ/CBJalkWdF0H0LLijqPlDuybeDnq7Wd0QwWRCYCYJWYCMDE5iYa1eYAFwRfc0yhwyeRXq1WcPXu2zSNseXk5tkI1eMSmxMPM6HCcBGJNBtydmcG1a5vPe2VZhizLXDRhsZeKOl11p5RibGws0kJ5Sm9QFAW6ru9+gHUDx3FSTX6fsecVrW0HFEVQSnt92JRt4Klo3ZUAiyMLSeGP4zjc1C3cH5GFQgHDw8MYHh5GsVjE5cuX92RD+P2M53l7VzL92GOP4dixY3AcB4qihN4UKf2DpmmJu+XuRKwRLJA7U0pRKpUilf9/+umnuHz5MprNJnzfhyiKsSrBU/jTN40YMpkMvva1r6FaraJSqeCdd95B1vehb6du9DxgwyKqwBhoowEjzYPFxvA8SEnsxhnDoOdibItrrqpq7EZaUe9ebOuAYrEI3/fDiHcANGI8vykhyAwNoZSKDndEEASIgtCSJwsCZFEES7hUZAvitveJYfv7GLr63D8Xn1e/yLfffrvN/KQuioj1/uF5KC4uwt+LDUl7zMmTJ/H0009jdnYWExMTuHT5Ivwk8SUIqIgi1re45qLnQWw04G5zT775zW9ibGwM8/PzGB0dxVtvvRXp0LHuctAn0vf9xPrtYB6XsjOMMayvr8M0TaytrcF1+Qg1DcPYUWXsui5KpVIou+JS9NENfN/nVuS537h06RIuXboU/reZ0QEc7fpxarXajnmw8+fPJ9p3z59Tvu+H/b5T+gNZlmMpKeLQkwAjhEDTNFBKIcsyxsbit0NJ4YckSfcLersP90fkiRMnMDg4iAMHDuDWrVv44IMP0rK1PoOnopX7CGZZFhzHwWeffYZ79+6FgsOU/qFvytZM08Tp06dBCMHc3ByuXbu2Y9/HmZmZlvbr/t8RWW6lOPZJv8he0vFq4RbXvNFotCqKONyTWAEWiAUrlQpGR0dx7dq12P0i4XmQFhdR4FCmvt/RHQeyHz8IBN/HlG3D3+Kay4IAIgiox7gnbsTkeux2fh999FFbb8FFUcRSjKQpVZSWojUtW9sR4349abPZhKIoWBd8OGL8cYyJIm5Tiitb9Og0DAO6rmN5m/TRQKEAIklwXBeyLEdeVordkPT27dvtHwpCLDsO23GwuLQEtgf7Rfaak089hTNnzmBubg4jIyN4//13O9rfVte8ZlmoWda29+TFb3wDBw8exPz8PIaGhvD6669HOmbPE62iKEJVVW5vLfuJa9euYWFhAYQQ2LYNz7cBTLZl0TfTcQX/P6rGK2ipvJ2U/aOPPsL09DQopajX65EFirsSYLquY319vdeH3nOsra21eXa1MvlAreLg9rUKTpwewMpSHZ7LIEoCXMeHKAqoWy4kSQBVJBgZgoy5vdmf4zg7ynWSikR3pegj7fLRKQKsmovVpQZmblZRLdsQBAHMZ8gXFCwv1pEboPA9huPP7Cwk9H2fWxkh9wBTFAW5XA6GYWB1dRX1eh2jo6O4e/cu70PvW4wMwekXhtCwXJx+fhDVsoNMngIMEESA+QCEVlpDkgSwHWJHVdXQnKbbcA+w06dPo1AooNFohM3U08djZwiCAEWRoCitSu3C8PZ9B3YKsL5RtAYT9GDSGSXiL1y4gGw2i/X19dAeKKrUI6U3aJoGTdO4+IXENj956aWXwuLZDz74ADJj2+6E1Woo1WoQAFC0krWj+Tzuph6tsdFYQj0rY1AYg7bFD1vxPMiOs+X/33SXEf8utn1TIDYMFK0ZxpCJkckXGg24d+9iJNXkxyaxJh8MBc/d8ppLjQZE24YS455w0eSXy2X84he/aJNMr4oiVmNk8gOP1rQ2cmcOHjyIqakpFItFDA4OYnFxLvISTRuCiHki484WmXzTNGGa5rZv908//TRyuRzW1taQz+fx+eefRzp0rABzXbdjq2vf99Mka0RGR0cxNTW1oVSQT5fgKB6tk5OTGB4extjYGERRxBdffBFp37simeb1xrLf+PjjjzE9PR1OTQxTA3Co68ehlEJV1W3f7t98800ArRe9OL0RdsXGfHR0tNeH3ZME813HceB5Xsfdhrdi45RnKzzPg+d54bn0XdGHcL++z7bt1KO1z2g0Gmg2Y7omRoR7gE1MTGBoaAj5fB7FYhFXr15FoVCI1eE+hS+GYew4yU9KT9x1RkZG0Gg0wnK1NNHaX4SKVg7Ebud36NAhUEpRLBYjRfyFCxdw+fLltrfPOF29UvgjiiJkWebymIzdkPSZZ55BuVxGLpfDwsICCoUCMplM5H2kDUmTY5itZbok/SLHx8dR22LxRNf12EtFXFymXdcNzXuD4tlKpRLLHU8QBBSLRW6Tyv2MWdfheYfjb8iA1bW1Lee9gTAxztSFy1tkuVzGBx980KaUdBwn1vNbkiSoqpo2JE2ARITE89dmo7HlNTcMA4ZhcHnxSjTJ72SSHjRzSOkfbNvm9uLV80Sr4zhYXFzs9WFTtiFwTOJBzwOMUorJyQTdKlK4oaoqt9Y+Pcnka5oGRVFCu+wo3q4pvaNvFK1JCCTTQVf7999/n5tldkoyNE2DrusoFotd33fsAAsWRqM+t+fn5+F5HkqlEizLCs1P0q63/YPnef2xFpnNZvHVr34VgiBgbm4OFy9eBHaQ8S4vLmJ546ReEDA/NwchXS6KTafj/lbX3HUcMN+PdU+4SKYJIcjlcqhWq6EFU1zzEyLLGMjlsJwudseGl/mJrijQNQ3FGPMwLuYnlmXhV7/6VfiIBFrmJ4sxJNOSJMH0fZS2kO+mfMlAoYCBgQHUajUYhoGqXe/I/OTyFtdcdF2ItRrcre6JIGBiYgKUUjQaDWiaFlnyHttd5yFpbcwJu+/7red9OtHfkePHj+MrX/kKlpaWUCgUOjY/2eqaK4oSvoRtxXPPPYcDBw5geXkZuVwOP/3pTyMdsufDSKBovZPaN+3IZ599hqtXr0KSJLiuC4kIAHYnh/j222+3qS6ipjV6HmC2badKiohYltV2IwPzk26zUau3FXHazGxkVzT5g4ODvT5syjaYptkfHq1JME0ThUIBiqKg2Wxibm4ubQjfZ1iW1R95sCQ8+eSTGBoagiRJWF1dxd27dxMPtyl8kCQJlFIuHVhiBZgkScjlcpBlGbVaLVI2fnp6Grquo1qtgjEWNiRNJ/n9AyEEqqpyWV2JbX7y8ssvo16vY21tDefPn4fm+9hW3dVsAs0mAlG14Hlo3LuHPCd5yH7G9H2IiawpWv4hW11zoVaDV6shv9uZfMYYqtVqm4WADECNcWJEkpA1DKymkunYKIwhnuXyl1Dmb3mfDF2HbhixVleiDg+x+0WePXu2rRK4LIqI0yCZSBJcTcOCtL1pWgpw9OhRHD9+POzReOv2DXiJzE8ErEhky2suex6IZaG+zT15/vnnMTQ0hKWlJQwNDeHdd6MlfWN3vO1U+ei67rZuxilfYhgGVFXFgQMH7v+od2/1wzRNqKqKyclJeJ4XWXLV80Rr0C0kqE5K2ZpPP/0Un332GYDW9CST1QE83vXjKIoCwzC2LcT55S9/CeBLC4io7IrLNA9h235l483kpXCKo2iNWxzSk0y+KIoghECSJAiCACmdf/UVuq5zW13hPoI9/vjjGBoawvDwMGZnZ3Hp0iXkcjlUUo/WviGoleAB9xEs6HY7OzuLer0Ox3FS+6Y+w/M8bn3UY3tTHD9+HJRSLCwsRMrGX7t2DdevXw+f3YFcZ3Z2NtkZp3QdXddhGMbu2zepqorDhw+jXC5DlmXcuXMHw54XKwMsMQZjdRVa2i8yNrqbTDIN38dBx4GzxTUX19chlMvIxBAhRL17sQLMtm1cunQJoiiGytYVUUScKkdJFKEwBiud6O+IqiigigLXcUBkGTKV4CbJhYkC5mSCm1tcc13ToKoqVrdRtJqGAUEU4XkeJEni022tWq0+5C7sx8wsS7KMgeFhVNI82I6ceOYZnDlzBnfv3sXExAQ++PB8woUiAR6ELVcBHAASsO0qwYvf/jYOHjyI2dlZjI6O4o033oh05FTR2sfMzc3hV7/6FQghuHnzJiyrAuBA149j2/aODklXr17FrVu3oCgKrl27FvmlYFc0+YVCITVAicD8/Hxb9Q4vyXRg37TdJP/GjRuJ9r0rPvm8/EBTkhGlEUNSuAeYJEnhQmm1WoVlWaltQJ9BCAGllMsPn3ui9dlnn8ULL7yA733vezh58mSoaE3pHyRJ4mYKGLvbmiRJkCQJnudF6lt048YNrK2t4cMPPwy7VqSZ/P6iXq/3xyMyl8vhG9/4Bnzfx/z8PKanpyEytu0wWF1bQ3VDfoUSgnwmw6X55X6HIGG/SDBIYCBbJMRN04RhGFiMkcnnIpkOKnvr9Tp0vfVGM+j78TL5AHKui2xauhYb3XVBEmXyGSYcF42t+kVWKpAsC/puZ/IrlQrOnj0LURRDReOyJCGuPpVY1tZGGykho6OjGB8fx/r6OvL5PNZLq4nMTyCKmJFlXNvimsuyDFmWYW2jVj5y5AgMw0ClUkEmk4mctoh1l+Nalm9GqmiNztTUFE6dOoX19XWYpon33z+PelVsPZ9ixFmzDli1redYlFIYhrGt6PDEiRMYHx9HqVSCqqqR75/AIkoUJyYmIu1wxwMKQuqTHxFZlkEIgXh/DdB1XTx75iBe/idToDTaWq7n+Zh+bwm/+A9fwPe2KFsThLAn5Vaoqhq+5AUDTRRFTM8DDAAGBwdRq9Vg2zY0TYNlWeFrcrPZDH9NgQq20WhA13U0Go1wHmhZFnRdh+M48H0fqqrCsiyoqhomczVNQ71ehyzLEAQBzWYz3I8kSSCEoF6vQ9O0tv3UajVomhbe1M3OceN+gsVfwzDCEnxFUVCr1aDrOlzXhed54TkqigLGWNs5dvJdN54jpRSCIKDRaIQ6+43nqOt6uMyjKAosy8LExATW1tZiGwFHyQb03PwEaM3lCCGQZRnZbBaiKELXdei6DkmSkM1mw44ghmFAEARkMhnIsgxKKTKZDERRDBO4wX4EQQj77oiiGO5b0zQYhhF+JssyFEWBaZrhvimlkGX5oX0Hro6SJD207yB/FOx7q3OklIIQ0vZdg/0E+w7OURAEZLNZEELazjHYD6U0/K5B1dGD31XTtPB7BdfRNM3w74L9BD2mVldXublM78oIlrI/6NsRLOXRIQ2wFK6kAZbClTTAUrgSeZKfkpKEdARL4UoaYClcSQMshStpgKVwJQ2wFK6kAZbClTTAUriSBlgKV9IAS+HK/w+18W44u6YlFAAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "\n", - "img = mpimg.imread('line16.png')\n", - "plt.imshow(img)\n", - "plt.axis('off') # Turn off axis numbers\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "a29b9882-972f-4f52-b4d2-0eb4d4ee866e", - "metadata": {}, - "source": [ - "eof" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 [Default]", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} From 1ab1f4648344c23392c3d9cbb7fbccde4cdeb12c Mon Sep 17 00:00:00 2001 From: qcmp34 <81832386+qcmp34@users.noreply.github.com> Date: Fri, 26 Jul 2024 22:59:14 +0200 Subject: [PATCH 83/83] Add files via upload --- .../assignments/Yasir_Mansour_hw4.ipynb | 82 ++++++++++++++----- 1 file changed, 60 insertions(+), 22 deletions(-) diff --git a/community/womanium/assignments/Yasir_Mansour_hw4.ipynb b/community/womanium/assignments/Yasir_Mansour_hw4.ipynb index c1b26e85..dbe50b3f 100644 --- a/community/womanium/assignments/Yasir_Mansour_hw4.ipynb +++ b/community/womanium/assignments/Yasir_Mansour_hw4.ipynb @@ -16,28 +16,47 @@ "tags": [] }, "source": [ - "## Advanced Algorithms Design:\n", - "## Quantum random walk" + "## Advanced Algorithms Design\n", + "## _Quantum random walk_" ] }, { "cell_type": "markdown", - "id": "2060a234-6a10-453e-b4a2-7b644128c3e9", + "id": "64b142e7-efbf-4205-bc87-112f21c69c09", "metadata": { "tags": [] }, "source": [ - "Following the example of a quantum walk operator for the case of a circle with 4 nodes, a quantum walk operator is designed for the case of a line with 16 nodes.\n", + "**Instructions - Final assignment**\n", "\n", - "Using the file quantum_walk_circle_example.py as a template, both the case of a circle and of a line with 4, 8, and 16 nodes are implemented in this notebook.\n" + "Follow the example from Bootcamp 4 for creating the quantum walk operator for the case of a circle with 4 nodes, and design the quantum walk operator for the case of a line with 16 nodes:\n" ] }, { "cell_type": "markdown", - "id": "fe7f2080-a6eb-4aa5-8865-97aa9acd5c14", - "metadata": {}, + "id": "7a7e4b5d-12fb-482f-9b59-b8bc4949854b", + "metadata": { + "tags": [] + }, "source": [ - "## Environment and imports" + "**Tasks:**\n", + "\n", + "A.\n", + "\n", + "Create a well-detailed Python Jupyter notebook that explains your algorithm, including the code parts covered in class, and pictures/figures where relevant. \n", + "\n", + "Utilize the Python code from class: quantum_walk_circle_example.py. It can be found directly also in the Classiq Git Library in the community/womanium/assignments folder. \n", + "\n", + "Feel free to extend the example beyond the requirements here and what was covered in class.\n", + "\n", + "B.\n", + "\n", + "Contribute your notebook to the Classiq Git Library to the folder community/womanium/assignments. \n", + "\n", + "Follow the contribution guidelines in order to contribute - NO need to open an issue for this, you can directly open a PR.\n", + "\n", + "The PR title should be: Womanium Final Assignment . \n", + "The file name should be in the following format: __hw4.ipynb." ] }, { @@ -76,24 +95,43 @@ ] }, { - "cell_type": "code", - "execution_count": null, - "id": "99432d7f-12fd-4a46-bbf0-cf3651c04076", + "cell_type": "markdown", + "id": "9f608bac-c3eb-495e-9015-3e6396c7543c", "metadata": { "tags": [] }, - "outputs": [], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg" - ] - }, - { - "cell_type": "markdown", - "id": "59927721-34b7-49e8-8b88-6a75663aef7a", - "metadata": {}, "source": [ - "## Implementation" + "# Implementation\n", + "\n", + "Implementation of a quantum random walk on a circle/one-dimensional line graph with size num_nodes. The core components are:\n", + "\n", + "1. **Initialization**:\n", + " - Setting the number of nodes and the size of the register.\n", + "\n", + "2. **Quantum State Preparation**:\n", + " - The prepare_minus function prepares a quantum state by applying an X gate (bit-flip) followed by a Hadamard gate (superposition) to a qubit x.\n", + " - The diffuzer_oracle function modifies an auxiliary qubit based on whether x is non-zero.\n", + " - The zero_diffuzer function allocates an auxiliary qubit, prepares it in the minus state, and applies the diffuzer_oracle.\n", + "\n", + "3. **W Operator**:\n", + " - The W_iteration function computes probabilities for transitioning between adjacent vertices in a graph.\n", + "\n", + "4. **Edge Oracle**:\n", + " - The edge_oracle function checks whether vertices and adjacent_vertices are adjacent and sets the result in the output qubit res.\n", + "\n", + "5. **Bitwise Swap**:\n", + " - The bitwise_swap function swaps corresponding qubits between two arrays x and y.\n", + "\n", + "6. **S Operator**:\n", + " - The S_operator function applies the edge oracle and swaps qubits if the result is 1.\n", + "\n", + "7. **Main Function**:\n", + " - The main function allocates qubits for vertices and adjacent_vertices.\n", + " - It applies the W operator and S operator sequentially.\n", + "\n", + "In summary, this program simulates a quantum random walk on a graph, where the walker's position is represented by quantum states. \n", + "\n", + "The W operator updates the probabilities for transitioning between adjacent vertices, and the S operator performs a random step by applying an edge oracle to ensure vertex adjacency and swaps qubits accordingly.\n" ] }, {